2016-09-20 95 views
2

我想了解glVertexAttribPointer,我注意到它接受比GLSL中的等价物更多的类型。因此,为了记下迄今为止我所知道的一切,我制作了这张图表匹配所有类型(除了打包的那些,没关系,并且GL_FIXED,我不明白)OpenGL数据类型的这个图是否正确?

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

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

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

gl type diagram

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

回答

2

不能从呼叫喂VS intuint,或double输入变量(或这些载体)至glVertexAttribPointer。此功能只有饲料float类型。如果你在这个函数中使用非标准化整数,那么它们将被转换为浮动状态,就像通过标准的转换操作一样(255变为255.0f)。 GL_FIXED只是另一个浮点表示,其中32位整数被视为16.16定点值。自然,这将被转换为一个浮点数,当被送到VS.

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

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