//Pobrane z http://www.opengl.org/registry/ //#include #include "wglext.h" #include "glext.h" /* Do COknoGL::InitWGL */ /* //wyjete z glext.h #define GL_MAJOR_VERSION 0x821B #define GL_MINOR_VERSION 0x821C //wyjete z wglext.h #define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 #define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 #define WGL_CONTEXT_FLAGS_ARB 0x2094 #define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 #define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 #define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 #define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int *attribList); */ PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB; /* Do COknoGL::InitBuforWerteksow i COknoGL::UsunBuforWerteksow */ /* //VAO //#define GL_VERTEX_ARRAY_BINDING 0x85B5 typedef void (WINAPI * PFNGLBINDVERTEXARRAYPROC) (GLuint array); typedef void (WINAPI * PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays); typedef void (WINAPI * PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays); typedef GLboolean (WINAPI * PFNGLISVERTEXARRAYPROC) (GLuint array); */ PFNGLBINDVERTEXARRAYPROC glBindVertexArray; PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays; PFNGLGENVERTEXARRAYSPROC glGenVertexArrays; PFNGLISVERTEXARRAYPROC glIsVertexArray; //VBO /* typedef ptrdiff_t GLsizeiptr; #define GL_ARRAY_BUFFER 0x8892 #define GL_STATIC_DRAW 0x88E4 typedef void (WINAPI * PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); typedef void (WINAPI * PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); typedef void (WINAPI * PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); typedef GLboolean (WINAPI * PFNGLISBUFFERPROC) (GLuint buffer); typedef void (WINAPI * PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); */ PFNGLBINDBUFFERPROC glBindBuffer; PFNGLDELETEBUFFERSPROC glDeleteBuffers; PFNGLGENBUFFERSPROC glGenBuffers; PFNGLISBUFFERPROC glIsBuffer; PFNGLBUFFERDATAPROC glBufferData; PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray; PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer; PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray; /* Shadery */ //funkcje obiektow shaderow PFNGLCREATESHADERPROC glCreateShader; PFNGLDELETESHADERPROC glDeleteShader; PFNGLSHADERSOURCEPROC glShaderSource; PFNGLCOMPILESHADERPROC glCompileShader; //obiekty programow PFNGLCREATEPROGRAMPROC glCreateProgram; PFNGLLINKPROGRAMPROC glLinkProgram; PFNGLUSEPROGRAMPROC glUseProgram; //funkcje obiektow (niektore ARB) PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB; PFNGLGETINFOLOGARBPROC glGetInfoLogARB; PFNGLDELETEOBJECTARBPROC glDeleteObjectARB; PFNGLATTACHOBJECTARBPROC glAttachObjectARB; //usunac nieuzywane!!?!?!?!?!?!?!?! PFNGLATTACHSHADERPROC glAttachShader; PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation; PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation; PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv; PFNGLUNIFORMMATRIX4DVPROC glUniformMatrix4dv; /* Pobieranie adresow funkcji */ void InitAPI() { //do COknoGL::InitWGL wglCreateContextAttribsARB = reinterpret_cast(::wglGetProcAddress("wglCreateContextAttribsARB")); //VAO glBindVertexArray = reinterpret_cast(::wglGetProcAddress("glBindVertexArray")); glDeleteVertexArrays = reinterpret_cast(::wglGetProcAddress("glDeleteVertexArrays")); glGenVertexArrays = reinterpret_cast(::wglGetProcAddress("glGenVertexArrays")); glIsVertexArray = reinterpret_cast(::wglGetProcAddress("glIsVertexArray")); //VBO glBindBuffer = reinterpret_cast(::wglGetProcAddress("glBindBuffer")); glDeleteBuffers = reinterpret_cast(::wglGetProcAddress("glDeleteBuffers")); glGenBuffers = reinterpret_cast(::wglGetProcAddress("glGenBuffers")); glIsBuffer = reinterpret_cast(::wglGetProcAddress("glIsBuffer")); glBufferData = reinterpret_cast(::wglGetProcAddress("glBufferData")); glEnableVertexAttribArray = reinterpret_cast(::wglGetProcAddress("glEnableVertexAttribArray")); glVertexAttribPointer = reinterpret_cast(::wglGetProcAddress("glVertexAttribPointer")); glDisableVertexAttribArray = reinterpret_cast(::wglGetProcAddress("glDisableVertexAttribArray")); //Shadery glCreateShader=reinterpret_cast(::wglGetProcAddress("glCreateShader")); glAttachShader=reinterpret_cast(::wglGetProcAddress("glAttachObject")); glDeleteShader=reinterpret_cast(::wglGetProcAddress("glDeleteShader")); glShaderSource=reinterpret_cast(::wglGetProcAddress("glShaderSource")); glCompileShader=reinterpret_cast(::wglGetProcAddress("glCompileShader")); glCreateProgram=reinterpret_cast(::wglGetProcAddress("glCreateProgram")); glLinkProgram=reinterpret_cast(::wglGetProcAddress("glLinkProgram")); glUseProgram=reinterpret_cast(::wglGetProcAddress("glUseProgram")); glGetObjectParameterivARB=reinterpret_cast(::wglGetProcAddress("glGetObjectParameterivARB")); glGetInfoLogARB=reinterpret_cast(::wglGetProcAddress("glGetInfoLogARB")); glDeleteObjectARB=reinterpret_cast(::wglGetProcAddress("glDeleteObject")); glAttachObjectARB=reinterpret_cast(::wglGetProcAddress("glAttachObjectARB")); glGetAttribLocation=reinterpret_cast(::wglGetProcAddress("glGetAttribLocation")); glGetUniformLocation=reinterpret_cast(::wglGetProcAddress("glGetUniformLocation")); glUniformMatrix4fv=reinterpret_cast(::wglGetProcAddress("glUniformMatrix4fv")); glUniformMatrix4dv=reinterpret_cast(::wglGetProcAddress("glUniformMatrix4dv")); }