Browse Source

added new demo

dmuratshin 8 years ago
parent
commit
9c474d34e4

+ 1 - 0
examples/Demo/proj.win32/Demo.vcxproj

@@ -146,6 +146,7 @@
     <ClInclude Include="../src/test.h" />
     <ClInclude Include="../src/test.h" />
     <ClInclude Include="..\src\TestCamera.h" />
     <ClInclude Include="..\src\TestCamera.h" />
     <ClInclude Include="..\src\TestEdges.h" />
     <ClInclude Include="..\src\TestEdges.h" />
+    <ClInclude Include="..\src\TestOpenGL.h" />
     <ClInclude Include="..\src\TestSignedDistanceFont.h" />
     <ClInclude Include="..\src\TestSignedDistanceFont.h" />
     <ClInclude Include="..\src\TestTiled.h" />
     <ClInclude Include="..\src\TestTiled.h" />
     <ClInclude Include="..\src\TestTweenPostProcessing.h" />
     <ClInclude Include="..\src\TestTweenPostProcessing.h" />

+ 1 - 0
examples/Demo/proj.win32/Demo.vcxproj.filters

@@ -39,5 +39,6 @@
     <ClInclude Include="..\src\TestSignedDistanceFont.h" />
     <ClInclude Include="..\src\TestSignedDistanceFont.h" />
     <ClInclude Include="..\src\TestCamera.h" />
     <ClInclude Include="..\src\TestCamera.h" />
     <ClInclude Include="..\src\TestTiled.h" />
     <ClInclude Include="..\src\TestTiled.h" />
+    <ClInclude Include="..\src\TestOpenGL.h" />
   </ItemGroup>
   </ItemGroup>
 </Project>
 </Project>

+ 157 - 0
examples/Demo/src/TestOpenGL.h

@@ -0,0 +1,157 @@
+#pragma once
+#include "test.h"
+#include "core/gl/oxgl.h"
+#include "core/gl/ShaderProgramGL.h"
+
+
+struct myVertex
+{
+    Vector3 pos;
+    Vector2 uv;
+};
+
+DECLARE_SMART(OpenGLSprite, spOpenGLSprite);
+class OpenGLSprite : public Sprite
+{
+public:
+
+    int _program;
+
+    OpenGLSprite() 
+    {
+        const char* vertexShaderData = "\
+									uniform mediump mat4 projection;\
+									attribute vec3 a_position;\
+                                    attribute vec2 a_uv;\
+                                    varying mediump vec2 v_uv;\
+									void main() {\
+									vec4 position = vec4(a_position, 1.0);\
+									gl_Position = projection * position;\
+                                    v_uv = a_uv;\
+									}\
+									";
+
+        const char* fragmentShaderData = "\
+                                      varying mediump vec2 v_uv;\
+                                      uniform lowp sampler2D base_texture;\
+                                      \
+									  void main() { \
+									  gl_FragColor = texture2D(base_texture, v_uv); \
+									  } \
+									  ";
+
+
+        int vs = ShaderProgramGL::createShader(GL_VERTEX_SHADER,   vertexShaderData, 0, 0);
+        int fs = ShaderProgramGL::createShader(GL_FRAGMENT_SHADER, fragmentShaderData, 0, 0);
+
+        _program = oxglCreateProgram();
+        oxglAttachShader(_program, vs);
+        oxglAttachShader(_program, fs);
+
+
+        CHECKGL();
+
+        oxglBindAttribLocation(_program, 0, "a_position");
+        oxglBindAttribLocation(_program, 1, "a_uv");
+
+        CHECKGL();
+
+        oxglLinkProgram(_program);
+
+        oxglDetachShader(_program, vs);
+        oxglDetachShader(_program, fs);
+
+        oxglDeleteShader(vs);
+        oxglDeleteShader(fs);
+
+
+        CHECKGL();
+    }
+
+    ~OpenGLSprite() 
+    {
+        oxglDeleteProgram(_program);
+    }
+
+    void doRender(const RenderState& rs)
+    {
+        Material::setCurrent(0);
+
+
+        glEnable(GL_BLEND);
+        glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+
+
+
+        IVideoDriver* driver = IVideoDriver::instance;
+        oxglUseProgram(_program);
+
+
+        oxglActiveTexture(GL_TEXTURE0);
+
+        AnimationFrame frame = resources.getResAnim("bg")->getFrame(0);
+        const RectF& srcRect = frame.getSrcRect();
+
+        int texture = (int)frame.getDiffuse().base->getHandle();
+
+        glBindTexture(GL_TEXTURE_2D, texture);
+
+
+        CHECKGL();
+
+        Matrix m = Matrix(rs.transform) * STDMaterial::instance->getRenderer()->getViewProjection();
+
+        int projLocation = oxglGetUniformLocation(_program, "projection");
+        oxglUniformMatrix4fv(projLocation, 1, GL_FALSE, m.ml);
+
+        CHECKGL();
+
+        myVertex vertices[4];
+        myVertex *v = vertices;
+        
+        v->pos = Vector3(-100, -100, 0);
+        v->uv = srcRect.getLeftTop();
+        ++v;
+
+        v->pos = Vector3(100, -100, 0);
+        v->uv = srcRect.getRightTop();
+        ++v;
+
+        v->pos = Vector3(100, 100, 0);
+        v->uv = srcRect.getRightBottom();
+        ++v;
+
+        v->pos = Vector3(-100, 100, 0);
+        v->uv = srcRect.getLeftBottom();
+        ++v;
+
+        
+        oxglEnableVertexAttribArray(0);
+        oxglVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(myVertex), vertices);
+
+        oxglEnableVertexAttribArray(1);
+        oxglVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(myVertex), (float*)vertices + 3);
+
+
+
+        glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+    
+
+        oxglDisableVertexAttribArray(0);
+        oxglDisableVertexAttribArray(1);
+        CHECKGL();
+    }
+};
+
+
+class TestOpenGL : public Test
+{
+public:
+    TestOpenGL()
+    {
+        spOpenGLSprite sprite = new OpenGLSprite;
+        sprite->setPosition(getStage()->getSize()/2);
+        sprite->setScale(3);
+        content->addChild(sprite);
+    }
+};

+ 3 - 0
examples/Demo/src/example.cpp

@@ -30,6 +30,7 @@
 #include "TestEdges.h"
 #include "TestEdges.h"
 #include "TestCamera.h"
 #include "TestCamera.h"
 #include "TestTiled.h"
 #include "TestTiled.h"
+#include "TestOpenGL.h"
 
 
 #ifdef __S3E__
 #ifdef __S3E__
 #include "s3eKeyboard.h"
 #include "s3eKeyboard.h"
@@ -78,6 +79,7 @@ public:
         addButton("cliprect", "ClipRect Actor");
         addButton("cliprect", "ClipRect Actor");
         addButton("usershader", "Extended UberShader");
         addButton("usershader", "Extended UberShader");
         addButton("usershader2", "Custom shaders and render");
         addButton("usershader2", "Custom shaders and render");
