假设我想在一次绘图调用中将无符号整数和浮点数据上传到显卡。我使用标准 VBO(不是 VAO,我使用的是 OpenGL 2.0),将各种顶点属性数组组合成单个GL_ARRAY_BUFFER
,并分别指向 using glVertexAttribPointer(...)
,因此:
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferId);
glEnableVertexAttribArray(positionAttributeId);
glEnableVertexAttribArray(myIntAttributeId);
glVertexAttribPointer(positionAttributeId, 4, GL_FLOAT, false, 0, 0);
glVertexAttribPointer(colorAttributeId, 4, GL_UNSIGNED_INT, false, 0, 128);
glClear(...);
glDraw*(...);
我在这里遇到的问题vertexBufferId
是我的缓冲区(由其他方式 - 它是一个或另一个,因为缓冲区不能是两种类型)。FloatBuffer
GL_FLOAT
GL_INT
有任何想法吗?这将如何在本机 C 代码中处理?