@@ -67,80 +67,67 @@ QByteArray StelOpenGL::globalShaderPrefix(const ShaderType type)
6767{
6868 const auto & glInfo = StelMainView::getInstance ().getGLInformation ();
6969
70- if (glInfo.isHighGraphicsMode )
70+ QByteArray prefix;
71+
72+ if (glInfo.isHighGraphicsMode )
7173 {
72- if (type == VERTEX_SHADER)
73- {
74- static const QByteArray prefix = 1 +R"(
75- #version 330
76- #define ATTRIBUTE in
77- #define VARYING out
78- #define texture2D(a,b) texture(a,b)
79- #define texture2D_3(a,b,c) texture(a,b,c)
80- #define texture2DProj(a,b) textureProj(a,b)
81- #define texture2DProj_3(a,b,c) textureProj(a,b,c)
82- #define shadow2D_x(a,b) texture(a,b)
83- #define shadow2DProj_x(a,b) textureProj(a,b)
84- #define textureCube(a,b) texture(a,b)
85- #define textureCube_3(a,b,c) texture(a,b,c)
86- #line 1
87- )" ;
88- return prefix;
89- }
90- else // FRAGMENT_SHADER
91- {
92- static const QByteArray prefix = 1 +R"(
93- #version 330
94- #define VARYING in
95- out vec4 FRAG_COLOR;
96- #define texture2D(a,b) texture(a,b)
97- #define texture2D_3(a,b,c) texture(a,b,c)
98- #define texture2DProj(a,b) textureProj(a,b)
99- #define texture2DProj_3(a,b,c) textureProj(a,b,c)
100- #define shadow2D_x(a,b) texture(a,b)
101- #define shadow2DProj_x(a,b) textureProj(a,b)
102- #define textureCube(a,b) texture(a,b)
103- #define textureCube_3(a,b,c) texture(a,b,c)
104- #define textureGrad_SUPPORTED
105- #line 1
106- )" ;
107- return prefix;
108- }
109- }
74+ if (glInfo.isGLES )
75+ prefix += " #version 300 es\n " ;
76+ else
77+ prefix += " #version 330\n " ;
11078
111- if (type == VERTEX_SHADER)
79+ prefix += " #define texture2D(a,b) texture(a,b)\n "
80+ " #define texture2D_3(a,b,c) texture(a,b,c)\n "
81+ " #define texture2DProj(a,b) textureProj(a,b)\n "
82+ " #define texture2DProj_3(a,b,c) textureProj(a,b,c)\n "
83+ " #define shadow2D_x(a,b) texture(a,b)\n "
84+ " #define shadow2DProj_x(a,b) textureProj(a,b)\n "
85+ " #define textureCube(a,b) texture(a,b)\n "
86+ " #define textureCube_3(a,b,c) texture(a,b,c)\n " ;
87+ }
88+ else
11289 {
113- static const QByteArray prefix = 1 +R"(
114- #define ATTRIBUTE attribute
115- #define VARYING varying
116- #define texture2D_3(a,b,c) texture2D(a,b,c)
117- #define texture2DProj_3(a,b,c) texture2DProj(a,b,c)
118- #define shadow2D_x(a,b) shadow2D(a,b).x
119- #define shadow2DProj_x(a,b) shadow2DProj(a,b).x
120- #define textureCube_3(a,b,c) textureCube(a,b,c)
121- #line 1
122- )" ;
123- return prefix;
90+ prefix += " #define texture2D_3(a,b,c) texture2D(a,b,c)\n "
91+ " #define texture2DProj_3(a,b,c) texture2DProj(a,b,c)\n "
92+ " #define shadow2D_x(a,b) shadow2D(a,b).x\n "
93+ " #define shadow2DProj_x(a,b) shadow2DProj(a,b).x\n "
94+ " #define textureCube_3(a,b,c) textureCube(a,b,c)\n " ;
12495 }
125- else // FRAGMENT_SHADER
96+
97+ if (glInfo.isGLES )
98+ prefix += " precision mediump float;\n " ;
99+
100+ switch (type)
126101 {
127- static const QByteArray prefix = 1 +R"(
128- #define VARYING varying
129- #define FRAG_COLOR gl_FragColor
130- #define texture2D_3(a,b,c) texture2D(a,b,c)
131- #define texture2DProj_3(a,b,c) texture2DProj(a,b,c)
132- #define shadow2D_x(a,b) shadow2D(a,b).x
133- #define shadow2DProj_x(a,b) shadow2DProj(a,b).x
134- #define textureCube_3(a,b,c) textureCube(a,b,c)
135- #line 1
136- )" ;
137- if (glInfo.isGLES )
138- return " precision mediump float;\n " + prefix;
139- return prefix;
102+ case VERTEX_SHADER:
103+ if (glInfo.isHighGraphicsMode )
104+ prefix += " #define ATTRIBUTE in\n "
105+ " #define VARYING out\n " ;
106+ else
107+ prefix += " #define ATTRIBUTE attribute\n "
108+ " #define VARYING varying\n " ;
109+ break ;
110+
111+ case FRAGMENT_SHADER:
112+ if (glInfo.isHighGraphicsMode )
113+ prefix += " #define VARYING in\n "
114+ " #define textureGrad_SUPPORTED\n "
115+ " out highp vec4 FRAG_COLOR;\n " ;
116+ else
117+ prefix += " #define VARYING varying\n "
118+ " #define FRAG_COLOR gl_FragColor\n " ;
119+ break ;
120+
121+ case GEOMETRY_SHADER: break ;
140122 }
123+
124+ prefix += " #line 1\n " ;
125+
126+ return prefix;
141127}
142128
143- QOpenGLFunctions_3_3_Core* StelOpenGL::highGraphicsFunctions ()
129+
130+ auto StelOpenGL::highGraphicsFunctions () -> HighGraphicsFunctions*
144131{
145132#if !QT_CONFIG(opengles2)
146133# if QT_VERSION >= QT_VERSION_CHECK(6,0,0)
@@ -149,6 +136,6 @@ QOpenGLFunctions_3_3_Core* StelOpenGL::highGraphicsFunctions()
149136 return QOpenGLContext::currentContext ()->versionFunctions <QOpenGLFunctions_3_3_Core>();
150137# endif
151138#else
152- return nullptr ;
139+ return QOpenGLContext::currentContext ()-> extraFunctions () ;
153140#endif
154141}
0 commit comments