+        addButton("opengl", "OpenGL usage");
         addButton("multicolorfont", "Outer Font Color");
         addButton("multicolorfont", "Outer Font Color");
         addButton("sdf", "Signed Distance Font");
         addButton("sdf", "Signed Distance Font");
         addButton("mask", "Mask");
         addButton("mask", "Mask");
@@ -131,6 +133,7 @@ public:
         if (id == "cliprect") showTest(new TestClipRect);
         if (id == "cliprect") showTest(new TestClipRect);
         if (id == "usershader") showTest(new TestUserShader);
         if (id == "usershader") showTest(new TestUserShader);
         if (id == "usershader2") showTest(new TestUserShader2);
         if (id == "usershader2") showTest(new TestUserShader2);
+        if (id == "opengl") showTest(new TestOpenGL);
         if (id == "mask") showTest(new TestMask);
         if (id == "mask") showTest(new TestMask);
         if (id == "polygon") showTest(new TestPolygon);
         if (id == "polygon") showTest(new TestPolygon);
         if (id == "inputtext") showTest(new TestInputText);
         if (id == "inputtext") showTest(new TestInputText);

+ 5 - 1
oxygine/src/PostProcess.cpp

@@ -57,6 +57,10 @@ namespace oxygine
         driver->setUniformInt("s_texture", 0);
         driver->setUniformInt("s_texture", 0);
 
 
 
 
+        oxglDeleteShader(h);
+        oxglDeleteShader(v);
+        oxglDeleteShader(ps);
+
         file::buffer vs_blit;
         file::buffer vs_blit;
         file::buffer fs_blit;
         file::buffer fs_blit;
         zp.read("system/pp_blit_vs.glsl", vs_blit);
         zp.read("system/pp_blit_vs.glsl", vs_blit);
@@ -69,7 +73,7 @@ namespace oxygine
         unsigned int vs = ShaderProgramGL::createShader(GL_VERTEX_SHADER, (const char*)&vs_blit.front(), "", "");
         unsigned int vs = ShaderProgramGL::createShader(GL_VERTEX_SHADER, (const char*)&vs_blit.front(), "", "");
         unsigned int fs = ShaderProgramGL::createShader(GL_FRAGMENT_SHADER, (const char*)&fs_blit.front(), "", "");
         unsigned int fs = ShaderProgramGL::createShader(GL_FRAGMENT_SHADER, (const char*)&fs_blit.front(), "", "");
 
 
-        shaderBlit = new ShaderProgramGL(ShaderProgramGL::createProgram(vs, fs, decl));
+        shaderBlit = new ShaderProgramGL(ShaderProgramGL::createProgram(vs, fs, decl, true));
         driver->setShaderProgram(shaderBlit);
         driver->setShaderProgram(shaderBlit);
         driver->setUniformInt("s_texture", 0);
         driver->setUniformInt("s_texture", 0);
     }
     }

+ 1 - 1
oxygine/src/core/UberShaderProgram.cpp

@@ -88,7 +88,7 @@ namespace oxygine
 
 
             VideoDriverGLES20* driver = ((VideoDriverGLES20*)IVideoDriver::instance);
             VideoDriverGLES20* driver = ((VideoDriverGLES20*)IVideoDriver::instance);
             const VertexDeclarationGL* decl = driver->getVertexDeclaration(bformat);
             const VertexDeclarationGL* decl = driver->getVertexDeclaration(bformat);
-            ShaderProgramGL* pgl = new ShaderProgramGL(ShaderProgramGL::createProgram(vs, fs, decl));
+            ShaderProgramGL* pgl = new ShaderProgramGL(ShaderProgramGL::createProgram(vs, fs, decl, true));
 
 
 
 
             CHECKGL();
             CHECKGL();

+ 8 - 1
oxygine/src/core/gl/ShaderProgramGL.cpp

@@ -159,7 +159,7 @@ namespace oxygine
     }
     }
 
 
 
 
