[C++]DirectX 12 3D游戏开发实战—第12章 学习笔记02 2019.5.8

本文介绍了DirectX 12中纹理数组的概念、采样方法和加载过程,以及如何利用alpha-to-coverage技术改善公告牌边缘锯齿问题。内容涵盖纹理数组的创建、使用和优化,以及MSAA和alpha-to-coverage的结合应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人学习使用,请勿转载

12.3 纹理数组

12.3.1 概述

纹理数组即为存放纹理的数组。C++代码中纹理数组也由ID3D12Resource接口表示,创建ID3D12Resource对象时,可以通过设置DepthArraySize属性指定纹理数组所存储的元素个数。在d3dApp文件中创建深度/纹理模板时总是将该值设为1。CreateD3DResource12函数。

Texture2DArray gTreeMapArray;

12.3.2对纹理数组进行采样

公告牌示例:

float3 uvw = float3(pin.TexC,pin.PrimID%4);
float4 diffuseAlbedo = gTreeMapArray.Sample(
	gsamAniosotropicWrap,uvw)*gDiffuseAlbedo;
  • List item

使用纹理数组需要3个坐标值,前两个坐标是2D纹理坐标,第三个坐标则是纹理数组的索引。
公告牌示例中采用的是一个具有4个纹理元素的纹理数组 ,每个元素中存有独特的树木纹理。但是每次调用所画出的树木多于4棵,所以图元ID要大于3,所以对图元ID进行模4运算,将其值映射为123,使数组元素拥有合理的索引。

  • 纹理数组的优点之一是可以在以此绘制调用中画出一系列不同纹理的图元,一般必须用不同的纹理对每个用用独立渲染项的网格进行处理,是用来纹理数组就可以将设置纹理与绘制调用的过程都减少到一次。
SetTextureArray();
DrawPrimitivesWithTextu
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值