OpenGL 显示列表:用于绘制 2D 精灵?

发布于 2024-10-21 18:25:29 字数 63 浏览 0 评论 0原文

使用显示列表来绘制纹理矩形是好还是坏主意?

仅当精灵使用的纹理发生变化时,才会重新编译显示列表。

Is it a good or bad idea to use display lists for drawing textured rectangles?

The display list would be re-compiled only if the texture the sprite is using changes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

剩余の解释 2024-10-28 18:25:29

对于绘制单个精灵,这样做没有真正的问题,但假设您使用 glRotate/glTranslate 来定位精灵,那么它也没有任何优势。很多游戏都是这样编写的。

在我的游戏中,我使用带有 GL_DYNAMIC_DRAW 的顶点缓冲区对象来存储共享每个纹理图集的所有精灵。我更新 CPU 上的垂直位置,并在一次绘制调用中发送整批数据。我可以使用这种方法绘制更多的精灵。如果我需要绘制更多,我可以在顶点着色器中完成位置。

另外,请记住 OpenGL ES2 不支持显示列表,因此如果您正在考虑移植到 ES2 设备,则必须重新进行操作。 (iPhone/iPad 支持 ES1,但不能与 ES2 混合搭配,可以使用显示列表或着色器,但不能同时使用两者)。

For drawing a single sprite, there's no real problem in doing it that way, but there's no advantage to it either, assuming you're using glRotate/glTranslate to position the sprite. Plenty of games have been written that way.

In my games, I use a vertex buffer object with GL_DYNAMIC_DRAW to store all the sprites which share each texture atlas. I update the vert positions on the CPU and send the whole batch in one draw call. I can draw many more sprites using this approach. I could do the positions in a vertex shader if I needed to draw even more.

Also, keep in mind that OpenGL ES2 doesn't support display lists, so if you're thinking of porting to an ES2 device you'd have to re-do it. (iPhone/iPad support ES1 but you can't mix and match with ES2, you can use display lists OR shaders but not both).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文