-    unsigned int ShaderProgramGL::createProgram(int vs, int fs, const VertexDeclarationGL* decl)
+    unsigned int ShaderProgramGL::createProgram(int vs, int fs, const VertexDeclarationGL* decl, bool deleteAttachedShaders)
     {
     {
         int p = oxglCreateProgram();
         int p = oxglCreateProgram();
         oxglAttachShader(p, vs);
         oxglAttachShader(p, vs);
@@ -177,6 +177,13 @@ namespace oxygine
         if (success)
         if (success)
         {
         {
             //log::messageln("compiled shader: %s", log.c_str());
             //log::messageln("compiled shader: %s", log.c_str());
+            oxglDetachShader(p, vs);
+            oxglDetachShader(p, fs);
+            if (deleteAttachedShaders)
+            {
+                oxglDeleteShader(vs);
+                oxglDeleteShader(fs);
+            }
         }
         }
         else
         else
         {
         {

+ 1 - 1
oxygine/src/core/gl/ShaderProgramGL.h

@@ -16,7 +16,7 @@ namespace oxygine
 
 
         static unsigned int createShader(unsigned int type, const char* data,
         static unsigned int createShader(unsigned int type, const char* data,
                                          const char* prepend = "", const char* append = "", error_policy ep = ep_show_error);
                                          const char* prepend = "", const char* append = "", error_policy ep = ep_show_error);
-        static unsigned int createProgram(int vs, int fs, const VertexDeclarationGL* decl);
+        static unsigned int createProgram(int vs, int fs, const VertexDeclarationGL* decl, bool deleteAttachedShaders = false);
         static bool getShaderBuildLog(GLuint shader, std::string& str);
         static bool getShaderBuildLog(GLuint shader, std::string& str);
         static bool getProgramBuildLog(GLuint program, std::string& str);
         static bool getProgramBuildLog(GLuint program, std::string& str);
 
 

+ 190 - 186
oxygine/src/core/gl/oxgl.cpp

@@ -26,148 +26,151 @@ extern "C"
     {}
     {}
 
 
 //!--defgl-begin--!
 //!--defgl-begin--!
-    GLAPI void APIENTRY def_glUseProgram(GLuint program)
-    {}
-    GLAPI void APIENTRY def_glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer)
-    {}
-    GLAPI void APIENTRY def_glActiveTexture(GLenum texture)
-    {}
-    GLAPI void APIENTRY def_glEnableVertexAttribArray(GLuint index)
-    {}
-    GLAPI void APIENTRY def_glDisableVertexAttribArray(GLuint index)
-    {}
-    GLAPI void APIENTRY def_glDeleteProgram(GLuint program)
-    {}
-    GLAPI void APIENTRY def_glGetShaderiv(GLuint shader, GLenum pname, GLint* params)
-    {}
-    GLAPI void APIENTRY def_glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog)
-    {}
-    GLAPI GLuint APIENTRY def_glCreateShader(GLenum type)
-    {return 0;}
-    GLAPI GLuint APIENTRY def_glCreateProgram(void)
-    {return 0;}
-    GLAPI void APIENTRY def_glAttachShader(GLuint program, GLuint shader)
-    {}
-    GLAPI void APIENTRY def_glCompileShader(GLuint shader)
-    {}
-    GLAPI void APIENTRY def_glBindAttribLocation(GLuint program, GLuint index, const GLchar* name)
-    {}
-    GLAPI void APIENTRY def_glLinkProgram(GLuint program)
-    {}
-    GLAPI void APIENTRY def_glUniform1i(GLint location, GLint v0)
-    {}
-    GLAPI void APIENTRY def_glUniform2f(GLint location, GLfloat v0, GLfloat v1)
-    {}
-    GLAPI void APIENTRY def_glUniform2fv(GLint location, GLsizei count, const GLfloat* value)
-    {}
-    GLAPI void APIENTRY def_glUniform3fv(GLint location, GLsizei count, const GLfloat* value)
-    {}
-    GLAPI void APIENTRY def_glUniform4fv(GLint location, GLsizei count, const GLfloat* value)
-    {}
-    GLAPI void APIENTRY def_glUniform1f(GLint location, GLfloat v0)
-    {}
-    GLAPI void APIENTRY def_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
-    {}
-    GLAPI void APIENTRY def_glBindFramebuffer(GLenum target, GLuint framebuffer)
-    {}
-    GLAPI void APIENTRY def_glGenFramebuffers(GLsizei n, GLuint* framebuffers)
-    {}
-    GLAPI GLenum APIENTRY def_glCheckFramebufferStatus(GLenum target)
-    {return 0;}
-    GLAPI void APIENTRY def_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
-    {}
-    GLAPI GLint APIENTRY def_glGetUniformLocation(GLuint program, const GLchar* name)
-    {return 0;}
-    GLAPI void APIENTRY def_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
-    {}
-    GLAPI void APIENTRY def_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data)
-    {}
-    GLAPI void APIENTRY def_glBindBuffer(GLenum target, GLuint buffer)
-    {}
-    GLAPI void APIENTRY def_glGenBuffers(GLsizei n, GLuint* buffers)
-    {}
-    GLAPI void APIENTRY def_glBufferData(GLenum target, GLsizeiptr size, const void* data, GLenum usage)
-    {}
-    GLAPI void APIENTRY def_glGetProgramiv(GLuint program, GLenum pname, GLint* params)
-    {}
-    GLAPI void APIENTRY def_glGenerateMipmap(GLenum target)
-    {}
-    GLAPI void APIENTRY def_glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)
-    {}
-    GLAPI void APIENTRY def_glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
-    {}
-    GLAPI void APIENTRY def_glBindRenderbuffer(GLenum target, GLuint renderbuffer)
-    {}
-    GLAPI void APIENTRY def_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
-    {}
-    GLAPI void APIENTRY def_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
-    {}
-    GLAPI void APIENTRY def_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
-    {}
-    GLAPI void APIENTRY def_glDeleteShader(GLuint shader)
-    {}
-    GLAPI void APIENTRY def_glDeleteBuffers(GLsizei n, const GLuint* buffers)
-    {}
-    GLAPI void APIENTRY def_glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog)
-    {}
-    GLAPI void APIENTRY def_glBlendEquation(GLenum mode)
-    {}
-    GLAPI void APIENTRY def_glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
-    {}
-    GLAPI void APIENTRY def_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
-    {}
-    GLAPI GLint APIENTRY def_glGetAttribLocation(GLuint program, const GLchar* name)
-    {return 0;}
+GLAPI void APIENTRY def_glUseProgram (GLuint program)
+{}
+GLAPI void APIENTRY def_glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer)
+{}
+GLAPI void APIENTRY def_glActiveTexture (GLenum texture)
+{}
+GLAPI void APIENTRY def_glEnableVertexAttribArray (GLuint index)
+{}
+GLAPI void APIENTRY def_glDisableVertexAttribArray (GLuint index)
+{}
+GLAPI void APIENTRY def_glDeleteProgram (GLuint program)
+{}
+GLAPI void APIENTRY def_glGetShaderiv (GLuint shader, GLenum pname, GLint *params)
+{}
+GLAPI void APIENTRY def_glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
+{}
+GLAPI GLuint APIENTRY def_glCreateShader (GLenum type)
+{return 0;}
+GLAPI GLuint APIENTRY def_glCreateProgram (void)
+{return 0;}
+GLAPI void APIENTRY def_glAttachShader (GLuint program, GLuint shader)
+{}
+GLAPI void APIENTRY def_glCompileShader (GLuint shader)
+{}
+GLAPI void APIENTRY def_glDetachShader (GLuint program, GLuint shader)
+{}
+GLAPI void APIENTRY def_glBindAttribLocation (GLuint program, GLuint index, const GLchar *name)
+{}
+GLAPI void APIENTRY def_glLinkProgram (GLuint program)
+{}
+GLAPI void APIENTRY def_glUniform1i (GLint location, GLint v0)
+{}
+GLAPI void APIENTRY def_glUniform2f (GLint location, GLfloat v0, GLfloat v1)
+{}
+GLAPI void APIENTRY def_glUniform2fv (GLint location, GLsizei count, const GLfloat *value)
+{}
+GLAPI void APIENTRY def_glUniform3fv (GLint location, GLsizei count, const GLfloat *value)
+{}
+GLAPI void APIENTRY def_glUniform4fv (GLint location, GLsizei count, const GLfloat *value)
+{}
+GLAPI void APIENTRY def_glUniform1f (GLint location, GLfloat v0)
+{}
+GLAPI void APIENTRY def_glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
+{}
+GLAPI void APIENTRY def_glBindFramebuffer (GLenum target, GLuint framebuffer)
+{}
+GLAPI void APIENTRY def_glGenFramebuffers (GLsizei n, GLuint *framebuffers)
+{}
+GLAPI GLenum APIENTRY def_glCheckFramebufferStatus (GLenum target)
+{return 0;}
+GLAPI void APIENTRY def_glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers)
+{}
+GLAPI GLint APIENTRY def_glGetUniformLocation (GLuint program, const GLchar *name)
+{return 0;}
+GLAPI void APIENTRY def_glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+{}
+GLAPI void APIENTRY def_glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data)
+{}
+GLAPI void APIENTRY def_glBindBuffer (GLenum target, GLuint buffer)
+{}
+GLAPI void APIENTRY def_glGenBuffers (GLsizei n, GLuint *buffers)
+{}
+GLAPI void APIENTRY def_glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage)
+{}
+GLAPI void APIENTRY def_glGetProgramiv (GLuint program, GLenum pname, GLint *params)
+{}
+GLAPI void APIENTRY def_glGenerateMipmap (GLenum target)
+{}
+GLAPI void APIENTRY def_glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)
+{}
+GLAPI void APIENTRY def_glGenRenderbuffers (GLsizei n, GLuint *renderbuffers)
+{}
+GLAPI void APIENTRY def_glBindRenderbuffer (GLenum target, GLuint renderbuffer)
+{}
+GLAPI void APIENTRY def_glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+{}
+GLAPI void APIENTRY def_glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+{}
+GLAPI void APIENTRY def_glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers)
+{}
+GLAPI void APIENTRY def_glDeleteShader (GLuint shader)
+{}
+GLAPI void APIENTRY def_glDeleteBuffers (GLsizei n, const GLuint *buffers)
+{}
+GLAPI void APIENTRY def_glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
+{}
+GLAPI void APIENTRY def_glBlendEquation (GLenum mode)
+{}
+GLAPI void APIENTRY def_glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
+{}
+GLAPI void APIENTRY def_glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha)
+{}
+GLAPI GLint APIENTRY def_glGetAttribLocation (GLuint program, const GLchar *name)
+{return 0;}
 //!--defgl-end--!
 //!--defgl-end--!
 
 
 //!--_gl-begin--!
 //!--_gl-begin--!
