diff --git a/src/lib/graphics/TwkGLF/BasicGLProgram.cpp b/src/lib/graphics/TwkGLF/BasicGLProgram.cpp index a8bf63de5..6473c309c 100644 --- a/src/lib/graphics/TwkGLF/BasicGLProgram.cpp +++ b/src/lib/graphics/TwkGLF/BasicGLProgram.cpp @@ -85,17 +85,32 @@ namespace TwkGLF } } + namespace + { + // Returns "#version 150\n" for GL3+, empty string for GL2. + // Must be called after a GL context is current. + const char* basicGLVersionHeader() + { + const char* glVersion = (const char*)glGetString(GL_VERSION); + if (glVersion && glVersion[0] >= '3') + return "#version 150\n"; + return ""; + } + } // namespace + bool BasicGLProgram::compile() { GLuint v, f; m_programId = glCreateProgram(); v = glCreateShader(GL_VERTEX_SHADER); f = glCreateShader(GL_FRAGMENT_SHADER); - const char* vcode = m_vertexCode.c_str(); - glShaderSource(v, 1, &vcode, NULL); + + const char* versionHeader = basicGLVersionHeader(); + const char* vsrc[2] = {versionHeader, m_vertexCode.c_str()}; + glShaderSource(v, 2, vsrc, NULL); glCompileShader(v); - const char* fcode = m_fragmentCode.c_str(); - glShaderSource(f, 1, &fcode, NULL); + const char* fsrc[2] = {versionHeader, m_fragmentCode.c_str()}; + glShaderSource(f, 2, fsrc, NULL); glCompileShader(f); GLint status = GL_TRUE; diff --git a/src/lib/graphics/TwkGLF/glsl/CheckerboardBGFrag.glsl b/src/lib/graphics/TwkGLF/glsl/CheckerboardBGFrag.glsl index b41eb7409..d6c48b3d0 100755 --- a/src/lib/graphics/TwkGLF/glsl/CheckerboardBGFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/CheckerboardBGFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/CloneFrag.glsl b/src/lib/graphics/TwkGLF/glsl/CloneFrag.glsl index 20975f123..866944875 100644 --- a/src/lib/graphics/TwkGLF/glsl/CloneFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/CloneFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/CloneVertex.glsl b/src/lib/graphics/TwkGLF/glsl/CloneVertex.glsl index 66b1e8ba9..87d6a0c6d 100644 --- a/src/lib/graphics/TwkGLF/glsl/CloneVertex.glsl +++ b/src/lib/graphics/TwkGLF/glsl/CloneVertex.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 #else #define in attribute #define out varying diff --git a/src/lib/graphics/TwkGLF/glsl/CrosshatchBGFrag.glsl b/src/lib/graphics/TwkGLF/glsl/CrosshatchBGFrag.glsl index 296c3fa07..43205eeb5 100755 --- a/src/lib/graphics/TwkGLF/glsl/CrosshatchBGFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/CrosshatchBGFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/DefaultFrag.glsl b/src/lib/graphics/TwkGLF/glsl/DefaultFrag.glsl index 8e01a6396..cc6e5728d 100644 --- a/src/lib/graphics/TwkGLF/glsl/DefaultFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/DefaultFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/DefaultVertex.glsl b/src/lib/graphics/TwkGLF/glsl/DefaultVertex.glsl index 14b8c6b87..4d7a67986 100644 --- a/src/lib/graphics/TwkGLF/glsl/DefaultVertex.glsl +++ b/src/lib/graphics/TwkGLF/glsl/DefaultVertex.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 #else #define in attribute #endif diff --git a/src/lib/graphics/TwkGLF/glsl/DirectionPaintFrag.glsl b/src/lib/graphics/TwkGLF/glsl/DirectionPaintFrag.glsl index 09f1f2372..64f3e9461 100644 --- a/src/lib/graphics/TwkGLF/glsl/DirectionPaintFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/DirectionPaintFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/DirectionPaintVertex.glsl b/src/lib/graphics/TwkGLF/glsl/DirectionPaintVertex.glsl index 7bce0c101..0dfe0ee86 100644 --- a/src/lib/graphics/TwkGLF/glsl/DirectionPaintVertex.glsl +++ b/src/lib/graphics/TwkGLF/glsl/DirectionPaintVertex.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 #else #define in attribute #define out varying diff --git a/src/lib/graphics/TwkGLF/glsl/EraseFrag.glsl b/src/lib/graphics/TwkGLF/glsl/EraseFrag.glsl index 52efe6ae5..9808973b0 100644 --- a/src/lib/graphics/TwkGLF/glsl/EraseFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/EraseFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/EraseVertex.glsl b/src/lib/graphics/TwkGLF/glsl/EraseVertex.glsl index 546327e3a..0d1aaadc0 100644 --- a/src/lib/graphics/TwkGLF/glsl/EraseVertex.glsl +++ b/src/lib/graphics/TwkGLF/glsl/EraseVertex.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 #else #define in attribute #define out varying diff --git a/src/lib/graphics/TwkGLF/glsl/OldReplaceFrag.glsl b/src/lib/graphics/TwkGLF/glsl/OldReplaceFrag.glsl index c46ca6bb9..f2f35555e 100644 --- a/src/lib/graphics/TwkGLF/glsl/OldReplaceFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/OldReplaceFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/PaintColoredFrag.glsl b/src/lib/graphics/TwkGLF/glsl/PaintColoredFrag.glsl index c0c2f475e..2c395a101 100644 --- a/src/lib/graphics/TwkGLF/glsl/PaintColoredFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/PaintColoredFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/ReplaceColoredVertex.glsl b/src/lib/graphics/TwkGLF/glsl/ReplaceColoredVertex.glsl index 239103a27..ee4c01ae0 100644 --- a/src/lib/graphics/TwkGLF/glsl/ReplaceColoredVertex.glsl +++ b/src/lib/graphics/TwkGLF/glsl/ReplaceColoredVertex.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 #else #define in attribute #define out varying diff --git a/src/lib/graphics/TwkGLF/glsl/ReplaceFrag.glsl b/src/lib/graphics/TwkGLF/glsl/ReplaceFrag.glsl index 8025f51fa..5f8b9fbc0 100644 --- a/src/lib/graphics/TwkGLF/glsl/ReplaceFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/ReplaceFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/ReplaceVertex.glsl b/src/lib/graphics/TwkGLF/glsl/ReplaceVertex.glsl index 448d8cefc..82abd26a1 100644 --- a/src/lib/graphics/TwkGLF/glsl/ReplaceVertex.glsl +++ b/src/lib/graphics/TwkGLF/glsl/ReplaceVertex.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 #else #define in attribute #define out varying diff --git a/src/lib/graphics/TwkGLF/glsl/ScaleFrag.glsl b/src/lib/graphics/TwkGLF/glsl/ScaleFrag.glsl index f07cba553..872769732 100644 --- a/src/lib/graphics/TwkGLF/glsl/ScaleFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/ScaleFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/ScaleVertex.glsl b/src/lib/graphics/TwkGLF/glsl/ScaleVertex.glsl index 356b6875e..829da36f6 100644 --- a/src/lib/graphics/TwkGLF/glsl/ScaleVertex.glsl +++ b/src/lib/graphics/TwkGLF/glsl/ScaleVertex.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 #else #define in attribute #define out varying diff --git a/src/lib/graphics/TwkGLF/glsl/SoftCloneFrag.glsl b/src/lib/graphics/TwkGLF/glsl/SoftCloneFrag.glsl index 2b085b868..6656f2b75 100644 --- a/src/lib/graphics/TwkGLF/glsl/SoftCloneFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/SoftCloneFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/SoftDirectionPaintFrag.glsl b/src/lib/graphics/TwkGLF/glsl/SoftDirectionPaintFrag.glsl index c06b02f36..5113da06d 100644 --- a/src/lib/graphics/TwkGLF/glsl/SoftDirectionPaintFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/SoftDirectionPaintFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/SoftEraseFrag.glsl b/src/lib/graphics/TwkGLF/glsl/SoftEraseFrag.glsl index f58b5d6a6..5b3af1877 100644 --- a/src/lib/graphics/TwkGLF/glsl/SoftEraseFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/SoftEraseFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/SoftOldReplaceFrag.glsl b/src/lib/graphics/TwkGLF/glsl/SoftOldReplaceFrag.glsl index 563b64d0e..16889b4fe 100644 --- a/src/lib/graphics/TwkGLF/glsl/SoftOldReplaceFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/SoftOldReplaceFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/SoftPaintFrag.glsl b/src/lib/graphics/TwkGLF/glsl/SoftPaintFrag.glsl index 4acfb403d..b0322727e 100644 --- a/src/lib/graphics/TwkGLF/glsl/SoftPaintFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/SoftPaintFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/SoftReplaceFrag.glsl b/src/lib/graphics/TwkGLF/glsl/SoftReplaceFrag.glsl index 338ed395f..d42b7f3fb 100755 --- a/src/lib/graphics/TwkGLF/glsl/SoftReplaceFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/SoftReplaceFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/SoftScaleFrag.glsl b/src/lib/graphics/TwkGLF/glsl/SoftScaleFrag.glsl index 52dae81f3..6b3973659 100644 --- a/src/lib/graphics/TwkGLF/glsl/SoftScaleFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/SoftScaleFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/StereoCheckerFrag.glsl b/src/lib/graphics/TwkGLF/glsl/StereoCheckerFrag.glsl index 7508ec2b8..a0b29d6c5 100755 --- a/src/lib/graphics/TwkGLF/glsl/StereoCheckerFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/StereoCheckerFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/StereoScanlineFrag.glsl b/src/lib/graphics/TwkGLF/glsl/StereoScanlineFrag.glsl index a81ba973a..b2a31a9f9 100755 --- a/src/lib/graphics/TwkGLF/glsl/StereoScanlineFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/StereoScanlineFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/TexRectFrag.glsl b/src/lib/graphics/TwkGLF/glsl/TexRectFrag.glsl index 102719013..f70130fdc 100644 --- a/src/lib/graphics/TwkGLF/glsl/TexRectFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/TexRectFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/TextureFrag.glsl b/src/lib/graphics/TwkGLF/glsl/TextureFrag.glsl index 0f9cd98f2..fe6c06ac2 100644 --- a/src/lib/graphics/TwkGLF/glsl/TextureFrag.glsl +++ b/src/lib/graphics/TwkGLF/glsl/TextureFrag.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 out vec4 FragColor; #define FRAGCOLOR FragColor #else diff --git a/src/lib/graphics/TwkGLF/glsl/TextureVertex.glsl b/src/lib/graphics/TwkGLF/glsl/TextureVertex.glsl index 975732268..173647b28 100644 --- a/src/lib/graphics/TwkGLF/glsl/TextureVertex.glsl +++ b/src/lib/graphics/TwkGLF/glsl/TextureVertex.glsl @@ -4,7 +4,6 @@ // SPDX-License-Identifier: Apache-2.0 // #if __VERSION__ >= 150 -#version 150 #else #define in attribute #define out varying