【问题标题】:selecting OpenGL range elements GL_ELEMENT_ARRAY_BUFFER选择 OpenGL 范围元素 GL_ELEMENT_ARRAY_BUFFER
【发布时间】:2013-04-12 05:38:10
【问题描述】:

我在 vbo 1 中有交错数组作为 GL_ARRAY_BUFFER (Vertex|Normals|Textures),有一些纹理要应用于它们。

我有一个向量数组包含要应用纹理的面的开始和结束 IE。 面 50 到 3000 应用纹理 1 面 3001 到 5000 应用纹理 2

如何为每个纹理构建 GL_ELEMENT_ARRAY_BUFFER 索引数组并保持相同的 ARRAY_BUFFER?

【问题讨论】:

  • 你为什么不直接调用glDrawArrays( ? , 50, 3000);然后切换纹理然后glDrawArrays( ? , 3001, 5000);
  • 我也可以映射 texcoord 和法线
  • 索引缓冲区 (GL_ELEMENT_ARRAY_BUFFER) 对您没有帮助。它只指定渲染顶点的顺序。
  • 我将在单独的数组上使用 glDrawArrays 进行一些测试,因为我认为它不适用于交错数组
  • 它适用于交错数组。不过,您必须正确绑定它们(使用glVertexAttribPointer())。

标签: c++ opengl


【解决方案1】:
std::vector<unsigned int> indices;
// fill "indices" as needed
    // Generate a buffer for the indices
GLuint elementbuffer;
glGenBuffers(1, &elementbuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementbuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() * sizeof(unsigned int), &indices[0], GL_STATIC_DRAW);

【讨论】:

  • 我需要为多个纹理做同样的事情,保持交错数组缓冲区相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 2017-04-27
  • 2012-04-17
  • 1970-01-01
  • 2018-02-17
  • 2016-07-23
相关资源
最近更新 更多