-    PFNGLSHADERSOURCEPROC _glShaderSource = 0;
-    PFNGLUSEPROGRAMPROC _glUseProgram = 0;
-    PFNGLVERTEXATTRIBPOINTERPROC _glVertexAttribPointer = 0;
-    PFNGLACTIVETEXTUREPROC _glActiveTexture = 0;
-    PFNGLENABLEVERTEXATTRIBARRAYPROC _glEnableVertexAttribArray = 0;
-    PFNGLDISABLEVERTEXATTRIBARRAYPROC _glDisableVertexAttribArray = 0;
-    PFNGLDELETEPROGRAMPROC _glDeleteProgram = 0;
-    PFNGLGETSHADERIVPROC _glGetShaderiv = 0;
-    PFNGLGETSHADERINFOLOGPROC _glGetShaderInfoLog = 0;
-    PFNGLCREATESHADERPROC _glCreateShader = 0;
-    PFNGLCREATEPROGRAMPROC _glCreateProgram = 0;
-    PFNGLATTACHSHADERPROC _glAttachShader = 0;
-    PFNGLCOMPILESHADERPROC _glCompileShader = 0;
-    PFNGLBINDATTRIBLOCATIONPROC _glBindAttribLocation = 0;
-    PFNGLLINKPROGRAMPROC _glLinkProgram = 0;
-    PFNGLUNIFORM1IPROC _glUniform1i = 0;
-    PFNGLUNIFORM2FPROC _glUniform2f = 0;
-    PFNGLUNIFORM2FVPROC _glUniform2fv = 0;
-    PFNGLUNIFORM3FVPROC _glUniform3fv = 0;
-    PFNGLUNIFORM4FVPROC _glUniform4fv = 0;
-    PFNGLUNIFORM1FPROC _glUniform1f = 0;
-    PFNGLUNIFORMMATRIX4FVPROC _glUniformMatrix4fv = 0;
-    PFNGLBINDFRAMEBUFFERPROC _glBindFramebuffer = 0;
-    PFNGLGENFRAMEBUFFERSPROC _glGenFramebuffers = 0;
-    PFNGLCHECKFRAMEBUFFERSTATUSPROC _glCheckFramebufferStatus = 0;
-    PFNGLDELETEFRAMEBUFFERSPROC _glDeleteFramebuffers = 0;
-    PFNGLGETUNIFORMLOCATIONPROC _glGetUniformLocation = 0;
-    PFNGLFRAMEBUFFERTEXTURE2DPROC _glFramebufferTexture2D = 0;
-    PFNGLCOMPRESSEDTEXIMAGE2DPROC _glCompressedTexImage2D = 0;
-    PFNGLBINDBUFFERPROC _glBindBuffer = 0;
-    PFNGLGENBUFFERSPROC _glGenBuffers = 0;
-    PFNGLBUFFERDATAPROC _glBufferData = 0;
-    PFNGLGETPROGRAMIVPROC _glGetProgramiv = 0;
-    PFNGLGENERATEMIPMAPPROC _glGenerateMipmap = 0;
-    PFNGLSTENCILOPSEPARATEPROC _glStencilOpSeparate = 0;
-    PFNGLGENRENDERBUFFERSPROC _glGenRenderbuffers = 0;
-    PFNGLBINDRENDERBUFFERPROC _glBindRenderbuffer = 0;
-    PFNGLRENDERBUFFERSTORAGEPROC _glRenderbufferStorage = 0;
-    PFNGLFRAMEBUFFERRENDERBUFFERPROC _glFramebufferRenderbuffer = 0;
-    PFNGLDELETERENDERBUFFERSPROC _glDeleteRenderbuffers = 0;
-    PFNGLDELETESHADERPROC _glDeleteShader = 0;
-    PFNGLDELETEBUFFERSPROC _glDeleteBuffers = 0;
-    PFNGLGETPROGRAMINFOLOGPROC _glGetProgramInfoLog = 0;
-    PFNGLBLENDEQUATIONPROC _glBlendEquation = 0;
-    PFNGLBLENDFUNCSEPARATEPROC _glBlendFuncSeparate = 0;
-    PFNGLBLENDEQUATIONSEPARATEPROC _glBlendEquationSeparate = 0;
-    PFNGLGETATTRIBLOCATIONPROC _glGetAttribLocation = 0;
+PFNGLSHADERSOURCEPROC _glShaderSource = 0;
+PFNGLUSEPROGRAMPROC _glUseProgram = 0;
+PFNGLVERTEXATTRIBPOINTERPROC _glVertexAttribPointer = 0;
+PFNGLACTIVETEXTUREPROC _glActiveTexture = 0;
+PFNGLENABLEVERTEXATTRIBARRAYPROC _glEnableVertexAttribArray = 0;
+PFNGLDISABLEVERTEXATTRIBARRAYPROC _glDisableVertexAttribArray = 0;
+PFNGLDELETEPROGRAMPROC _glDeleteProgram = 0;
+PFNGLGETSHADERIVPROC _glGetShaderiv = 0;
+PFNGLGETSHADERINFOLOGPROC _glGetShaderInfoLog = 0;
+PFNGLCREATESHADERPROC _glCreateShader = 0;
+PFNGLCREATEPROGRAMPROC _glCreateProgram = 0;
+PFNGLATTACHSHADERPROC _glAttachShader = 0;
+PFNGLCOMPILESHADERPROC _glCompileShader = 0;
+PFNGLDETACHSHADERPROC _glDetachShader = 0;
+PFNGLBINDATTRIBLOCATIONPROC _glBindAttribLocation = 0;
+PFNGLLINKPROGRAMPROC _glLinkProgram = 0;
+PFNGLUNIFORM1IPROC _glUniform1i = 0;
+PFNGLUNIFORM2FPROC _glUniform2f = 0;
+PFNGLUNIFORM2FVPROC _glUniform2fv = 0;
+PFNGLUNIFORM3FVPROC _glUniform3fv = 0;
+PFNGLUNIFORM4FVPROC _glUniform4fv = 0;
+PFNGLUNIFORM1FPROC _glUniform1f = 0;
+PFNGLUNIFORMMATRIX4FVPROC _glUniformMatrix4fv = 0;
+PFNGLBINDFRAMEBUFFERPROC _glBindFramebuffer = 0;
+PFNGLGENFRAMEBUFFERSPROC _glGenFramebuffers = 0;
+PFNGLCHECKFRAMEBUFFERSTATUSPROC _glCheckFramebufferStatus = 0;
+PFNGLDELETEFRAMEBUFFERSPROC _glDeleteFramebuffers = 0;
+PFNGLGETUNIFORMLOCATIONPROC _glGetUniformLocation = 0;
+PFNGLFRAMEBUFFERTEXTURE2DPROC _glFramebufferTexture2D = 0;
+PFNGLCOMPRESSEDTEXIMAGE2DPROC _glCompressedTexImage2D = 0;
+PFNGLBINDBUFFERPROC _glBindBuffer = 0;
+PFNGLGENBUFFERSPROC _glGenBuffers = 0;
+PFNGLBUFFERDATAPROC _glBufferData = 0;
+PFNGLGETPROGRAMIVPROC _glGetProgramiv = 0;
+PFNGLGENERATEMIPMAPPROC _glGenerateMipmap = 0;
+PFNGLSTENCILOPSEPARATEPROC _glStencilOpSeparate = 0;
+PFNGLGENRENDERBUFFERSPROC _glGenRenderbuffers = 0;
+PFNGLBINDRENDERBUFFERPROC _glBindRenderbuffer = 0;
+PFNGLRENDERBUFFERSTORAGEPROC _glRenderbufferStorage = 0;
+PFNGLFRAMEBUFFERRENDERBUFFERPROC _glFramebufferRenderbuffer = 0;
+PFNGLDELETERENDERBUFFERSPROC _glDeleteRenderbuffers = 0;
+PFNGLDELETESHADERPROC _glDeleteShader = 0;
+PFNGLDELETEBUFFERSPROC _glDeleteBuffers = 0;
+PFNGLGETPROGRAMINFOLOGPROC _glGetProgramInfoLog = 0;
+PFNGLBLENDEQUATIONPROC _glBlendEquation = 0;
+PFNGLBLENDFUNCSEPARATEPROC _glBlendFuncSeparate = 0;
+PFNGLBLENDEQUATIONSEPARATEPROC _glBlendEquationSeparate = 0;
+PFNGLGETATTRIBLOCATIONPROC _glGetAttribLocation = 0;
 //!--_gl-end--!
 //!--_gl-end--!
 }
 }
 
 
