gpt4 book ai didi

iphone - 在 iPhone 上使用 OpenGL 的分层 2D 应用程序最有效的 "architecture"?

转载 作者:行者123 更新时间:2023-12-03 19:47:32 26 4
gpt4 key购买 nike

我正在开发一个 iPhone OS 应用程序,其主要 View 是用户直接交互的 2-D OpenGL View (这是 Apple 的 EAGLView 类的子类,基本上设置了正交投影的 2D 环境)。

有时(并非总是)我想在此基线 GL View 之上渲染一些控件 - 就像平视显示器一样。请注意,下面的基线 View 可能会滚动/动画,而控件应看起来固定在上面的屏幕上。

总的来说,我对 Cocoa View 很满意,对 CoreGraphics 也很满意,但我对 Open GL 很陌生,而且 EAGLView 的操作(及其与 CALayers 的关系)对我来说相当不透明。我不确定如何最有效地混合其他元素(阅读:最佳性能,最少麻烦等)。我知道,在紧要关头,我可以为所有其他控件创建并保留几何图形,并在每次绘制/交换时将它们渲染在基线几何图形之上,从而将用户看到的所有内容保留在一个 View 上。但我不太确定其他技术,例如在顶部有另一个 View (UIKit/CG 或 GL?)或以某种方式在我的单个 View 中创建其他层等。

如果人们以前走过这些路,愿意写下一些简短的观察结果,或者至少向我指出有关此问题的文档或现有讨论,我将不胜感激。

谢谢。

最佳答案

照常创建动画 View 。将其渲染到渲染目标。这是什么意思?好吧,通常,当您将多边形“绘制”到屏幕上时,您实际上是在一个法线表面(主表面)上进行操作,而该表面恰好是最终到达屏幕的表面。您可以渲染到任何旧表面,而不是渲染到屏幕表面。

现在,你的平视显示器。这会一直完全相同还是会改变?只会改变其中的一部分吗?

如果所有这些都发生了变化,您将需要将所有 HUD 几何图形和纹理保留在内存中,并且必须像平常一样将它们渲染到“滚动”表面上。您可以将最终的复合渲染应用到屏幕上。我不会太担心这里的麻烦和性能——HUD 不可能像背景那么复杂。您最多只有几个纹理四边形?

如果所有 hud 都是静态的,那么您可以在应用程序启动时将其渲染到单独的表面,然后每个帧从该表面渲染到您正在绘制每个帧的动画表面。这样您就可以在开始时卸载所有 HUD 几何图形和纹理。当然,表面可能会占用更多内存 - 这取决于您的应用程序最需要哪些资源。

如果您一半有更改,一半没有,那么从技术上讲,您可以预先渲染静态部分,然后在进行过程中渲染其他部分,但这比其他两个选项更麻烦。

您的两个主要选项取决于 HUD 的动态性。如果它移动,您需要在每一帧将其重新绘制到场景上。这很糟糕,但我很难想象几何图形与其他部分相比有多复杂。如果它是静态的,您可以预渲染并在发送到屏幕之前将一个表面进行 Alpha 混合到另一个表面上。

正如我所说,这完全取决于您的应用程序有哪些空闲资源。

关于iphone - 在 iPhone 上使用 OpenGL 的分层 2D 应用程序最有效的 "architecture"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2038570/

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