glVertexAttribPointer启用了规范化标志

时间:2013-05-31 14:55:15

标签: opengl

我试图通过执行以下操作绘制四元组:

glVertexAttribPointer(0, 2, GL_UNSIGNED_INT, GL_TRUE, 0, 0x0D4C7488); //其中0x0D4C7488是传递的数据的地址和数据(来自Visual Studio内存窗口):

0x0D4C7488 3699537464 875578074
0x0D4C7490 4253028175 875578074
0x0D4C7498 3699537464 2966829591
0x0D4C74A0 3699537464 2966829591
0x0D4C74A8 4253028175 875578074
0x0D4C74B0 4253028175 2966829591

glDrawArrays(GL_TRIANGLES, 0, 6);

但是我没有看到任何四边形被绘制。此外,当启用normalize标志时,数据会发生什么。帮助我理解数据在标准化时会发生什么,以及为什么我没有看到任何四边形被绘制。

1 个答案:

答案 0 :(得分:1)

发送您从调试器或其他工具中获取的静态地址是一个红色标记。您应该做的是在包含顶点数据的缓冲区中设置偏移量。如果你只有位置向量,那么这应该是0.读入OpenGL的vertex specification以便更好地理解如何做到这一点(它比有点神秘的规范页面更好)。根据您是否交错属性(例如法线和tex坐标),这可能会发生变化。

要回答关于规范化的问题,它基本上必须处理将整​​数转换为浮点数,你也可以在OpenGL的vertex specification中读取它。如果您已经使用了float,请将其设置为false。