@@ -179,53 +182,54 @@ int initGLExtensions(myGetProcAdress func)
     int missing = 0;
     int missing = 0;
 
 
 //!--getfunc-begin--!
 //!--getfunc-begin--!
-    GETFUNC(_glShaderSource, def_glShaderSource, PFNGLSHADERSOURCEPROC, "glShaderSource");
-    GETFUNC(_glUseProgram, def_glUseProgram, PFNGLUSEPROGRAMPROC, "glUseProgram");
-    GETFUNC(_glVertexAttribPointer, def_glVertexAttribPointer, PFNGLVERTEXATTRIBPOINTERPROC, "glVertexAttribPointer");
-    GETFUNC(_glActiveTexture, def_glActiveTexture, PFNGLACTIVETEXTUREPROC, "glActiveTexture");
-    GETFUNC(_glEnableVertexAttribArray, def_glEnableVertexAttribArray, PFNGLENABLEVERTEXATTRIBARRAYPROC, "glEnableVertexAttribArray");
-    GETFUNC(_glDisableVertexAttribArray, def_glDisableVertexAttribArray, PFNGLDISABLEVERTEXATTRIBARRAYPROC, "glDisableVertexAttribArray");
-    GETFUNC(_glDeleteProgram, def_glDeleteProgram, PFNGLDELETEPROGRAMPROC, "glDeleteProgram");
-    GETFUNC(_glGetShaderiv, def_glGetShaderiv, PFNGLGETSHADERIVPROC, "glGetShaderiv");
-    GETFUNC(_glGetShaderInfoLog, def_glGetShaderInfoLog, PFNGLGETSHADERINFOLOGPROC, "glGetShaderInfoLog");
-    GETFUNC(_glCreateShader, def_glCreateShader, PFNGLCREATESHADERPROC, "glCreateShader");
-    GETFUNC(_glCreateProgram, def_glCreateProgram, PFNGLCREATEPROGRAMPROC, "glCreateProgram");
-    GETFUNC(_glAttachShader, def_glAttachShader, PFNGLATTACHSHADERPROC, "glAttachShader");
-    GETFUNC(_glCompileShader, def_glCompileShader, PFNGLCOMPILESHADERPROC, "glCompileShader");
-    GETFUNC(_glBindAttribLocation, def_glBindAttribLocation, PFNGLBINDATTRIBLOCATIONPROC, "glBindAttribLocation");
-    GETFUNC(_glLinkProgram, def_glLinkProgram, PFNGLLINKPROGRAMPROC, "glLinkProgram");
-    GETFUNC(_glUniform1i, def_glUniform1i, PFNGLUNIFORM1IPROC, "glUniform1i");
-    GETFUNC(_glUniform2f, def_glUniform2f, PFNGLUNIFORM2FPROC, "glUniform2f");
-    GETFUNC(_glUniform2fv, def_glUniform2fv, PFNGLUNIFORM2FVPROC, "glUniform2fv");
-    GETFUNC(_glUniform3fv, def_glUniform3fv, PFNGLUNIFORM3FVPROC, "glUniform3fv");
-    GETFUNC(_glUniform4fv, def_glUniform4fv, PFNGLUNIFORM4FVPROC, "glUniform4fv");
-    GETFUNC(_glUniform1f, def_glUniform1f, PFNGLUNIFORM1FPROC, "glUniform1f");
-    GETFUNC(_glUniformMatrix4fv, def_glUniformMatrix4fv, PFNGLUNIFORMMATRIX4FVPROC, "glUniformMatrix4fv");
-    GETFUNC(_glBindFramebuffer, def_glBindFramebuffer, PFNGLBINDFRAMEBUFFERPROC, "glBindFramebuffer");
-    GETFUNC(_glGenFramebuffers, def_glGenFramebuffers, PFNGLGENFRAMEBUFFERSPROC, "glGenFramebuffers");
-    GETFUNC(_glCheckFramebufferStatus, def_glCheckFramebufferStatus, PFNGLCHECKFRAMEBUFFERSTATUSPROC, "glCheckFramebufferStatus");
-    GETFUNC(_glDeleteFramebuffers, def_glDeleteFramebuffers, PFNGLDELETEFRAMEBUFFERSPROC, "glDeleteFramebuffers");
-    GETFUNC(_glGetUniformLocation, def_glGetUniformLocation, PFNGLGETUNIFORMLOCATIONPROC, "glGetUniformLocation");
-    GETFUNC(_glFramebufferTexture2D, def_glFramebufferTexture2D, PFNGLFRAMEBUFFERTEXTURE2DPROC, "glFramebufferTexture2D");
-    GETFUNC(_glCompressedTexImage2D, def_glCompressedTexImage2D, PFNGLCOMPRESSEDTEXIMAGE2DPROC, "glCompressedTexImage2D");
-    GETFUNC(_glBindBuffer, def_glBindBuffer, PFNGLBINDBUFFERPROC, "glBindBuffer");
-    GETFUNC(_glGenBuffers, def_glGenBuffers, PFNGLGENBUFFERSPROC, "glGenBuffers");
-    GETFUNC(_glBufferData, def_glBufferData, PFNGLBUFFERDATAPROC, "glBufferData");
-    GETFUNC(_glGetProgramiv, def_glGetProgramiv, PFNGLGETPROGRAMIVPROC, "glGetProgramiv");
-    GETFUNC(_glGenerateMipmap, def_glGenerateMipmap, PFNGLGENERATEMIPMAPPROC, "glGenerateMipmap");
-    GETFUNC(_glStencilOpSeparate, def_glStencilOpSeparate, PFNGLSTENCILOPSEPARATEPROC, "glStencilOpSeparate");
-    GETFUNC(_glGenRenderbuffers, def_glGenRenderbuffers, PFNGLGENRENDERBUFFERSPROC, "glGenRenderbuffers");
-    GETFUNC(_glBindRenderbuffer, def_glBindRenderbuffer, PFNGLBINDRENDERBUFFERPROC, "glBindRenderbuffer");
-    GETFUNC(_glRenderbufferStorage, def_glRenderbufferStorage, PFNGLRENDERBUFFERSTORAGEPROC, "glRenderbufferStorage");
-    GETFUNC(_glFramebufferRenderbuffer, def_glFramebufferRenderbuffer, PFNGLFRAMEBUFFERRENDERBUFFERPROC, "glFramebufferRenderbuffer");
-    GETFUNC(_glDeleteRenderbuffers, def_glDeleteRenderbuffers, PFNGLDELETERENDERBUFFERSPROC, "glDeleteRenderbuffers");
-    GETFUNC(_glDeleteShader, def_glDeleteShader, PFNGLDELETESHADERPROC, "glDeleteShader");
-    GETFUNC(_glDeleteBuffers, def_glDeleteBuffers, PFNGLDELETEBUFFERSPROC, "glDeleteBuffers");
-    GETFUNC(_glGetProgramInfoLog, def_glGetProgramInfoLog, PFNGLGETPROGRAMINFOLOGPROC, "glGetProgramInfoLog");
-    GETFUNC(_glBlendEquation, def_glBlendEquation, PFNGLBLENDEQUATIONPROC, "glBlendEquation");
-    GETFUNC(_glBlendFuncSeparate, def_glBlendFuncSeparate, PFNGLBLENDFUNCSEPARATEPROC, "glBlendFuncSeparate");
-    GETFUNC(_glBlendEquationSeparate, def_glBlendEquationSeparate, PFNGLBLENDEQUATIONSEPARATEPROC, "glBlendEquationSeparate");
-    GETFUNC(_glGetAttribLocation, def_glGetAttribLocation, PFNGLGETATTRIBLOCATIONPROC, "glGetAttribLocation");
+GETFUNC(_glShaderSource, def_glShaderSource, PFNGLSHADERSOURCEPROC, "glShaderSource");
+GETFUNC(_glUseProgram, def_glUseProgram, PFNGLUSEPROGRAMPROC, "glUseProgram");
+GETFUNC(_glVertexAttribPointer, def_glVertexAttribPointer, PFNGLVERTEXATTRIBPOINTERPROC, "glVertexAttribPointer");
+GETFUNC(_glActiveTexture, def_glActiveTexture, PFNGLACTIVETEXTUREPROC, "glActiveTexture");
+GETFUNC(_glEnableVertexAttribArray, def_glEnableVertexAttribArray, PFNGLENABLEVERTEXATTRIBARRAYPROC, "glEnableVertexAttribArray");
+GETFUNC(_glDisableVertexAttribArray, def_glDisableVertexAttribArray, PFNGLDISABLEVERTEXATTRIBARRAYPROC, "glDisableVertexAttribArray");
+GETFUNC(_glDeleteProgram, def_glDeleteProgram, PFNGLDELETEPROGRAMPROC, "glDeleteProgram");
+GETFUNC(_glGetShaderiv, def_glGetShaderiv, PFNGLGETSHADERIVPROC, "glGetShaderiv");
+GETFUNC(_glGetShaderInfoLog, def_glGetShaderInfoLog, PFNGLGETSHADERINFOLOGPROC, "glGetShaderInfoLog");
+GETFUNC(_glCreateShader, def_glCreateShader, PFNGLCREATESHADERPROC, "glCreateShader");
+GETFUNC(_glCreateProgram, def_glCreateProgram, PFNGLCREATEPROGRAMPROC, "glCreateProgram");
+GETFUNC(_glAttachShader, def_glAttachShader, PFNGLATTACHSHADERPROC, "glAttachShader");
+GETFUNC(_glCompileShader, def_glCompileShader, PFNGLCOMPILESHADERPROC, "glCompileShader");
+GETFUNC(_glDetachShader, def_glDetachShader, PFNGLDETACHSHADERPROC, "glDetachShader");
+GETFUNC(_glBindAttribLocation, def_glBindAttribLocation, PFNGLBINDATTRIBLOCATIONPROC, "glBindAttribLocation");
+GETFUNC(_glLinkProgram, def_glLinkProgram, PFNGLLINKPROGRAMPROC, "glLinkProgram");
+GETFUNC(_glUniform1i, def_glUniform1i, PFNGLUNIFORM1IPROC, "glUniform1i");
+GETFUNC(_glUniform2f, def_glUniform2f, PFNGLUNIFORM2FPROC, "glUniform2f");
+GETFUNC(_glUniform2fv, def_glUniform2fv, PFNGLUNIFORM2FVPROC, "glUniform2fv");
+GETFUNC(_glUniform3fv, def_glUniform3fv, PFNGLUNIFORM3FVPROC, "glUniform3fv");
+GETFUNC(_glUniform4fv, def_glUniform4fv, PFNGLUNIFORM4FVPROC, "glUniform4fv");
+GETFUNC(_glUniform1f, def_glUniform1f, PFNGLUNIFORM1FPROC, "glUniform1f");
+GETFUNC(_glUniformMatrix4fv, def_glUniformMatrix4fv, PFNGLUNIFORMMATRIX4FVPROC, "glUniformMatrix4fv");
+GETFUNC(_glBindFramebuffer, def_glBindFramebuffer, PFNGLBINDFRAMEBUFFERPROC, "glBindFramebuffer");
+GETFUNC(_glGenFramebuffers, def_glGenFramebuffers, PFNGLGENFRAMEBUFFERSPROC, "glGenFramebuffers");
+GETFUNC(_glCheckFramebufferStatus, def_glCheckFramebufferStatus, PFNGLCHECKFRAMEBUFFERSTATUSPROC, "glCheckFramebufferStatus");
+GETFUNC(_glDeleteFramebuffers, def_glDeleteFramebuffers, PFNGLDELETEFRAMEBUFFERSPROC, "glDeleteFramebuffers");
+GETFUNC(_glGetUniformLocation, def_glGetUniformLocation, PFNGLGETUNIFORMLOCATIONPROC, "glGetUniformLocation");
+GETFUNC(_glFramebufferTexture2D, def_glFramebufferTexture2D, PFNGLFRAMEBUFFERTEXTURE2DPROC, "glFramebufferTexture2D");
+GETFUNC(_glCompressedTexImage2D, def_glCompressedTexImage2D, PFNGLCOMPRESSEDTEXIMAGE2DPROC, "glCompressedTexImage2D");
+GETFUNC(_glBindBuffer, def_glBindBuffer, PFNGLBINDBUFFERPROC, "glBindBuffer");
+GETFUNC(_glGenBuffers, def_glGenBuffers, PFNGLGENBUFFERSPROC, "glGenBuffers");
+GETFUNC(_glBufferData, def_glBufferData, PFNGLBUFFERDATAPROC, "glBufferData");
+GETFUNC(_glGetProgramiv, def_glGetProgramiv, PFNGLGETPROGRAMIVPROC, "glGetProgramiv");
+GETFUNC(_glGenerateMipmap, def_glGenerateMipmap, PFNGLGENERATEMIPMAPPROC, "glGenerateMipmap");
+GETFUNC(_glStencilOpSeparate, def_glStencilOpSeparate, PFNGLSTENCILOPSEPARATEPROC, "glStencilOpSeparate");
+GETFUNC(_glGenRenderbuffers, def_glGenRenderbuffers, PFNGLGENRENDERBUFFERSPROC, "glGenRenderbuffers");
+GETFUNC(_glBindRenderbuffer, def_glBindRenderbuffer, PFNGLBINDRENDERBUFFERPROC, "glBindRenderbuffer");
+GETFUNC(_glRenderbufferStorage, def_glRenderbufferStorage, PFNGLRENDERBUFFERSTORAGEPROC, "glRenderbufferStorage");
+GETFUNC(_glFramebufferRenderbuffer, def_glFramebufferRenderbuffer, PFNGLFRAMEBUFFERRENDERBUFFERPROC, "glFramebufferRenderbuffer");
+GETFUNC(_glDeleteRenderbuffers, def_glDeleteRenderbuffers, PFNGLDELETERENDERBUFFERSPROC, "glDeleteRenderbuffers");
+GETFUNC(_glDeleteShader, def_glDeleteShader, PFNGLDELETESHADERPROC, "glDeleteShader");
+GETFUNC(_glDeleteBuffers, def_glDeleteBuffers, PFNGLDELETEBUFFERSPROC, "glDeleteBuffers");
+GETFUNC(_glGetProgramInfoLog, def_glGetProgramInfoLog, PFNGLGETPROGRAMINFOLOGPROC, "glGetProgramInfoLog");
+GETFUNC(_glBlendEquation, def_glBlendEquation, PFNGLBLENDEQUATIONPROC, "glBlendEquation");
+GETFUNC(_glBlendFuncSeparate, def_glBlendFuncSeparate, PFNGLBLENDFUNCSEPARATEPROC, "glBlendFuncSeparate");
+GETFUNC(_glBlendEquationSeparate, def_glBlendEquationSeparate, PFNGLBLENDEQUATIONSEPARATEPROC, "glBlendEquationSeparate");
+GETFUNC(_glGetAttribLocation, def_glGetAttribLocation, PFNGLGETATTRIBLOCATIONPROC, "glGetAttribLocation");
 //!--getfunc-end--!
 //!--getfunc-end--!
 
 
     return missing;
     return missing;

