Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
那是关于 DirectX 9。
在使用顶点着色器进行渲染的典型情况下,设备中设置了一个或多个流源,并且源数据的格式使用顶点声明来定义。
现在,如果使用的顶点着色器需要某个属性(例如,具有 D3DDECLUSAGE_NORMAL 和 UsageIndex 1 或 2 的属性),但提供的顶点声明不包含该属性(即流源中提供的数据不包含该属性),然后调用 DrawPrimitive,DirectX 在哪里获取该属性的值?
DirectX 9 规范为未声明的属性定义了“默认”值,通常是 (0,0,0,1)。设备驱动程序或 GPU 创建它们。
“如果顶点流中的数据包含的组件比对应的着色器数据类型少,则缺失的组件将被初始化为0(w除外,它被初始化为1)。”
摘自“Windows DirectX 图形文档(2009 年 8 月)”
内容 > HLSL > 编程指南 > 在 Direct3D 9 中编写 HLSL 着色器 > 改变着色器输入和语义