2

我试图理解glVertexAttribPointer,我注意到它接受的类型比那些在 GLSL 中具有等价物的类型要多得多。所以为了写下我到目前为止所知道的一切,我制作了这个图来匹配所有的类型(除了打包的,这无关紧要,还有GL_FIXED,我不明白。

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

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

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

gl类型图

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

4

1 回答 1

2

不。

您不能通过对. int_ 此函数提供类型。如果您在此函数中使用非规范化整数,则它们将被转换为浮点数,就像通过标准转换操作一样(255 变为 255.0f)。只是另一种浮点表示,其中 32 位整数被视为 16.16 定点值。自然,这将在馈送到 VS 时转换为浮点数。uintdoubleglVertexAttribPointerfloatGL_FIXED

要输入 VS 整数,您必须使用 glVertexAttrib I指针。要喂doubles,必须使用 glVertexAttrib L指针。

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

于 2016-09-20T12:10:46.157 回答