这个 OpenGL 数据类型图是否正确?
Is this diagram for OpenGL data types correct?
我正在尝试理解 glVertexAttribPointer
,我注意到它接受的类型比 GLSL 中具有等效类型的类型多得多。所以为了写下我到目前为止所知道的一切,我制作了这个匹配所有类型的图表(除了打包的,这无关紧要,GL_FIXED
,我不明白。
蓝色节点代表 GLSL 中的类型,而黄色节点代表传递给 glVertexAttribPointer
的符号常量。
红色节点表示类型之间的某种转换。
每个黄色节点只直接连接到一个蓝色节点,这似乎是它在 GLSL 中的主要表示形式,但有些可以转换为其他形式。
所以我想我的问题是:这张图中的关系是否正确,GL_FIXED
如何融入其中?
没有
您不能通过对 glVertexAttribPointer
的调用提供 VS int
、uint
或 double
输入变量(或这些变量的向量)。此函数 仅 提供 float
类型。如果您在此函数中使用非规范化整数,那么它们将被转换为浮点数,就像通过标准转换操作一样(255 变为 255.0f)。 GL_FIXED
只是另一种浮点表示法,其中 32 位整数被视为 16.16 定点值。自然地,这将在馈送到 VS 时转换为浮点数。
要提供 VS 整数,您必须使用 glVertexAttribIPointer。要喂 double
s,你必须使用 glVertexAttribLPointer.
bool
类型不能是任何类型的输入变量。
我正在尝试理解 glVertexAttribPointer
,我注意到它接受的类型比 GLSL 中具有等效类型的类型多得多。所以为了写下我到目前为止所知道的一切,我制作了这个匹配所有类型的图表(除了打包的,这无关紧要,GL_FIXED
,我不明白。
蓝色节点代表 GLSL 中的类型,而黄色节点代表传递给 glVertexAttribPointer
的符号常量。
红色节点表示类型之间的某种转换。
每个黄色节点只直接连接到一个蓝色节点,这似乎是它在 GLSL 中的主要表示形式,但有些可以转换为其他形式。
所以我想我的问题是:这张图中的关系是否正确,GL_FIXED
如何融入其中?
没有
您不能通过对 glVertexAttribPointer
的调用提供 VS int
、uint
或 double
输入变量(或这些变量的向量)。此函数 仅 提供 float
类型。如果您在此函数中使用非规范化整数,那么它们将被转换为浮点数,就像通过标准转换操作一样(255 变为 255.0f)。 GL_FIXED
只是另一种浮点表示法,其中 32 位整数被视为 16.16 定点值。自然地,这将在馈送到 VS 时转换为浮点数。
要提供 VS 整数,您必须使用 glVertexAttribIPointer。要喂 double
s,你必须使用 glVertexAttribLPointer.
bool
类型不能是任何类型的输入变量。