unsigned short (16 bit) xPosition;
unsigned short (16 bit) yPosition;
unsigned short (16 bit) radius;
每个三角形都引用这些值,所以我可以除以gl_VertexID来获得正在绘制的当前三角形。问题是这些值各有3个短路(48位,3个字节(。例如,如果我画的是顶点编号8,我可以做8/3=2,我知道我画的三角形是2(第三个三角形(,但我如何索引到均匀缓冲区中以获得xPosition、yPosition和radius?有没有简单的方法可以在glsl中拥有一个统一的缓冲区数组或字符或短字符?
你必须自己计算。你必须读取一个或多个无符号的32位整数,并进行掩码/位移位来提取你感兴趣的值。
由于没有将其作为GLSL的原生特性,API不会给您留下较短的变量读取速度与读取32位整数一样快的印象。
也就是说,只使用顶点缓冲区可能会更好(尽管不是4字节对齐的顶点数据可能不是一个好主意(。