【问题标题】:How should I organize OpenGL ES 1.x 2D layer tree?我应该如何组织 OpenGL ES 1.x 2D 层树?
【发布时间】:2010-01-28 12:22:01
【问题描述】:

我正在开发一个可爱的益智应用程序 - http://gotoandplay.freeblog.hu/categories/compactTangram/ - ,出于性能原因,我决定使用 OpenGL 渲染视图。我开始学习它,我对缓冲区、顶点、纹理非常基本的方式感到满意。

情况: 在游戏中用户操作 7 个拼图,每个都有 5 个子层,以获得一些漂亮的灯光感觉。大多数纹理是 256x256。用户一次只操作一件,所以在玩的过程中其余部分保持不变。这里没有任何图形的应用程序骨架:http://gotoandplay.freeblog.hu/archives/2009/11/11/compactTangram_v10_-_puzzle_completement_test/

问题: 我应该如何组织它们?在单独的帧缓冲区(?)/纹理(?)中“预绘制”实际片段状态是一个好主意,或者我可以在一个时间步内简单地重绘每个片段/层(1 + 7 * 5 = 36 sprite)?如果我使用“predraw”,那我该怎么办?绘制到 puzzePiece 帧缓冲区?那么如何将它绘制到场景帧缓冲区中呢?还是有更简单的“合并”纹理的方法?

希望您能理解我的问题,如果它看起来太模糊,请在我的博客中查看我的想法,了解如何在我的博客中呈现实际作品(我将要做的事情有一个简单的 flash 实现):@987654323 @

【问题讨论】:

  • glCopyTexSubImage2D 的东西?还是glCopyTexImage2D?我想我只想将 5 个纹理合并为一个具有可变 subTexture 属性的纹理。

标签: iphone opengl textures framebuffer layer


【解决方案1】:

处理纹理的常用方法是在游戏/关卡开始时将所有图像打包到“纹理图集”中。

您的最大纹理大小为 1024x1024,您可以在 iPhone 的内存中存储大约三个。

当您拥有这些“超级纹理”中的所有图像时,您可以绘制大纹理的相关区域。这样做的好处是您可以减少绑定纹理的频率并获得更好的性能,同时减少将小图像放入二次方大小的纹理所需的任何多余空间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 2011-04-02
    • 1970-01-01
    相关资源
    最近更新 更多