OpenGL ES 2.0 中从 GPU 到 GPU 的主要实现变化?
Major implementation variations from GPU to GPU in OpenGL ES 2.0?
我注意到 运行 在一台 Android 设备上没有问题的程序在另一台设备上并不总是 运行。
不同 GPU 的 OpenGL ES 2.0 实现有何不同?可悲的是,我还没有找到关于表面、纹理、变量声明(类型、精度等)在实现之间的使用变化的任何好的总结,因此这使得 OpenGL ES 2.0 调试非常痛苦。大部分SO答案是:"Maybe you can do this, or that, or that."而且在OpenGL ES 2.0的使用上有很多矛盾和误解
总之。有没有人有足够的经验在多个平台上使用 OpenGL ES 2.0 来列举不同 GPU 实现之间可以更改的内容的列表,以及是否有好的实践来最大化设备之间的兼容性?示例:OES 外部纹理的处理可以在设备之间改变吗?设备是否对纹理单元使用不同的逻辑?
我对 Android 跨设备的 GL ES 问题没有任何直接经验,但我的理解是,最常遇到的问题与 GLSL 编译器问题有关。
这是由于每个 GPU 供应商都在实施和提供 GLSL 编译器,因此 GLSL 程序可能由多种编译器编译,每个编译器都有其错误和局限性。
例如参见http://bitiotic.com/blog/2013/09/24/opengl-es-shading-language-potholes-and-problems/。
我注意到 运行 在一台 Android 设备上没有问题的程序在另一台设备上并不总是 运行。
不同 GPU 的 OpenGL ES 2.0 实现有何不同?可悲的是,我还没有找到关于表面、纹理、变量声明(类型、精度等)在实现之间的使用变化的任何好的总结,因此这使得 OpenGL ES 2.0 调试非常痛苦。大部分SO答案是:"Maybe you can do this, or that, or that."而且在OpenGL ES 2.0的使用上有很多矛盾和误解
总之。有没有人有足够的经验在多个平台上使用 OpenGL ES 2.0 来列举不同 GPU 实现之间可以更改的内容的列表,以及是否有好的实践来最大化设备之间的兼容性?示例:OES 外部纹理的处理可以在设备之间改变吗?设备是否对纹理单元使用不同的逻辑?
我对 Android 跨设备的 GL ES 问题没有任何直接经验,但我的理解是,最常遇到的问题与 GLSL 编译器问题有关。
这是由于每个 GPU 供应商都在实施和提供 GLSL 编译器,因此 GLSL 程序可能由多种编译器编译,每个编译器都有其错误和局限性。
例如参见http://bitiotic.com/blog/2013/09/24/opengl-es-shading-language-potholes-and-problems/。