+ 49 - 47
oxygine/src/core/gl/oxgl.h

@@ -26,53 +26,54 @@
 extern "C"
 extern "C"
 {
 {
 //!--pfngl-begin--!
 //!--pfngl-begin--!
-    extern PFNGLSHADERSOURCEPROC _glShaderSource;
-    extern PFNGLUSEPROGRAMPROC _glUseProgram;
-    extern PFNGLVERTEXATTRIBPOINTERPROC _glVertexAttribPointer;
-    extern PFNGLACTIVETEXTUREPROC _glActiveTexture;
-    extern PFNGLENABLEVERTEXATTRIBARRAYPROC _glEnableVertexAttribArray;
-    extern PFNGLDISABLEVERTEXATTRIBARRAYPROC _glDisableVertexAttribArray;
-    extern PFNGLDELETEPROGRAMPROC _glDeleteProgram;
-    extern PFNGLGETSHADERIVPROC _glGetShaderiv;
-    extern PFNGLGETSHADERINFOLOGPROC _glGetShaderInfoLog;
-    extern PFNGLCREATESHADERPROC _glCreateShader;
-    extern PFNGLCREATEPROGRAMPROC _glCreateProgram;
-    extern PFNGLATTACHSHADERPROC _glAttachShader;
-    extern PFNGLCOMPILESHADERPROC _glCompileShader;
-    extern PFNGLBINDATTRIBLOCATIONPROC _glBindAttribLocation;
-    extern PFNGLLINKPROGRAMPROC _glLinkProgram;
-    extern PFNGLUNIFORM1IPROC _glUniform1i;
-    extern PFNGLUNIFORM2FPROC _glUniform2f;
-    extern PFNGLUNIFORM2FVPROC _glUniform2fv;
-    extern PFNGLUNIFORM3FVPROC _glUniform3fv;
-    extern PFNGLUNIFORM4FVPROC _glUniform4fv;
-    extern PFNGLUNIFORM1FPROC _glUniform1f;
-    extern PFNGLUNIFORMMATRIX4FVPROC _glUniformMatrix4fv;
-    extern PFNGLBINDFRAMEBUFFERPROC _glBindFramebuffer;
-    extern PFNGLGENFRAMEBUFFERSPROC _glGenFramebuffers;
-    extern PFNGLCHECKFRAMEBUFFERSTATUSPROC _glCheckFramebufferStatus;
-    extern PFNGLDELETEFRAMEBUFFERSPROC _glDeleteFramebuffers;
-    extern PFNGLGETUNIFORMLOCATIONPROC _glGetUniformLocation;
-    extern PFNGLFRAMEBUFFERTEXTURE2DPROC _glFramebufferTexture2D;
-    extern PFNGLCOMPRESSEDTEXIMAGE2DPROC _glCompressedTexImage2D;
-    extern PFNGLBINDBUFFERPROC _glBindBuffer;
-    extern PFNGLGENBUFFERSPROC _glGenBuffers;
-    extern PFNGLBUFFERDATAPROC _glBufferData;
-    extern PFNGLGETPROGRAMIVPROC _glGetProgramiv;
-    extern PFNGLGENERATEMIPMAPPROC _glGenerateMipmap;
-    extern PFNGLSTENCILOPSEPARATEPROC _glStencilOpSeparate;
-    extern PFNGLGENRENDERBUFFERSPROC _glGenRenderbuffers;
-    extern PFNGLBINDRENDERBUFFERPROC _glBindRenderbuffer;
-    extern PFNGLRENDERBUFFERSTORAGEPROC _glRenderbufferStorage;
-    extern PFNGLFRAMEBUFFERRENDERBUFFERPROC _glFramebufferRenderbuffer;
-    extern PFNGLDELETERENDERBUFFERSPROC _glDeleteRenderbuffers;
-    extern PFNGLDELETESHADERPROC _glDeleteShader;
-    extern PFNGLDELETEBUFFERSPROC _glDeleteBuffers;
-    extern PFNGLGETPROGRAMINFOLOGPROC _glGetProgramInfoLog;
-    extern PFNGLBLENDEQUATIONPROC _glBlendEquation;
-    extern PFNGLBLENDFUNCSEPARATEPROC _glBlendFuncSeparate;
-    extern PFNGLBLENDEQUATIONSEPARATEPROC _glBlendEquationSeparate;
-    extern PFNGLGETATTRIBLOCATIONPROC _glGetAttribLocation;
+extern PFNGLSHADERSOURCEPROC _glShaderSource;
+extern PFNGLUSEPROGRAMPROC _glUseProgram;
+extern PFNGLVERTEXATTRIBPOINTERPROC _glVertexAttribPointer;
+extern PFNGLACTIVETEXTUREPROC _glActiveTexture;
+extern PFNGLENABLEVERTEXATTRIBARRAYPROC _glEnableVertexAttribArray;
+extern PFNGLDISABLEVERTEXATTRIBARRAYPROC _glDisableVertexAttribArray;
+extern PFNGLDELETEPROGRAMPROC _glDeleteProgram;
+extern PFNGLGETSHADERIVPROC _glGetShaderiv;
+extern PFNGLGETSHADERINFOLOGPROC _glGetShaderInfoLog;
+extern PFNGLCREATESHADERPROC _glCreateShader;
+extern PFNGLCREATEPROGRAMPROC _glCreateProgram;
+extern PFNGLATTACHSHADERPROC _glAttachShader;
+extern PFNGLCOMPILESHADERPROC _glCompileShader;
+extern PFNGLDETACHSHADERPROC _glDetachShader;
+extern PFNGLBINDATTRIBLOCATIONPROC _glBindAttribLocation;
+extern PFNGLLINKPROGRAMPROC _glLinkProgram;
+extern PFNGLUNIFORM1IPROC _glUniform1i;
+extern PFNGLUNIFORM2FPROC _glUniform2f;
+extern PFNGLUNIFORM2FVPROC _glUniform2fv;
+extern PFNGLUNIFORM3FVPROC _glUniform3fv;
+extern PFNGLUNIFORM4FVPROC _glUniform4fv;
+extern PFNGLUNIFORM1FPROC _glUniform1f;
+extern PFNGLUNIFORMMATRIX4FVPROC _glUniformMatrix4fv;
+extern PFNGLBINDFRAMEBUFFERPROC _glBindFramebuffer;
+extern PFNGLGENFRAMEBUFFERSPROC _glGenFramebuffers;
+extern PFNGLCHECKFRAMEBUFFERSTATUSPROC _glCheckFramebufferStatus;
+extern PFNGLDELETEFRAMEBUFFERSPROC _glDeleteFramebuffers;
+extern PFNGLGETUNIFORMLOCATIONPROC _glGetUniformLocation;
+extern PFNGLFRAMEBUFFERTEXTURE2DPROC _glFramebufferTexture2D;
+extern PFNGLCOMPRESSEDTEXIMAGE2DPROC _glCompressedTexImage2D;
+extern PFNGLBINDBUFFERPROC _glBindBuffer;
+extern PFNGLGENBUFFERSPROC _glGenBuffers;
+extern PFNGLBUFFERDATAPROC _glBufferData;
+extern PFNGLGETPROGRAMIVPROC _glGetProgramiv;
+extern PFNGLGENERATEMIPMAPPROC _glGenerateMipmap;
+extern PFNGLSTENCILOPSEPARATEPROC _glStencilOpSeparate;
+extern PFNGLGENRENDERBUFFERSPROC _glGenRenderbuffers;
+extern PFNGLBINDRENDERBUFFERPROC _glBindRenderbuffer;
+extern PFNGLRENDERBUFFERSTORAGEPROC _glRenderbufferStorage;
+extern PFNGLFRAMEBUFFERRENDERBUFFERPROC _glFramebufferRenderbuffer;
+extern PFNGLDELETERENDERBUFFERSPROC _glDeleteRenderbuffers;
+extern PFNGLDELETESHADERPROC _glDeleteShader;
+extern PFNGLDELETEBUFFERSPROC _glDeleteBuffers;
+extern PFNGLGETPROGRAMINFOLOGPROC _glGetProgramInfoLog;
+extern PFNGLBLENDEQUATIONPROC _glBlendEquation;
+extern PFNGLBLENDFUNCSEPARATEPROC _glBlendFuncSeparate;
+extern PFNGLBLENDEQUATIONSEPARATEPROC _glBlendEquationSeparate;
+extern PFNGLGETATTRIBLOCATIONPROC _glGetAttribLocation;
 //!--pfngl-end--!
 //!--pfngl-end--!
 }
 }
 
 
