gpt4 book ai didi

java - 如何在 Libgdx 中支持 OpenGL ES GL10、GL11 和 GL20?

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:27 25 4
gpt4 key购买 nike

我正在编写一个使用 GL10 的 3d 游戏,但我希望该应用程序支持 GL11 或 GL20(如果可用)。支持所有 3 个的最佳设计是什么?还是这是徒劳的,我应该只专注于支持一个版本?

我目前的想法是将我的 render() 函数拆分为 renderGL10、renderGL11、renderGL20,并根据可用的 GL 实例调用适当的渲染函数。在每个渲染函数中都是为 GL 版本渲染的正确方法; GL10 和 GL11 可能会有重叠。这是处理我的问题的合适方法还是有更好的方法?

public render(){
if (Gdx.graphics.isGL20Available()){
renderGL20();
} else if (Gdx.graphics.isGL11Available()){
renderGL11();
} else {
renderGL10();
}
}

编辑:解决方法:如果gl1.x可用,则gl10也可用(且Gdx.gl10不为空)。因此,我的渲染代码通常应按如下方式构建:

public render(){
// Use Gdx.gl for any gl calls common to all versions
if (Gdx.graphics.isGL20Available()){
// Use Gdx.GL20 for all gl calls
} else {
if (Gdx.graphics.isGL11Available()){
// Use Gdx.gl11 for any gl11 call not supported by gl10
}
// Use Gdx.gl10 for all gl calls
}
}

最佳答案

您实际上是在 OpenGL ES 2.0 路径中使用着色器,还是依赖 SpriteBatch 和 consorts 为您处理脏细节?在后一种情况下,使用 GLES 2.0 并没有真正的好处(除了两个纹理的非功率,这在某些设备上可能会更慢)

通常您可以在 GLES 1.x 或 2.0 之间进行选择。如果您使用 1.x,则无需执行任何操作。如果你想使用 2.0,你必须创建一个 AndroidApplicationConfig 并将 useGL20 标志设置为 true。如果运行应用程序的设备不支持 GLES 2.0,则 libgdx 将退回到 1.x。然后,您可以使用上面的渲染循环,如果可用,它将使用 GLES 2.0,否则回退到 1.x。不过,您不太可能必须为 1.0 和 1.x 设置单独的路径,除非您直接使用 GLES 调用。

关于java - 如何在 Libgdx 中支持 OpenGL ES GL10、GL11 和 GL20?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7604334/

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