【问题标题】:OpenGL ES 2.0 | GUI screen on top of game screen?OpenGL ES 2.0 |游戏屏幕顶部的 GUI 屏幕?
【发布时间】:2013-04-06 22:57:46
【问题描述】:

好的,我想用 openGL ES 2.0 制作游戏,但我的控件有问题。到目前为止,我制作的控件就像我的游戏中的任何其他精灵一样,只需绘制它,如果相机更新,控件将在它像“移动”相机后更新。

有没有更有效的方法来做到这一点?这是我想做的一个例子:

*游戏画面

*控件

然后就像将控件放在游戏屏幕的顶部,这样即使相机移动它也不会移动。可能吗?也许混合xml?如果是这样,那怎么办?谢谢!

【问题讨论】:

  • 当您绘制 GUI 元素精灵时,只需使用另一个相机,它永远不会移动。您还必须确保您的 GUI 元素不会意外隐藏在动态场景内容后面。这可以通过在绘制 GUI 时禁用深度测试或修改 glDepthRangef 来完成。

标签: android user-interface opengl-es controls opengl-es-2.0


【解决方案1】:

当你每帧都在同一个地方绘制相同的东西时,感觉就像是做无用功,但另一方面,屏幕的每个像素可能都会重绘每一帧。大多数游戏都不会竭尽全力避免这种额外的工作。我建议尽量避免绘制不可见像素来提高性能,例如:

  • 围绕 UI 收缩包裹几何图形,因此您使用 alpha 0 绘制的像素越少越好。这可能涉及绘制更多三角形,但根据我的经验,这种折衷是值得的。

  • 让深度测试为您服务。如果您的 UI 完全不透明,您所要做的就是先绘制它,然后在背景中绘制场景的其余部分,这样如果像素被 UI 遮挡,它们就不会绘制。如果您的 UI 只是部分不透明,您可以尝试将其细分为不透明三角形和半透明三角形,并在最后单独调用中绘制半透​​明的,以便您可以对不透明的进行深度测试。

【讨论】:

    【解决方案2】:

    我从未使用OpenGL 进行开发,但如果您在特定布局内开发它。那么你可以做的是:

    1. 将您的游戏布局放在FrameLayout 中。

    2. LinearlayoutRelativeLayout 放在同一个FrameLayout 内。

    3. 将控件放置在您添加的布局中。

    这样您将添加的控件将显示在游戏顶部,您可以使布局半透明以获得更好的用户体验。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      相关资源
      最近更新 更多