我正在尝试使用spidergl从已经implements的示例代码实现webgl阴影映射。我正试图直接在WebGL上实现它。
我相信我的代码几乎相似,但我没有得到结果。我已将问题缩小到代码的一小部分。我的着色器代码将a_position
(顶点位置属性)定义为vec3;而spidergl代码将其定义为vec4。我梳理了spidergl代码,以了解他们的顶点位置属性(x-y-z三元组)是如何填充到vec4中的。我期望在调用vertexAttribPointer时找到技巧。但是它们传递的大小和步幅的值正如预期的那样:3和12.我改变了我的代码来做同样的事情,但我还没有得到相同的结果。
有人可以解释位置三元组映射到vec4
的基本机制吗?我从来没有看到代码也提到过多维数据集角落的x,y,z坐标,但有些着色器将a_position
作为vec4
。那么什么被填充到vec4的第四个浮点?
答案 0 :(得分:3)
glVertexAttrib文档的这一部分可能会让您感兴趣:
这些命令可用于指定索引指定的通用顶点属性的一个,两个,三个或全部四个组件。
命令名称中的 1 表示只传递了一个值,它将用于修改通用顶点属性的第一个组件。第二个和第三个组件将设置为0,第四个组件将设置为1.
同样,命令名称中的 2 表示为前两个组件提供了值,第三个组件将设置为0,第四个组件将设置为1。
命令名称中的 3 表示为前三个组件提供了值,第四个组件将设置为1,而 4 name表示为所有四个组件提供了值。
基本上,如果使用vec3设置vec4属性,则vec4的前3个元素与vec3匹配,第4个元素设置为1.
我的猜测是您的问题出现在代码中的其他位置。