@@ -143,6 +144,7 @@ extern "C"
 #define oxglCreateProgram DECLARE_GLEXT(glCreateProgram)
 #define oxglCreateProgram DECLARE_GLEXT(glCreateProgram)
 #define oxglAttachShader DECLARE_GLEXT(glAttachShader)
 #define oxglAttachShader DECLARE_GLEXT(glAttachShader)
 #define oxglCompileShader DECLARE_GLEXT(glCompileShader)
 #define oxglCompileShader DECLARE_GLEXT(glCompileShader)
+#define oxglDetachShader DECLARE_GLEXT(glDetachShader)
 #define oxglBindAttribLocation DECLARE_GLEXT(glBindAttribLocation)
 #define oxglBindAttribLocation DECLARE_GLEXT(glBindAttribLocation)
 #define oxglLinkProgram DECLARE_GLEXT(glLinkProgram)
 #define oxglLinkProgram DECLARE_GLEXT(glLinkProgram)
 #define oxglUniform1i DECLARE_GLEXT(glUniform1i)
 #define oxglUniform1i DECLARE_GLEXT(glUniform1i)

+ 1 - 0
tools/others/genfn.py

@@ -19,6 +19,7 @@ funcs = ["glShaderSource",
          "glCreateProgram",
          "glCreateProgram",
          "glAttachShader",
          "glAttachShader",
          "glCompileShader",
          "glCompileShader",
+         "glDetachShader",
          "glBindAttribLocation",
          "glBindAttribLocation",
          "glLinkProgram",
          "glLinkProgram",
          "glUniform1i",
          "glUniform1i",