From a7bf8bfb35aa0a94c1c6b72f886cb1824ec89345 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Mon, 9 Jan 2017 14:42:40 -0800 Subject: [PATCH] Improve support for gDEBugger on Windows (close #452) --- project/src/graphics/opengl/OpenGL.h | 10 ++++ .../src/graphics/opengl/OpenGLExtensions.h | 46 ++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/project/src/graphics/opengl/OpenGL.h b/project/src/graphics/opengl/OpenGL.h index 3a6d878e4..1831b9cba 100644 --- a/project/src/graphics/opengl/OpenGL.h +++ b/project/src/graphics/opengl/OpenGL.h @@ -57,12 +57,22 @@ #elif defined (HX_WINDOWS) #include +#ifndef NATIVE_TOOLKIT_SDL_ANGLE #include +#endif typedef ptrdiff_t GLsizeiptrARB; #define NEED_EXTENSIONS +#ifdef NATIVE_TOOLKIT_SDL_ANGLE #define DYNAMIC_OGL +#define LIME_GLES +#endif + +#ifdef NATIVE_TOOLKIT_SDL_ANGLE +#include +#else #include #include +#endif #endif diff --git a/project/src/graphics/opengl/OpenGLExtensions.h b/project/src/graphics/opengl/OpenGLExtensions.h index ce8bd8f66..764b61d74 100644 --- a/project/src/graphics/opengl/OpenGLExtensions.h +++ b/project/src/graphics/opengl/OpenGLExtensions.h @@ -14,6 +14,9 @@ #ifdef LIME_SDL #include +#ifdef NATIVE_TOOLKIT_SDL_ANGLE +#include +#endif #endif @@ -24,14 +27,30 @@ #define OGL_EXT(func,ret,args) \ namespace lime { extern ret (CALLING_CONVENTION *func)args; } +#define EGL_EXT(func,ret,args) \ + namespace lime { extern ret (CALLING_CONVENTION *func)args; } + #elif defined(DEFINE_EXTENSION) #define OGL_EXT(func,ret,args) \ namespace lime { ret (CALLING_CONVENTION *func)args=0; } +#define EGL_EXT(func, ret, args) \ + namespace lime { ret (CALLING_CONVENTION *func)args=0; } + #elif defined(GET_EXTENSION) -#ifdef LIME_SDL +#if defined (LIME_SDL) && defined (NATIVE_TOOLKIT_SDL_ANGLE) + #define OGL_EXT(func,ret,args) \ + {\ + *(void **)&lime::func = (void *)SDL_GL_GetProcAddress(#func);\ + } + + #define EGL_EXT(func,ret,args) \ + {\ + *(void **)&lime::func = (void *)GetProcAddress((HMODULE)lime::OpenGLBindings::eglHandle.get (), #func);\ + } +#elif LIME_SDL #define OGL_EXT(func,ret,args) \ {\ *(void **)&lime::func = (void *)SDL_GL_GetProcAddress(#func);\ @@ -164,7 +183,11 @@ OGL_EXT(glBlendFunc,void, (GLenum sfactor, GLenum dfactor)); OGL_EXT(glClear,void, (GLbitfield mask)); OGL_EXT(glClearColor,void, (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)); //OGL_EXT(glClearColorx,void, (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)); +#if !defined(LIME_GLES) OGL_EXT(glClearDepth,void, (GLclampd depth)); +#else +OGL_EXT(glClearDepthf,void, (GLclampf depth)); +#endif //OGL_EXT(glClearDepthx,void, (GLclampx depth)); OGL_EXT(glClearStencil,void, (GLint s)); OGL_EXT(glClientActiveTexture,void, (GLenum texture)); @@ -180,7 +203,11 @@ OGL_EXT(glCullFace,void, (GLenum mode)); OGL_EXT(glDeleteTextures,void, (GLsizei n, const GLuint *textures)); OGL_EXT(glDepthFunc,void, (GLenum func)); OGL_EXT(glDepthMask,void, (GLboolean flag)); +#if !defined(LIME_GLES) OGL_EXT(glDepthRange,void, (GLclampd zNear, GLclampd zFar)); +#else +OGL_EXT(glDepthRangef,void, (GLclampf nearVal,GLclampf farVal)); +#endif //OGL_EXT(glDepthRangex,void, (GLclampx zNear, GLclampx zFar)); OGL_EXT(glDisable,void, (GLenum cap)); OGL_EXT(glDisableClientState,void, (GLenum array)); @@ -201,6 +228,9 @@ OGL_EXT(glGenTextures,void, (GLsizei n, GLuint *textures)); OGL_EXT(glGetError,GLenum, (void)); OGL_EXT(glGetFloatv,void, (GLenum pname, GLfloat* params)); OGL_EXT(glGetIntegerv,void, (GLenum pname, GLint *params)); +#ifdef LIME_GLES +OGL_EXT(glGetShaderPrecisionFormat,void, (GLenum shaderType, GLenum precisionType, GLint *range, GLint *precision)); +#endif OGL_EXT(glGetString, const GLubyte *,(GLenum name)); OGL_EXT(glHint,void, (GLenum target, GLenum mode)); OGL_EXT(glLightModelf,void, (GLenum pname, GLfloat param)); @@ -267,10 +297,22 @@ OGL_EXT(glGetTexParameteriv,void,(GLenum target, GLenum pname, GLint * params) OGL_EXT(glIsTexture, GLboolean, ( GLuint texture) ); OGL_EXT(glIsEnabled, GLboolean, ( GLuint texture) ); - +#ifdef NATIVE_TOOLKIT_SDL_ANGLE +EGL_EXT(eglBindTexImage, EGLBoolean, (EGLDisplay dpy, EGLSurface surface, EGLint buffer)); +EGL_EXT(eglChooseConfig, EGLBoolean, (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)); +EGL_EXT(eglCreatePbufferSurface, EGLSurface, (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)); +EGL_EXT(eglDestroySurface, EGLBoolean, (EGLDisplay display, EGLSurface surface)); +EGL_EXT(eglGetDisplay, EGLDisplay, (EGLNativeDisplayType display_id)); +EGL_EXT(eglGetError, EGLint, (void)); +EGL_EXT(eglGetConfigs, EGLBoolean, (EGLDisplay dpy, EGLConfig *configs,EGLint config_size, EGLint *num_config)); +EGL_EXT(eglGetConfigAttrib, EGLBoolean, (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)); +EGL_EXT(eglReleaseTexImage, EGLBoolean, (EGLDisplay display, EGLSurface surface, EGLint buffer)); +EGL_EXT(eglQuerySurfacePointerANGLE, EGLBoolean, (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value)); +#endif #endif #undef OGL_EXT +#undef EGL_EXT #undef CALLING_CONVENTION