From 57b822a8a58cbc7ff7edd99a1d375b559a198c9e Mon Sep 17 00:00:00 2001 From: mittorn Date: Fri, 3 Jun 2016 19:45:43 +0600 Subject: [PATCH] Windows and core profile support --- GL/gl_entries.in | 5 +- GL/glesinterface.h | 308 ++++++++++++++++++++++++--------------------- eglwrap.cpp | 2 +- funcnames.h | 186 +++++++++++++++++++++++++++ nanoWrap.cpp | 10 ++ nanogl.cpp | 110 ++++++++++++++-- 6 files changed, 460 insertions(+), 161 deletions(-) create mode 100644 funcnames.h diff --git a/GL/gl_entries.in b/GL/gl_entries.in index 9ca48a8..57d7a87 100644 --- a/GL/gl_entries.in +++ b/GL/gl_entries.in @@ -181,4 +181,7 @@ GL_ENTRY(int,eglReleaseTexImage,int dpy, int surface, int buffer) GL_ENTRY(int,eglSurfaceAttrib,int dpy, int surface, int attribute, int value) - +#ifdef USE_CORE_PROFILE + GL_ENTRY(void,glOrtho,double left, double right, double bottom, double top, double zNear, double zFar) + GL_ENTRY(void,glDepthRange,double zNear, double zFar) +#endif diff --git a/GL/glesinterface.h b/GL/glesinterface.h index e8d42da..47fd584 100644 --- a/GL/glesinterface.h +++ b/GL/glesinterface.h @@ -34,6 +34,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define S #endif +#ifdef _WIN32 +#include //APIENTRY +#endif +#ifndef APIENTRY +#ifdef _MSC_VER +#define APIENTRY WINAPI +#else +#define APIENTRY +#endif +#endif + struct GlESInterface { int (*eglChooseConfig) (int dpy, const int *attrib_list, int *configs, int config_size, int *num_config) S; @@ -63,158 +74,163 @@ struct GlESInterface int (*eglTerminate) (int dpy) S; int (*eglWaitGL) (void) S; int (*eglWaitNative) (int engine) S; - void (*glActiveTexture) (unsigned int texture) S; - void (*glAlphaFunc) (unsigned int func, float ref) S; - void (*glAlphaFuncx) (unsigned int func, int ref) S; - void (*glBindTexture) (unsigned int target, unsigned int texture) S; - void (*glBlendFunc) (unsigned int sfactor, unsigned int dfactor) S; - void (*glClear) (unsigned int mask) S; - void (*glClearColor) (float red, float green, float blue, float alpha) S; - void (*glClearColorx) (int red, int green, int blue, int alpha) S; - void (*glClearDepthf) (float depth) S; - void (*glClearDepthx) (int depth) S; - void (*glClearStencil) (int s) S; - void (*glClientActiveTexture) (unsigned int texture) S; - void (*glColor4f) (float red, float green, float blue, float alpha) S; - void (*glColor4x) (int red, int green, int blue, int alpha) S; - void (*glColorMask) (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha) S; - void (*glColorPointer) (int size, unsigned int type, int stride, const void *pointer) S; - void (*glCompressedTexImage2D) (unsigned int target, int level, unsigned int internalformat, int width, int height, int border, int imageSize, const void *data) S; - void (*glCompressedTexSubImage2D) (unsigned int target, int level, int xoffset, int yoffset, int width, int height, unsigned int format, int imageSize, const void *data) S; - void (*glCopyTexImage2D) (unsigned int target, int level, unsigned int internalformat, int x, int y, int width, int height, int border) S; - void (*glCopyTexSubImage2D) (unsigned int target, int level, int xoffset, int yoffset, int x, int y, int width, int height) S; - void (*glCullFace) (unsigned int mode) S; - void (*glDeleteTextures) (int n, const unsigned int *textures) S; - void (*glDepthFunc) (unsigned int func) S; - void (*glDepthMask) (unsigned char flag) S; - void (*glDepthRangef) (float zNear, float zFar) S; - void (*glDepthRangex) (int zNear, int zFar) S; - void (*glDisable) (unsigned int cap) S; - void (*glDisableClientState) (unsigned int array) S; - void (*glDrawArrays) (unsigned int mode, int first, int count) S; - void (*glDrawElements) (unsigned int mode, int count, unsigned int type, const void *indices) S; - void (*glEnable) (unsigned int cap) S; - void (*glEnableClientState) (unsigned int array) S; - void (*glFinish) (void) S; - void (*glFlush) (void) S; - void (*glFogf) (unsigned int pname, float param) S; - void (*glFogfv) (unsigned int pname, const float *params) S; - void (*glFogx) (unsigned int pname, int param) S; - void (*glFogxv) (unsigned int pname, const int *params) S; - void (*glFrontFace) (unsigned int mode) S; - void (*glFrustumf) (float left, float right, float bottom, float top, float zNear, float zFar) S; - void (*glFrustumx) (int left, int right, int bottom, int top, int zNear, int zFar) S; - void (*glGenTextures) (int n, unsigned int *textures) S; - unsigned int (*glGetError) (void) S; - void (*glGetIntegerv) (unsigned int pname, int *params) S; - const unsigned char * (*glGetString) (unsigned int name) S; - void (*glHint) (unsigned int target, unsigned int mode) S; - void (*glLightModelf) (unsigned int pname, float param) S; - void (*glLightModelfv) (unsigned int pname, const float *params) S; - void (*glLightModelx) (unsigned int pname, int param) S; - void (*glLightModelxv) (unsigned int pname, const int *params) S; - void (*glLightf) (unsigned int light, unsigned int pname, float param) S; - void (*glLightfv) (unsigned int light, unsigned int pname, const float *params) S; - void (*glLightx) (unsigned int light, unsigned int pname, int param) S; - void (*glLightxv) (unsigned int light, unsigned int pname, const int *params) S; - void (*glLineWidth) (float width) S; - void (*glLineWidthx) (int width) S; - void (*glLoadIdentity) (void) S; - void (*glLoadMatrixf) (const float *m) S; - void (*glLoadMatrixx) (const int *m) S; - void (*glLogicOp) (unsigned int opcode) S; - void (*glMaterialf) (unsigned int face, unsigned int pname, float param) S; - void (*glMaterialfv) (unsigned int face, unsigned int pname, const float *params) S; - void (*glMaterialx) (unsigned int face, unsigned int pname, int param) S; - void (*glMaterialxv) (unsigned int face, unsigned int pname, const int *params) S; - void (*glMatrixMode) (unsigned int mode) S; - void (*glMultMatrixf) (const float *m) S; - void (*glMultMatrixx) (const int *m) S; - void (*glMultiTexCoord4f) (unsigned int target, float s, float t, float r, float q) S; - void (*glMultiTexCoord4x) (unsigned int target, int s, int t, int r, int q) S; - void (*glNormal3f) (float nx, float ny, float nz) S; - void (*glNormal3x) (int nx, int ny, int nz) S; - void (*glNormalPointer) (unsigned int type, int stride, const void *pointer) S; - void (*glOrthof) (float left, float right, float bottom, float top, float zNear, float zFar) S; - void (*glOrthox) (int left, int right, int bottom, int top, int zNear, int zFar) S; - void (*glPixelStorei) (unsigned int pname, int param) S; - void (*glPointSize) (float size) S; - void (*glPointSizex) (int size) S; - void (*glPolygonOffset) (float factor, float units) S; - void (*glPolygonOffsetx) (int factor, int units) S; - void (*glPopMatrix) (void) S; - void (*glPushMatrix) (void) S; - unsigned int (*glQueryMatrixxOES) (int mantissa[16], int exponent[16]) S; - void (*glReadPixels) (int x, int y, int width, int height, unsigned int format, unsigned int type, void *pixels) S; - void (*glRotatef) (float angle, float x, float y, float z) S; - void (*glRotatex) (int angle, int x, int y, int z) S; - void (*glSampleCoverage) (float value, unsigned char invert) S; - void (*glSampleCoveragex) (int value, unsigned char invert) S; - void (*glScalef) (float x, float y, float z) S; - void (*glScalex) (int x, int y, int z) S; - void (*glScissor) (int x, int y, int width, int height) S; - void (*glShadeModel) (unsigned int mode) S; - void (*glStencilFunc) (unsigned int func, int ref, unsigned int mask) S; - void (*glStencilMask) (unsigned int mask) S; - void (*glStencilOp) (unsigned int fail, unsigned int zfail, unsigned int zpass) S; - void (*glTexCoordPointer) (int size, unsigned int type, int stride, const void *pointer) S; - void (*glTexEnvf) (unsigned int target, unsigned int pname, float param) S; - void (*glTexEnvfv) (unsigned int target, unsigned int pname, const float *params) S; - void (*glTexEnvx) (unsigned int target, unsigned int pname, int param) S; - void (*glTexEnvxv) (unsigned int target, unsigned int pname, const int *params) S; - void (*glTexImage2D) (unsigned int target, int level, int internalformat, int width, int height, int border, unsigned int format, unsigned int type, const void *pixels) S; - void (*glTexParameterf) (unsigned int target, unsigned int pname, float param) S; - void (*glTexParameterx) (unsigned int target, unsigned int pname, int param) S; - void (*glTexSubImage2D) (unsigned int target, int level, int xoffset, int yoffset, int width, int height, unsigned int format, unsigned int type, const void *pixels) S; - void (*glTranslatef) (float x, float y, float z) S; - void (*glTranslatex) (int x, int y, int z) S; - void (*glVertexPointer) (int size, unsigned int type, int stride, const void *pointer) S; - void (*glViewport) (int x, int y, int width, int height) S; + void ( APIENTRY *glActiveTexture) (unsigned int texture) S; + void ( APIENTRY *glAlphaFunc) (unsigned int func, float ref) S; + void ( APIENTRY *glAlphaFuncx) (unsigned int func, int ref) S; + void ( APIENTRY *glBindTexture) (unsigned int target, unsigned int texture) S; + void ( APIENTRY *glBlendFunc) (unsigned int sfactor, unsigned int dfactor) S; + void ( APIENTRY *glClear) (unsigned int mask) S; + void ( APIENTRY *glClearColor) (float red, float green, float blue, float alpha) S; + void ( APIENTRY *glClearColorx) (int red, int green, int blue, int alpha) S; + void ( APIENTRY *glClearDepthf) (float depth) S; + void ( APIENTRY *glClearDepthx) (int depth) S; + void ( APIENTRY *glClearStencil) (int s) S; + void ( APIENTRY *glClientActiveTexture) (unsigned int texture) S; + void ( APIENTRY *glColor4f) (float red, float green, float blue, float alpha) S; + void ( APIENTRY *glColor4x) (int red, int green, int blue, int alpha) S; + void ( APIENTRY *glColorMask) (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha) S; + void ( APIENTRY *glColorPointer) (int size, unsigned int type, int stride, const void *pointer) S; + void ( APIENTRY *glCompressedTexImage2D) (unsigned int target, int level, unsigned int internalformat, int width, int height, int border, int imageSize, const void *data) S; + void ( APIENTRY *glCompressedTexSubImage2D) (unsigned int target, int level, int xoffset, int yoffset, int width, int height, unsigned int format, int imageSize, const void *data) S; + void ( APIENTRY *glCopyTexImage2D) (unsigned int target, int level, unsigned int internalformat, int x, int y, int width, int height, int border) S; + void ( APIENTRY *glCopyTexSubImage2D) (unsigned int target, int level, int xoffset, int yoffset, int x, int y, int width, int height) S; + void ( APIENTRY *glCullFace) (unsigned int mode) S; + void ( APIENTRY *glDeleteTextures) (int n, const unsigned int *textures) S; + void ( APIENTRY *glDepthFunc) (unsigned int func) S; + void ( APIENTRY *glDepthMask) (unsigned char flag) S; + void ( APIENTRY *glDepthRangef) (float zNear, float zFar) S; + void ( APIENTRY *glDepthRangex) (int zNear, int zFar) S; + void ( APIENTRY *glDisable) (unsigned int cap) S; + void ( APIENTRY *glDisableClientState) (unsigned int array) S; + void ( APIENTRY *glDrawArrays) (unsigned int mode, int first, int count) S; + void ( APIENTRY *glDrawElements) (unsigned int mode, int count, unsigned int type, const void *indices) S; + void ( APIENTRY *glEnable) (unsigned int cap) S; + void ( APIENTRY *glEnableClientState) (unsigned int array) S; + void ( APIENTRY *glFinish) (void) S; + void ( APIENTRY *glFlush) (void) S; + void ( APIENTRY *glFogf) (unsigned int pname, float param) S; + void ( APIENTRY *glFogfv) (unsigned int pname, const float *params) S; + void ( APIENTRY *glFogx) (unsigned int pname, int param) S; + void ( APIENTRY *glFogxv) (unsigned int pname, const int *params) S; + void ( APIENTRY *glFrontFace) (unsigned int mode) S; + void ( APIENTRY *glFrustumf) (float left, float right, float bottom, float top, float zNear, float zFar) S; + void ( APIENTRY *glFrustumx) (int left, int right, int bottom, int top, int zNear, int zFar) S; + void ( APIENTRY *glGenTextures) (int n, unsigned int *textures) S; + unsigned int ( APIENTRY *glGetError) (void) S; + void ( APIENTRY *glGetIntegerv) (unsigned int pname, int *params) S; + const unsigned char * ( APIENTRY *glGetString) (unsigned int name) S; + void ( APIENTRY *glHint) (unsigned int target, unsigned int mode) S; + void ( APIENTRY *glLightModelf) (unsigned int pname, float param) S; + void ( APIENTRY *glLightModelfv) (unsigned int pname, const float *params) S; + void ( APIENTRY *glLightModelx) (unsigned int pname, int param) S; + void ( APIENTRY *glLightModelxv) (unsigned int pname, const int *params) S; + void ( APIENTRY *glLightf) (unsigned int light, unsigned int pname, float param) S; + void ( APIENTRY *glLightfv) (unsigned int light, unsigned int pname, const float *params) S; + void ( APIENTRY *glLightx) (unsigned int light, unsigned int pname, int param) S; + void ( APIENTRY *glLightxv) (unsigned int light, unsigned int pname, const int *params) S; + void ( APIENTRY *glLineWidth) (float width) S; + void ( APIENTRY *glLineWidthx) (int width) S; + void ( APIENTRY *glLoadIdentity) (void) S; + void ( APIENTRY *glLoadMatrixf) (const float *m) S; + void ( APIENTRY *glLoadMatrixx) (const int *m) S; + void ( APIENTRY *glLogicOp) (unsigned int opcode) S; + void ( APIENTRY *glMaterialf) (unsigned int face, unsigned int pname, float param) S; + void ( APIENTRY *glMaterialfv) (unsigned int face, unsigned int pname, const float *params) S; + void ( APIENTRY *glMaterialx) (unsigned int face, unsigned int pname, int param) S; + void ( APIENTRY *glMaterialxv) (unsigned int face, unsigned int pname, const int *params) S; + void ( APIENTRY *glMatrixMode) (unsigned int mode) S; + void ( APIENTRY *glMultMatrixf) (const float *m) S; + void ( APIENTRY *glMultMatrixx) (const int *m) S; + void ( APIENTRY *glMultiTexCoord4f) (unsigned int target, float s, float t, float r, float q) S; + void ( APIENTRY *glMultiTexCoord4x) (unsigned int target, int s, int t, int r, int q) S; + void ( APIENTRY *glNormal3f) (float nx, float ny, float nz) S; + void ( APIENTRY *glNormal3x) (int nx, int ny, int nz) S; + void ( APIENTRY *glNormalPointer) (unsigned int type, int stride, const void *pointer) S; + void ( APIENTRY *glOrthof) (float left, float right, float bottom, float top, float zNear, float zFar) S; + void ( APIENTRY *glOrthox) (int left, int right, int bottom, int top, int zNear, int zFar) S; + void ( APIENTRY *glPixelStorei) (unsigned int pname, int param) S; + void ( APIENTRY *glPointSize) (float size) S; + void ( APIENTRY *glPointSizex) (int size) S; + void ( APIENTRY *glPolygonOffset) (float factor, float units) S; + void ( APIENTRY *glPolygonOffsetx) (int factor, int units) S; + void ( APIENTRY *glPopMatrix) (void) S; + void ( APIENTRY *glPushMatrix) (void) S; + unsigned int ( APIENTRY *glQueryMatrixxOES) (int mantissa[16], int exponent[16]) S; + void ( APIENTRY *glReadPixels) (int x, int y, int width, int height, unsigned int format, unsigned int type, void *pixels) S; + void ( APIENTRY *glRotatef) (float angle, float x, float y, float z) S; + void ( APIENTRY *glRotatex) (int angle, int x, int y, int z) S; + void ( APIENTRY *glSampleCoverage) (float value, unsigned char invert) S; + void ( APIENTRY *glSampleCoveragex) (int value, unsigned char invert) S; + void ( APIENTRY *glScalef) (float x, float y, float z) S; + void ( APIENTRY *glScalex) (int x, int y, int z) S; + void ( APIENTRY *glScissor) (int x, int y, int width, int height) S; + void ( APIENTRY *glShadeModel) (unsigned int mode) S; + void ( APIENTRY *glStencilFunc) (unsigned int func, int ref, unsigned int mask) S; + void ( APIENTRY *glStencilMask) (unsigned int mask) S; + void ( APIENTRY *glStencilOp) (unsigned int fail, unsigned int zfail, unsigned int zpass) S; + void ( APIENTRY *glTexCoordPointer) (int size, unsigned int type, int stride, const void *pointer) S; + void ( APIENTRY *glTexEnvf) (unsigned int target, unsigned int pname, float param) S; + void ( APIENTRY *glTexEnvfv) (unsigned int target, unsigned int pname, const float *params) S; + void ( APIENTRY *glTexEnvx) (unsigned int target, unsigned int pname, int param) S; + void ( APIENTRY *glTexEnvxv) (unsigned int target, unsigned int pname, const int *params) S; + void ( APIENTRY *glTexImage2D) (unsigned int target, int level, int internalformat, int width, int height, int border, unsigned int format, unsigned int type, const void *pixels) S; + void ( APIENTRY *glTexParameterf) (unsigned int target, unsigned int pname, float param) S; + void ( APIENTRY *glTexParameterx) (unsigned int target, unsigned int pname, int param) S; + void ( APIENTRY *glTexSubImage2D) (unsigned int target, int level, int xoffset, int yoffset, int width, int height, unsigned int format, unsigned int type, const void *pixels) S; + void ( APIENTRY *glTranslatef) (float x, float y, float z) S; + void ( APIENTRY *glTranslatex) (int x, int y, int z) S; + void ( APIENTRY *glVertexPointer) (int size, unsigned int type, int stride, const void *pointer) S; + void ( APIENTRY *glViewport) (int x, int y, int width, int height) S; int (*eglSwapInterval) (int dpy, int interval) S; - void (*glBindBuffer) (unsigned int target, unsigned int buffer) S; - void (*glBufferData) (unsigned int target, int size, const void *data, unsigned int usage) S; - void (*glBufferSubData) (unsigned int target, int offset,int size, const void *data) S; - void (*glClipPlanef) (unsigned int plane, const float *equation) S; - void (*glClipPlanex) (unsigned int plane, const int *equation) S; - void (*glColor4ub) (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha) S; - void (*glDeleteBuffers) (int n, const unsigned int *buffers) S; - void (*glGenBuffers) (int n, unsigned int *buffers) S; - void (*glGetBooleanv) (unsigned int pname, unsigned char *params) S; - void (*glGetBufferParameteriv) (unsigned int target, unsigned int pname, int *params) S; - void (*glGetClipPlanef) (unsigned int pname, float eqn[4]) S; - void (*glGetClipPlanex) (unsigned int pname, int eqn[4]) S; - void (*glGetFixedv) (unsigned int pname, int *params) S; - void (*glGetFloatv) (unsigned int pname, float *params) S; - void (*glGetLightfv) (unsigned int light, unsigned int pname, float *params) S; - void (*glGetLightxv) (unsigned int light, unsigned int pname, int *params) S; - void (*glGetMaterialfv) (unsigned int face, unsigned int pname, float *params) S; - void (*glGetMaterialxv) (unsigned int face, unsigned int pname, int *params) S; - void (*glGetPointerv) (unsigned int pname, void **params) S; - void (*glGetTexEnvfv) (unsigned int env, unsigned int pname, float *params) S; - void (*glGetTexEnviv) (unsigned int env, unsigned int pname, int *params) S; - void (*glGetTexEnvxv) (unsigned int env, unsigned int pname, int *params) S; - void (*glGetTexParameterfv) (unsigned int target, unsigned int pname, float *params) S; - void (*glGetTexParameteriv) (unsigned int target, unsigned int pname, int *params) S; - void (*glGetTexParameterxv) (unsigned int target, unsigned int pname, int *params) S; - unsigned char (*glIsBuffer) (unsigned int buffer) S; - unsigned char (*glIsEnabled) (unsigned int cap) S; - unsigned char (*glIsTexture) (unsigned int texture) S; - void (*glPointParameterf) (unsigned int pname, float param) S; - void (*glPointParameterfv) (unsigned int pname, const float *params) S; - void (*glPointParameterx) (unsigned int pname, int param) S; - void (*glPointParameterxv) (unsigned int pname, const int *params) S; - void (*glPointSizePointerOES) (unsigned int type, int stride, const void *pointer) S; - void (*glTexEnvi) (unsigned int target, unsigned int pname, int param) S; - void (*glTexEnviv) (unsigned int target, unsigned int pname, const int *params) S; - void (*glTexParameterfv) (unsigned int target, unsigned int pname, const float *params) S; - void (*glTexParameteri) (unsigned int target, unsigned int pname, int param) S; - void (*glTexParameteriv) (unsigned int target, unsigned int pname, const int *params) S; - void (*glTexParameterxv) (unsigned int target, unsigned int pname, const int *params) S; + void ( APIENTRY *glBindBuffer) (unsigned int target, unsigned int buffer) S; + void ( APIENTRY *glBufferData) (unsigned int target, int size, const void *data, unsigned int usage) S; + void ( APIENTRY *glBufferSubData) (unsigned int target, int offset,int size, const void *data) S; + void ( APIENTRY *glClipPlanef) (unsigned int plane, const float *equation) S; + void ( APIENTRY *glClipPlanex) (unsigned int plane, const int *equation) S; + void ( APIENTRY *glColor4ub) (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha) S; + void ( APIENTRY *glDeleteBuffers) (int n, const unsigned int *buffers) S; + void ( APIENTRY *glGenBuffers) (int n, unsigned int *buffers) S; + void ( APIENTRY *glGetBooleanv) (unsigned int pname, unsigned char *params) S; + void ( APIENTRY *glGetBufferParameteriv) (unsigned int target, unsigned int pname, int *params) S; + void ( APIENTRY *glGetClipPlanef) (unsigned int pname, float eqn[4]) S; + void ( APIENTRY *glGetClipPlanex) (unsigned int pname, int eqn[4]) S; + void ( APIENTRY *glGetFixedv) (unsigned int pname, int *params) S; + void ( APIENTRY *glGetFloatv) (unsigned int pname, float *params) S; + void ( APIENTRY *glGetLightfv) (unsigned int light, unsigned int pname, float *params) S; + void ( APIENTRY *glGetLightxv) (unsigned int light, unsigned int pname, int *params) S; + void ( APIENTRY *glGetMaterialfv) (unsigned int face, unsigned int pname, float *params) S; + void ( APIENTRY *glGetMaterialxv) (unsigned int face, unsigned int pname, int *params) S; + void ( APIENTRY *glGetPointerv) (unsigned int pname, void **params) S; + void ( APIENTRY *glGetTexEnvfv) (unsigned int env, unsigned int pname, float *params) S; + void ( APIENTRY *glGetTexEnviv) (unsigned int env, unsigned int pname, int *params) S; + void ( APIENTRY *glGetTexEnvxv) (unsigned int env, unsigned int pname, int *params) S; + void ( APIENTRY *glGetTexParameterfv) (unsigned int target, unsigned int pname, float *params) S; + void ( APIENTRY *glGetTexParameteriv) (unsigned int target, unsigned int pname, int *params) S; + void ( APIENTRY *glGetTexParameterxv) (unsigned int target, unsigned int pname, int *params) S; + unsigned char ( APIENTRY *glIsBuffer) (unsigned int buffer) S; + unsigned char ( APIENTRY *glIsEnabled) (unsigned int cap) S; + unsigned char ( APIENTRY *glIsTexture) (unsigned int texture) S; + void ( APIENTRY *glPointParameterf) (unsigned int pname, float param) S; + void ( APIENTRY *glPointParameterfv) (unsigned int pname, const float *params) S; + void ( APIENTRY *glPointParameterx) (unsigned int pname, int param) S; + void ( APIENTRY *glPointParameterxv) (unsigned int pname, const int *params) S; + void ( APIENTRY *glPointSizePointerOES) (unsigned int type, int stride, const void *pointer) S; + void ( APIENTRY *glTexEnvi) (unsigned int target, unsigned int pname, int param) S; + void ( APIENTRY *glTexEnviv) (unsigned int target, unsigned int pname, const int *params) S; + void ( APIENTRY *glTexParameterfv) (unsigned int target, unsigned int pname, const float *params) S; + void ( APIENTRY *glTexParameteri) (unsigned int target, unsigned int pname, int param) S; + void ( APIENTRY *glTexParameteriv) (unsigned int target, unsigned int pname, const int *params) S; + void ( APIENTRY *glTexParameterxv) (unsigned int target, unsigned int pname, const int *params) S; int (*eglBindTexImage) (int dpy, int surface, int buffer) S; int (*eglReleaseTexImage) (int dpy, int surface, int buffer) S; int (*eglSurfaceAttrib) (int dpy, int surface, int attribute, int value) S; +#ifdef USE_CORE_PROFILE + void ( APIENTRY *glOrtho) (double left, double right, double bottom, double top, double zNear, double zFar) S; + void ( APIENTRY *glDepthRange) (double zNear, double zFar) S; +#endif + }; #if !defined (__WINS__) #if defined(__TARGET_FPU_VFP) diff --git a/eglwrap.cpp b/eglwrap.cpp index 0e6bd20..7237c5b 100644 --- a/eglwrap.cpp +++ b/eglwrap.cpp @@ -28,7 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. extern "C++" GlESInterface* glEsImpl; extern "C++" void FlushOnStateChange(); -void gl_unimplemented(); +void APIENTRY gl_unimplemented(GLenum none); EGLint eglGetError (void) { diff --git a/funcnames.h b/funcnames.h new file mode 100644 index 0000000..8a88e29 --- /dev/null +++ b/funcnames.h @@ -0,0 +1,186 @@ + "eglChooseConfig", + "eglCopyBuffers", + "eglCreateContext", + "eglCreatePbufferSurface", + "eglCreatePixmapSurface", + "eglCreateWindowSurface", + "eglDestroyContext", + "eglDestroySurface", + "eglGetConfigAttrib", + "eglGetConfigs", + "eglGetCurrentContext", + "eglGetCurrentDisplay", + "eglGetCurrentSurface", + "eglGetDisplay", + "eglGetError", + + "eglGetProcAddress", + + "eglInitialize", + "eglMakeCurrent", + "eglQueryContext", + "eglQueryString", + "eglQuerySurface", + "eglSwapBuffers", + "eglTerminate", + "eglWaitGL", + "eglWaitNative", + + + "glActiveTexture", + "glAlphaFunc", + "glAlphaFuncx", + "glBindTexture", + "glBlendFunc", + "glClear", + "glClearColor", + "glClearColorx", + "glClearDepthf", + "glClearDepthx", + "glClearStencil", + "glClientActiveTexture", + "glColor4f", + "glColor4x", + "glColorMask", + "glColorPointer", + "glCompressedTexImage2D", + "glCompressedTexSubImage2D", + "glCopyTexImage2D", + "glCopyTexSubImage2D", + "glCullFace", + "glDeleteTextures", + "glDepthFunc", + "glDepthMask", + "glDepthRangef", + "glDepthRangex", + "glDisable", + "glDisableClientState", + "glDrawArrays", + "glDrawElements", + "glEnable", + "glEnableClientState", + "glFinish", + "glFlush", + "glFogf", + "glFogfv", + "glFogx", + "glFogxv", + "glFrontFace", + "glFrustumf", + "glFrustumx", + "glGenTextures", + "glGetError", + "glGetIntegerv", + "glGetString", + "glHint", + "glLightModelf", + "glLightModelfv", + "glLightModelx", + "glLightModelxv", + "glLightf", + "glLightfv", + "glLightx", + "glLightxv", + "glLineWidth", + "glLineWidthx", + "glLoadIdentity", + "glLoadMatrixf", + "glLoadMatrixx", + "glLogicOp", + "glMaterialf", + "glMaterialfv", + "glMaterialx", + "glMaterialxv", + "glMatrixMode", + "glMultMatrixf", + "glMultMatrixx", + "glMultiTexCoord4f", + "glMultiTexCoord4x", + "glNormal3f", + "glNormal3x", + "glNormalPointer", + "glOrthof", + "glOrthox", + "glPixelStorei", + "glPointSize", + "glPointSizex", + "glPolygonOffset", + "glPolygonOffsetx", + "glPopMatrix", + "glPushMatrix", + "glQueryMatrixxOES", + "glReadPixels", + "glRotatef", + "glRotatex", + "glSampleCoverage", + "glSampleCoveragex", + "glScalef", + "glScalex", + "glScissor", + "glShadeModel", + "glStencilFunc", + "glStencilMask", + "glStencilOp", + "glTexCoordPointer", + "glTexEnvf", + "glTexEnvfv", + "glTexEnvx", + "glTexEnvxv", + "glTexImage2D", + "glTexParameterf", + "glTexParameterx", + "glTexSubImage2D", + "glTranslatef", + "glTranslatex", + "glVertexPointer", + "glViewport", + "eglSwapInterval", + "glBindBuffer", + "glBufferData", + "glBufferSubData", + "glClipPlanef", + "glClipPlanex", + "glColor4ub", + "glDeleteBuffers", + "glGenBuffers", + "glGetBooleanv", + "glGetBufferParameteriv", + "glGetClipPlanef", + "glGetClipPlanex", + "glGetFixedv", + "glGetFloatv", + "glGetLightfv", + "glGetLightxv", + "glGetMaterialfv", + "glGetMaterialxv", + "glGetPointerv", + "glGetTexEnvfv", + "glGetTexEnviv", + "glGetTexEnvxv", + "glGetTexParameterfv", + "glGetTexParameteriv", + "glGetTexParameterxv", + "glIsBuffer", + "glIsEnabled", + "glIsTexture", + "glPointParameterf", + "glPointParameterfv", + "glPointParameterx", + "glPointParameterxv", + "glPointSizePointerOES", + "glTexEnvi", + "glTexEnviv", + "glTexParameterfv", + "glTexParameteri", + "glTexParameteriv", + "glTexParameterxv", + + + "eglBindTexImage", + "eglReleaseTexImage", + "eglSurfaceAttrib", + +#ifdef USE_CORE_PROFILE + "glOrtho", + "glDepthRange", +#endif diff --git a/nanoWrap.cpp b/nanoWrap.cpp index a30a009..c13aea3 100644 --- a/nanoWrap.cpp +++ b/nanoWrap.cpp @@ -324,7 +324,9 @@ void FlushOnStateChange() if (delayedttmuchange) { delayedttmuchange = GL_FALSE; +#ifndef USE_CORE_PROFILE glEsImpl->glActiveTexture(delayedtmutarget); +#endif } if (!vertexCount) @@ -994,7 +996,11 @@ void glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) void glOrtho (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) { FlushOnStateChange(); +#ifdef USE_CORE_PROFILE + glEsImpl->glOrtho(left,right,bottom,top, zNear,zFar); +#else glEsImpl->glOrthof(left,right,bottom,top, zNear,zFar); +#endif } void glMatrixMode (GLenum mode) @@ -1071,7 +1077,11 @@ void glDepthRange(GLclampf zNear, GLclampf zFar) nanoglState.depth_range_far = zFar; } FlushOnStateChange(); +#ifdef USE_CORE_PROFILE + glEsImpl->glDepthRange(zNear, zFar); +#else glEsImpl->glDepthRangef(zNear, zFar); +#endif } void glDepthFunc (GLenum func) diff --git a/nanogl.cpp b/nanogl.cpp index 11bd1ea..bd699da 100644 --- a/nanogl.cpp +++ b/nanogl.cpp @@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #include -#include + //#include @@ -42,19 +42,34 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG,__VA_ARGS__) #define LOGW(...) __android_log_print(ANDROID_LOG_WARN, LOG_TAG,__VA_ARGS__) #else +#ifndef _MSC_VER +#define LOGI(...) printf("I: "__VA_ARGS__);printf("\n") +#define LOGD(...) if(DEBUG_NANO) {printf("D: "__VA_ARGS__);printf("\n");} +#define LOGE(...) printf("E: "__VA_ARGS__);printf("\n") +#define LOGW(...) printf("W: "__VA_ARGS__);printf("\n") +#else +#define LOGI printf +#define LOGD printf +#define LOGE printf +#define LOGW printf -#define LOGI(...) printf("I: "__VA_ARGS__) -#define LOGD(...) if(DEBUG_NANO) printf("D: "__VA_ARGS__) -#define LOGE(...) printf("E: "__VA_ARGS__) -#define LOGW(...) printf("W: "__VA_ARGS__) +#endif +#endif +#ifdef _WIN32 +#include +#define dlopen(x,y) LoadLibraryA(x) +#define dlsym(x,y) (void*)GetProcAddress((HINSTANCE)x,y) +#define dlclose(x) FreeLibrary((HINSTANCE)x) +#else +#include #endif -#define GL_ENTRY(_r, _api, ...) #_api, +//#define GL_ENTRY(_r, _api, ...) #_api, static char const * const gl_names[] = { - #include "gl_entries.in" + #include "funcnames.h" NULL }; @@ -66,8 +81,10 @@ GlESInterface* glEsImpl = NULL; extern void InitGLStructs(); -void gl_unimplemented() { - LOGE ("Called unimplemented OpenGL ES API\n"); +void APIENTRY gl_unimplemented(GLenum none) { +#ifndef USE_CORE_PROFILE + LOGE ("Called unimplemented OpenGL ES API\n"); +#endif } void *nanoGL_GetProcAddress(const char *name) @@ -112,6 +129,19 @@ static int CreateGlEsInterface( const char * name, void * lib, void * lib1, void f = dlsym(lib, *api); // try libGLESxx_CM.so +#ifdef USE_CORE_PROFILE + // Hack: try ARB and EXT suffix + if (f == NULL) { + char namearb[256]; + snprintf( namearb, 256, "%sARB", *api ); + f = dlsym( lib, namearb ); + } + if (f == NULL) { + char namearb[256]; + snprintf( namearb, 256, "%sEXT", *api ); + f = dlsym( lib, namearb ); + } +#endif if (f == NULL) { LOGW( "<%s> not found in %s. Trying libEGL.so.", *api, name); //driver); @@ -139,7 +169,7 @@ static int CreateGlEsInterface( const char * name, void * lib, void * lib1, void *ptr++ = f; api++; - } + } return 1; } @@ -154,6 +184,60 @@ static int loadDriver(const char * name) { /** * Init */ +#ifdef _WIN32 +int nanoGL_Init() +{ + const char * lib1 = "opengl32.dll"; // Has both gl* & egl* funcs SDK < 1.5 + const char * lib2 = "opengl32.dll"; // Only gl* funcs SDK >= 1.5 + const char * lib3 = "opengl32.dll"; // Only egl* funcs SDK >= 1.5 + const char * driver; + + // load lib + LOGI("nanoGL: Init loading driver %s\n", lib1); + //LOG (ANDROID_LOG_DEBUG, LOG_TAG, "nanoGL: Init loading driver %s\n", lib1); + + if ( ! loadDriver(lib1) ) + { + LOGE("Failed to load driver %s. Trying %s\n", lib1, lib2); + + if ( ! loadDriver(lib2) ) { + LOGE ("Failed to load %s.\n", lib2); + return 0; + } + else + driver = lib2; + } + else + driver = lib1; + + void * eglLib; + + //if ( strcmp(driver, lib2) == 0 ) { + LOGD ("**** Will Load EGL subs from %s ****", lib3); + + eglLib = dlopen(lib3, RTLD_NOW | RTLD_LOCAL); + + if ( ! eglLib ) { + LOGE ( "Failed to load %s", lib3); + } + //} + + // Load API gl* for 1.5+ else egl* gl* + //if (CreateGlEsInterface(driver, glesLib, eglLib, NULL) == -1) + if ( !CreateGlEsInterface(driver, glesLib, eglLib, (void *) gl_unimplemented) == -1) + { + // release lib + LOGE ( "CreateGlEsInterface failed."); + + dlclose(glesLib); + return 0; + } + + // Init nanoGL + InitGLStructs(); + return 1; +} +#else int nanoGL_Init() { const char * lib1 = "libGLESv1_CM.so"; // Has both gl* & egl* funcs SDK < 1.5 @@ -206,17 +290,17 @@ int nanoGL_Init() InitGLStructs(); return 1; } - +#endif void nanoGL_Destroy() { LOGD ("nanoGL_Destroy"); if (glEsImpl) { - free( glEsImpl); + free( glEsImpl); glEsImpl = NULL; } // release lib dlclose(glesLib); } - + -- 2.29.2