1

我正在尝试通过执行以下操作来绘制四边形:

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);

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

4

1 回答 1

1

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

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

于 2013-05-31T15:55:29.923 回答