Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 渲染数千个文本红色立方体_Opengl_Render_Indices_Cubes - Fatal编程技术网

Opengl 渲染数千个文本红色立方体

Opengl 渲染数千个文本红色立方体,opengl,render,indices,cubes,Opengl,Render,Indices,Cubes,我只是被我的立方体纹理卡住了——我在网上搜索了一下,发现给我的立方体6种不同的纹理(使用gldrawerelements)的唯一方法是创建大约24个索引。它仍然比GLDrawArray更快,但它似乎非常不合逻辑,速度非常慢。我知道GLD元素的目的是处理复杂模型,其中很少有索引共享不同的纹理坐标。 但是,我仍然很困惑,因为glDrawElements给了我性能提升(没有任何效果,只是着色器着色),从50-67毫秒到10000个立方体(GLDrawArray),再到25-33毫秒到100000个立方

我只是被我的立方体纹理卡住了——我在网上搜索了一下,发现给我的立方体6种不同的纹理(使用gldrawerelements)的唯一方法是创建大约24个索引。它仍然比GLDrawArray更快,但它似乎非常不合逻辑,速度非常慢。我知道GLD元素的目的是处理复杂模型,其中很少有索引共享不同的纹理坐标。 但是,我仍然很困惑,因为glDrawElements给了我性能提升(没有任何效果,只是着色器着色),从50-67毫秒到10000个立方体(GLDrawArray),再到25-33毫秒到100000个立方体


我的问题是:我必须接受它,否则还是有办法解决这个问题?

我不知道您想要归档什么,但您可以尝试减少场景中ob顶点的数量。这将使速度更快。我认为,如果立方体需要多个纹理,可以将它们存储在纹理图集中,并为立方体的每个顶点指定纹理图集中图像的相应纹理坐标。这将减少纹理调用的数量,因为只有一个texutre。此外,您只需要渲染用户可见的顶点/三角形,因此不需要对立方体的背面进行纹理处理


我发现了一个很好的网站,它解释了如何加速渲染数千个立方体。他们试图在CPU上生成一个大对象,在加载到GPU之前剔除大量顶点,但我认为对于您的问题,您只能尝试使用尽可能少的纹理(TextureAtlas),这将提高性能,但是对于一个完整的立方体,你需要8个顶点,每个顶点都有一个特定的纹理坐标。

你可以尝试使用类似的立方体贴图纹理,而不是逐面纹理。为什么你希望
gldrawerelements
会变慢?这几乎从来都不是,即使在没有顶点共享的情况下也是如此。