gpt4 book ai didi

opengl - OpenGL ES和OpenGL兼容的着色器

转载 作者:行者123 更新时间:2023-12-04 17:38:14 27 4
gpt4 key购买 nike

我想为OpenGL ES和OpenGL(Windows)使用相同的着色器源。为此,我想定义自定义数据类型并仅使用OpenGL ES函数。

一种方法是定义:

#define highp
#define mediump
#define lowp

Windows着色器,并编写与OpenGL ES相同的着色器。

另一种方法是为OpenGL ES定义自定义数据类型,如下所示:
#define hvec2 highp vec2

对于Windows,就像这样
#define hvec2 vec2

您认为哪个更好?您是否有其他解决方案来解决此问题?

最佳答案

我的解决方案是编写与两个API兼容的着色器代码,然后将片段着色器源代码上传到OpenGL ES时,只需在以下行之前添加:

precision mediump float;

这会将默认浮点精度设置为中。在OpenGL ES片段着色器中,没有浮点值的默认精度级别,这意味着您要么需要在每个浮点声明中指定精度,要么显式设置默认精度。如果对您的应用程序更有意义,则可以改用 lowphighp

有关更多详细信息,请参见OpenGL ES着色语言规范的4.5.3节: http://www.khronos.org/files/opengles_shading_language.pdf

如果需要更好地控制着色器的精度,也可以将这种方法与 #define方法混合使用。

关于opengl - OpenGL ES和OpenGL兼容的着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11435105/

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