我正在使用VBO创建一个应用程序来渲染一些具有困难颜色结构的对象。我注意到,VBO定义元素的颜色等于元素缓冲区中的最后一个顶点索引。例如,当我使用点阵列这样如何将元素映射到OpenGL VBO中的颜色?
double pointBuf[]={ -0.1d, 0.1d, 0,
0.1d, 0.1d, 0,
0.1d, -0.1d, 0};
颜色阵列:
double colorBuf[] = { 0d, 1d, 0d,
0d, 1d, 0d,
1d, 0d, 0d};
和元件阵列:
int elementBuf[] = {0, 1, 2};
来绘制三角形时,将红色(作为elementBuf中的最后一个元素是2,在colorBuf中它与红色匹配)。
事实上,它可能会导致额外的内存使用情况,以正确绘制所有内容。
是否有任何其他可能的方式来链接颜色与元素?
你真的需要双色类型的颜色吗?如果内存不足,则使用GL_UNSIGNED_BYTE作为颜色缓冲区,所以R,G,B,A总共需要4个字节,而不是24个字节,因为您的实现会执行此操作(如果我正确理解了您的代码)。你也不需要双打你的顶点位置。除了颜色以外,只需使用浮标。 – Rookie
这只是一个例子,我并不需要双倍的颜色,我知道。 但是因为我在很小的区域内运行着大量的顶点,所以我需要这样的精度,所以我必须使用顶点的双精度。 无论如何谢谢 – user898722
user898722:我编辑了你的问题,使其更容易理解。请检查我没有因此引入一些错误。 (随意恢复我的编辑。) –