From c3da0c33a4ccaf321d422f5d24a00bdc1eff7e77 Mon Sep 17 00:00:00 2001 From: Pawel Kolodziejski Date: Sat, 21 Feb 2015 13:43:30 +0100 Subject: [PATCH] GFX: make OS X work with OpenGL 2.1 shaders --- graphics/opengles2/box_shaders.cpp | 12 ++++----- graphics/opengles2/compat_shaders.cpp | 38 ++++++++++++++++++++++----- graphics/opengles2/shader.cpp | 4 +++ 3 files changed, 41 insertions(+), 13 deletions(-) diff --git a/graphics/opengles2/box_shaders.cpp b/graphics/opengles2/box_shaders.cpp index 4cf32f71033..beb468b7541 100644 --- a/graphics/opengles2/box_shaders.cpp +++ b/graphics/opengles2/box_shaders.cpp @@ -28,7 +28,6 @@ namespace Graphics { namespace BuiltinShaders { const char *boxVertex = - "#version 100\n" "attribute vec2 position;\n" "attribute vec2 texcoord;\n" "uniform vec2 offsetXY;\n" @@ -47,11 +46,12 @@ const char *boxVertex = "}\n"; const char *boxFragment = - "#version 100\n" - "#ifdef GL_FRAGMENT_PRECISION_HIGH\n" - "precision highp float;\n" - "#else\n" - "precision mediump float;\n" + "#ifdef GL_ES\n" + "#ifdef GL_FRAGMENT_PRECISION_HIGH\n" + "precision highp float;\n" + "#else\n" + "precision mediump float;\n" + "#endif\n" "#endif\n" "varying vec2 Texcoord;\n" "uniform sampler2D tex;\n" diff --git a/graphics/opengles2/compat_shaders.cpp b/graphics/opengles2/compat_shaders.cpp index 45fe9797b88..74eb7533185 100644 --- a/graphics/opengles2/compat_shaders.cpp +++ b/graphics/opengles2/compat_shaders.cpp @@ -28,15 +28,37 @@ namespace Graphics { namespace BuiltinShaders { const char *compatVertex = +#if defined(USE_OPENGL_SHADERS) + "#if __VERSION__ < 130\n" + "float round(in float x) {\n" + "return sign(x) * floor(abs(x) + .5);\n" + "}\n" + "#define highp\n" + "#define in attribute\n" + "#define out varying\n" + "#endif\n" +#else "#ifdef GL_ES\n" - "mediump float round(in mediump float x) {\n" - " return sign(x) * floor(abs(x) + .5);\n" - "}\n" - "#define in attribute\n" - "#define out varying\n" - "#endif\n"; + "mediump float round(in mediump float x) {\n" + "return sign(x) * floor(abs(x) + .5);\n" + "}\n" + "#define in attribute\n" + "#define out varying\n" + "#endif\n" +#endif +; const char *compatFragment = +#if defined(USE_OPENGL_SHADERS) + "#if __VERSION__ < 130\n" + "#define in varying\n" + "#define OUTPUT\n" + "#define outColor gl_FragColor\n" + "#define texture texture2D\n" + "#else\n" + "#define OUTPUT out vec4 outColor;\n" + "#endif\n" +#else "#ifdef GL_ES\n" "#define in varying\n" "#ifdef GL_FRAGMENT_PRECISION_HIGH\n" @@ -49,7 +71,9 @@ const char *compatFragment = "#define texture texture2D\n" "#else\n" "#define OUTPUT out vec4 outColor;\n" - "#endif\n"; + "#endif\n" +#endif +; } } diff --git a/graphics/opengles2/shader.cpp b/graphics/opengles2/shader.cpp index 4603239b816..f1989c01f40 100644 --- a/graphics/opengles2/shader.cpp +++ b/graphics/opengles2/shader.cpp @@ -74,7 +74,11 @@ static GLuint createCompatShader(const char *shaderSource, GLenum shaderType, co #ifdef USE_GLES2 "#version 100\n", #else + #ifdef MACOSX + "#version 120\n", + #else "#version 130\n", + #endif #endif compatSource, shaderSource