c++ - 我如何有效地处理 OpenGL 中的大量逐顶点属性?

标签 c++ opengl glsl vertex-shader

我需要计算我的顶点着色器输出的每个顶点属性的数量大于 GL_MAX_VERTEX_ATTRIBS。有没有一种有效的方法,例如使用统一的索引数组指向多个缓冲区并以这种方式访问​​每个顶点数据?

最佳答案

这是硬件限制,所以简短的回答是否定的。 如果您考虑其他方法的解决方法,例如使用也有限制的制服,那么这也不是办法。

我能想到的一种可能的方法是从纹理中获取额外的数据。由于您可以从顶点着色器访问纹理,但不支持纹理过滤(您不需要它,所以这对您来说无关紧要)。 使用较新的 OpenGL,可以在纹理中存储相当大量的数据,甚至在顶点着色器中也可以不受限制地访问它们,这似乎是一种可行的方法。

尽管使用这种方法,您需要面对一个问题,您如何知道当前索引,即它是哪个顶点? 您可以查看内置的 gl_VertexID。

关于c++ - 我如何有效地处理 OpenGL 中的大量逐顶点属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19548432/

相关文章:

c++ - 链接失败。如何使用 'NtQuerySystemTime' windows函数?

c++ - 如何分配SP_DEVICE_INTERFACE_DETAIL_DATA?

c++ - 多生产者消费者程序中不规则的打印语句

opengl - 对 glutSolidSphere 进行纹理化

c++ - GLSL 1.2 + 纹理非二的幂

c++ - WinRT C++ : get package family name

windows - 如何获取连接显示器的 GPU 卡列表?

c++ - 使用 g++ 链接对象时出现问题

c++ - 从灰色到彩色对 Sprite 进行着色

c - 我该如何优化它(这是一个我的世界着色器)