这个OpenGL数据类型图是否正确?

时间:2016-09-20 05:34:47

标签: opengl glsl vertex-attributes

我正在尝试理解glVertexAttribPointer,我注意到它接受的种类比那些在GLSL中具有等价物的类型多。因此,为了记下我目前所知的所有内容,我使这个图表与所有类型相匹配(除了打包的,无关紧要,GL_FIXED,我不明白。

蓝色节点表示GLSL中的类型,而黄色节点表示传递给glVertexAttribPointer的符号常量。

红色节点表示类型之间的某种转换。

每个黄色节点只直接连接到一个蓝色节点,这似乎是它在GLSL中的主要表示,但有些可以转换为其他形式。

gl type diagram

所以我想我的问题是:这个图中的关系是否正确,GL_FIXED如何适应它?

1 个答案:

答案 0 :(得分:2)

没有

您无法通过调用int来提供VS uintdoubleglVertexAttribPointer输入变量(或这些变量的向量)。此功能提供float类型。如果对此函数使用非规范化整数,则它们将被转换为浮点数,就像通过标准强制转换操作一样(255变为255.0f)。 GL_FIXED只是另一个浮点表示,其中32位整数被视为16.16定点值。当然,这将在送到VS时转换为浮点数。

要为VS整数提供信息,必须使用glVertexAttrib I 指针。要提供double s,您必须使用glVertexAttrib L 指针。

bool类型不能是任何类型的输入变量。