chiark / gitweb /
Implement fallback in case shader support is missing. I still think this is caused...
[cura.git] / Cura / gui / util / opengl.py
index 89d79606e81d696a16b70636ecb22c2ad8b3c780..feebf09317eec6356e6dca6c4994a1762f8c8f07 100644 (file)
@@ -33,6 +33,9 @@ class GLReferenceCounter(object):
                self._refCounter -= 1
                return self._refCounter <= 0
 
+def hasShaderSupport():
+       return glCreateShader != False
+
 class GLShader(GLReferenceCounter):
        def __init__(self, vertexProgram, fragmentProgram):
                super(GLShader, self).__init__()
@@ -82,6 +85,36 @@ class GLShader(GLReferenceCounter):
                if self._program is not None and bool(glDeleteProgram):
                        print "Shader was not properly released!"
 
+#A Class that acts as an OpenGL shader, but in reality is not none.
+class GLFakeShader(GLReferenceCounter):
+       def __init__(self):
+               super(GLFakeShader, self).__init__()
+
+       def bind(self):
+               glEnable(GL_LIGHTING)
+               glEnable(GL_LIGHT0)
+               glEnable(GL_COLOR_MATERIAL)
+               glLightfv(GL_LIGHT0, GL_DIFFUSE, [0.3,0.3,0.3,1])
+               glLightfv(GL_LIGHT0, GL_AMBIENT, [0,0,0,0])
+
+       def unbind(self):
+               glDisable(GL_LIGHTING)
+
+       def release(self):
+               pass
+
+       def setUniform(self, name, value):
+               pass
+
+       def isValid(self):
+               return True
+
+       def getVertexShader(self):
+               return ''
+
+       def getFragmentShader(self):
+               return ''
+
 class GLVBO(GLReferenceCounter):
        def __init__(self, vertexArray, normalArray = None):
                super(GLVBO, self).__init__()