【发布时间】:2014-11-08 03:48:32
【问题描述】:
我正在使用 OpenGL 绘制索引 GL_LINES。我需要访问片段着色器中两个顶点的索引。因此,我需要知道我的行包含的两个索引。我阅读了关于内置变量 gl_VertexID 的信息,这在这里应该没有太大帮助。由于我已经将索引存储在某个缓冲区中,因此我也尝试将它们作为属性传递。 因此我的代码如下所示:
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER,vertexBuffer);
glVertexAttribPointer(0,2,GL_FLOAT,GL_FALSE,0,(void*)0);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER,indexBuffer);
glVertexAttribPointer(1,2,GL_UNSIGNED_INT,GL_FALSE,0,(void*)0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,indexBuffer);
使用这似乎是错误的方式,对吧? 此外,我使用索引通过图像加载存储原子地写入一些信息。不幸的是,通过 glGetTexImage 获取此图像只会产生零。 所以我的索引传递或我的图像写入/获取似乎是错误的。
我很乐意在这里提供任何帮助。
【问题讨论】:
-
使用索引缓冲区内容也作为属性数据是行不通的,因为现在你的索引也将成为索引数组的索引,所以你得到完全错误的索引作为每个顶点的属性.
标签: opengl glsl fragment-shader indices