X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffg_gl2.h;h=ab8ba5c7da15e649fba51e86b5a9d13e8c10fdd2;hb=2c12c9eb8d63cabac2d4113b4f54fdf53da8368c;hp=2450f8d5cc4f55c8fdcc6ebfb1d26e90767a81d6;hpb=39c957d9929f0aba775c4a07a70b6124bc4b50e6;p=freeglut diff --git a/src/fg_gl2.h b/src/fg_gl2.h index 2450f8d..ab8ba5c 100644 --- a/src/fg_gl2.h +++ b/src/fg_gl2.h @@ -26,25 +26,57 @@ #ifndef FG_GL2_H #define FG_GL2_H -#ifndef APIENTRY -# define APIENTRY -#endif +#include +#include "fg_internal.h" + +#ifdef GL_ES_VERSION_2_0 +/* Use existing functions on GLES 2.0 */ + +#define FGH_ARRAY_BUFFER GL_ARRAY_BUFFER +#define FGH_STATIC_DRAW GL_STATIC_DRAW +#define FGH_ELEMENT_ARRAY_BUFFER GL_ELEMENT_ARRAY_BUFFER + +#define fghGenBuffers glGenBuffers +#define fghDeleteBuffers glDeleteBuffers +#define fghBindBuffer glBindBuffer +#define fghBufferData glBufferData +#define fghEnableVertexAttribArray glEnableVertexAttribArray +#define fghDisableVertexAttribArray glDisableVertexAttribArray +#define fghVertexAttribPointer glVertexAttribPointer + +#else +/* Load functions dynamically, they are not defined in e.g. win32's + OpenGL headers */ + +# ifndef APIENTRY +# define APIENTRY +# endif + +/* extension #defines, types and entries, avoiding a dependency on additional + libraries like GLEW or the GL/glext.h header */ +#define FGH_ARRAY_BUFFER 0x8892 +#define FGH_STATIC_DRAW 0x88E4 +#define FGH_ELEMENT_ARRAY_BUFFER 0x8893 + +typedef int fghGLsizeiptr; +typedef void (APIENTRY *FGH_PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (APIENTRY *FGH_PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRY *FGH_PFNGLBUFFERDATAPROC) (GLenum target, fghGLsizeiptr size, const GLvoid *data, GLenum usage); +typedef void (APIENTRY *FGH_PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers); +typedef void (APIENTRY *FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (APIENTRY *FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint); +typedef void (APIENTRY *FGH_PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + +FGH_PFNGLGENBUFFERSPROC fghGenBuffers; +FGH_PFNGLDELETEBUFFERSPROC fghDeleteBuffers; +FGH_PFNGLBINDBUFFERPROC fghBindBuffer; +FGH_PFNGLBUFFERDATAPROC fghBufferData; +FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray; +FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray; +FGH_PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer; + +# endif -typedef ptrdiff_t fghGLsizeiptr; -typedef void (APIENTRY *PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); -typedef void (APIENTRY *PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); -typedef void (APIENTRY *PFNGLBUFFERDATAPROC) (GLenum target, fghGLsizeiptr size, const GLvoid *data, GLenum usage); -typedef void (APIENTRY *PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers); -typedef void (APIENTRY *PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); -typedef void (APIENTRY *PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint); -typedef void (APIENTRY *PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); - -PFNGLGENBUFFERSPROC fghGenBuffers; -PFNGLDELETEBUFFERSPROC fghDeleteBuffers; -PFNGLBINDBUFFERPROC fghBindBuffer; -PFNGLBUFFERDATAPROC fghBufferData; -PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray; -PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray; -PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer; +extern void fgInitGL2(); #endif