gpt4 book ai didi

opengl-es - OpenGL ES 2.0 中具有不同纹理的许多对象

转载 作者:行者123 更新时间:2023-12-04 06:07:05 25 4
gpt4 key购买 nike

我是 OpenGL ES 2.0 的新手,它具有可编程管道,我正在移植应用程序,该应用程序可以渲染许多具有不同纹理的对象。
所以这将需要为每个对象调用 glDrawArrays 并在调用之间更改纹理?或者还有另一种方法可以通过单个 glDrawArrays 调用绘制具有不同纹理的多个对象?

我之所以问,是因为我注意到当尝试使用 glDrawArrays 而不是使用“桌面”OpenGL 的 glBegin/glEnd 时,对 glDrawArrays 的调用要慢得多。

我正在渲染 map 图 block ,因此所有纹理都是不同的,它们是动态加载的(不能像加载一次一样花太多时间处理它们)并且也很大(高达 512x512)。

最佳答案

不幸的是,没有一种简单的内置方法可以在单个批处理中应用多个纹理glDrawArrays称呼。然而,有一些方法可以让它发挥作用。最常见的策略之一被称为纹理图集。基本上,这个想法是将许多图像组合成一个更大的纹理,每个子图像占据纹理的一个已知子矩形。当你将它们映射到你的图元上时,你提供了与你想要显示的图像相对应的子矩形的坐标。

纹理图集适用于大量情况,但设置起来可能相对复杂。如果您不必为每个对象制作不同的纹理,首先要尝试的是简单地将尽可能多的使用相同纹理的图元批处理在一起。

如果你没有使用 OpenGL ES,你也可以考虑使用纹理数组,如果你的纹理都是相同的大小。

关于opengl-es - OpenGL ES 2.0 中具有不同纹理的许多对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8230009/

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