我正在尝试理解glVertexAttribPointer
,我注意到它接受的种类比那些在GLSL中具有等价物的类型多。因此,为了记下我目前所知的所有内容,我使这个图表与所有类型相匹配(除了打包的,无关紧要,GL_FIXED
,我不明白。
蓝色节点表示GLSL中的类型,而黄色节点表示传递给glVertexAttribPointer
的符号常量。
红色节点表示类型之间的某种转换。
每个黄色节点只直接连接到一个蓝色节点,这似乎是它在GLSL中的主要表示,但有些可以转换为其他形式。
所以我想我的问题是:这个图中的关系是否正确,GL_FIXED
如何适应它?
答案 0 :(得分:2)
没有
您无法通过调用int
来提供VS uint
,double
或glVertexAttribPointer
输入变量(或这些变量的向量)。此功能仅提供float
类型。如果对此函数使用非规范化整数,则它们将被转换为浮点数,就像通过标准强制转换操作一样(255变为255.0f)。 GL_FIXED
只是另一个浮点表示,其中32位整数被视为16.16定点值。当然,这将在送到VS时转换为浮点数。
要为VS整数提供信息,必须使用glVertexAttrib I 指针。要提供double
s,您必须使用glVertexAttrib L 指针。
bool
类型不能是任何类型的输入变量。