gpt4 book ai didi

OpenGL - 自动生成 glDrawArrays 的索引/步长参数

转载 作者:行者123 更新时间:2023-12-02 19:55:14 26 4
gpt4 key购买 nike

我正在渲染一个包含大量数据点(>1M)的网格结构。我的数据结构如图所示。

Structure of data-points

所以我的索引缓冲区的内容如下所示 0, 100, 1, 101, 2, 102, 3, 103, ...

我对索引缓冲区的巨大尺寸有点恼火,我需要它来定义我的三角形带。是否有可能告诉 OpenGL 以所示的方式自动生成这些索引?或者也许是我没有想到的 glVertexAttribPointer 的一些技巧?

最佳答案

确实有一个类似这样的函数:glDrawElementsBaseVertex

这样你就可以用以下方法绘制它们:

for(int i=0; i < height-1; i++){
glDrawElementsBaseVertex(GL_TRIANGLE_STRIP, 200, GL_UNSIGNED_INT, 0, i*100);
}

索引缓冲区就是:0, 100, 1, 101, 2, 102, 3, 103,... 98, 198, 99, 199

通过一些调整,您甚至可以使用 glMultiDrawElementsBaseVertex :

GLsizei *count = new GLsizei[height-1];
GLvoid **indices = new GLvoid[height-1];
GLint *basevertex​ = new GLint[height-1];
for(int i = 0; i< height-1; i++){
count[i]=200;
indices[i]=0;
basevertex​[i]=i*100;
}
glMultiDrawElementsBaseVertex(GL_TRIANGLE_STRIP, count, indices, height-1, basevertex​);

关于OpenGL - 自动生成 glDrawArrays 的索引/步长参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26755248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com