这是关于DirectX 9的。
在使用顶点着色器渲染的典型情况下,设备中设置了一个或多个流源,并使用顶点声明定义源数据的格式。
现在,如果使用的顶点着色器需要一些属性(例如,一个具有D3DDECLUSAGE_NORMAL和UsageIndex 1或2),但提供的顶点声明不包含该属性(即,流源中提供的数据不包括那个属性),并调用DrawPrimitive,DirectX在哪里获取该属性的值?
答案 0 :(得分:0)
DirectX 9规范为未声明的属性定义“默认”值,通常为(0,0,0,1)。设备驱动程序或GPU会创建它们。
答案 1 :(得分:0)
“如果顶点流中的数据包含的组件少于相应的着色器数据类型,则缺少的组件将初始化为0(w除外,它被初始化为1)。”
取自“Windows DirectX图形文档(2009年8月)”
内容> HLSL>编程指南>在Direct3D 9中编写HLSL着色器>改变着色器输入和语义