diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 12 | ||||
-rw-r--r-- | src/OpenGLSupport.cpp | 10 | ||||
-rw-r--r-- | src/OpenGLSupport.h | 120 | ||||
-rw-r--r-- | src/frontend/qt_sdl/main.cpp | 11 |
4 files changed, 15 insertions, 138 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ea350e8..3bcecbc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -106,14 +106,16 @@ if (APPLE) endif() if (ENABLE_OGLRENDERER) - find_package(OpenGL REQUIRED) + find_package(PkgConfig REQUIRED) + pkg_check_modules(EPOXY REQUIRED epoxy) + + target_include_directories(core PRIVATE ${EPOXY_INCLUDE_DIRS}) if (WIN32) - target_link_libraries(core ole32 comctl32 ws2_32 opengl32) + target_link_libraries(core ole32 comctl32 ws2_32 ${EPOXY_LIBRARIES}) elseif (APPLE) - target_link_libraries(core ${OPENGL_gl_LIBRARY}) + target_link_libraries(core ${EPOXY_LIBRARIES}) else() - target_include_directories(core PRIVATE ${OPENGL_INCLUDE_DIR} ${OPENGL_EGL_INCLUDE_DIRS}) - target_link_libraries(core rt OpenGL::GL ${OPENGL_egl_LIBRARY}) + target_link_libraries(core rt ${EPOXY_LIBRARIES}) endif() else() if (WIN32) diff --git a/src/OpenGLSupport.cpp b/src/OpenGLSupport.cpp index 27b1480..01fa9d8 100644 --- a/src/OpenGLSupport.cpp +++ b/src/OpenGLSupport.cpp @@ -22,16 +22,6 @@ namespace OpenGL { -DO_PROCLIST(DECLPROC); - - -bool Init() -{ - DO_PROCLIST(LOADPROC); - - return true; -} - bool BuildShaderProgram(const char* vs, const char* fs, GLuint* ids, const char* name) { int len; diff --git a/src/OpenGLSupport.h b/src/OpenGLSupport.h index 44c511f..3533d60 100644 --- a/src/OpenGLSupport.h +++ b/src/OpenGLSupport.h @@ -22,131 +22,15 @@ #include <stdio.h> #include <string.h> -// TODO: different includes for each platform -#ifdef __APPLE__ - #include <OpenGL/gl3.h> - #include <OpenGL/gl3ext.h> -#else - #include <GL/gl.h> - #include <GL/glext.h> -#endif +#include <epoxy/gl.h> -#include "Platform.h" - - -// here, have some macro magic -// we at the melonDS company really love macro magic -// also, suggestion to the fine folks who write the OpenGL headers: -// pls make the type names follow the same capitalization as their -// matching function names, so this is more convenient to deal with - -#define DECLPROC(type, name) \ - PFN##type##PROC name ; - -#define DECLPROC_EXT(type, name) \ - extern PFN##type##PROC name ; - -#define LOADPROC(type, name) \ - name = (PFN##type##PROC)Platform::GL_GetProcAddress(#name); \ - if (!name) { printf("OpenGL: " #name " not found\n"); return false; } - - -// if you need more OpenGL functions, add them to the macronator here - - -#ifdef __WIN32__ -#define DO_PROCLIST_1_3(func) \ - func(GLACTIVETEXTURE, glActiveTexture); \ - func(GLBLENDCOLOR, glBlendColor); \ - -#else - -#define DO_PROCLIST_1_3(func) - -#endif - -#ifdef __APPLE__ - -#define DO_PROCLIST(func) - -#else - -#define DO_PROCLIST(func) \ - DO_PROCLIST_1_3(func) \ - \ - func(GLGENFRAMEBUFFERS, glGenFramebuffers); \ - func(GLDELETEFRAMEBUFFERS, glDeleteFramebuffers); \ - func(GLBINDFRAMEBUFFER, glBindFramebuffer); \ - func(GLFRAMEBUFFERTEXTURE, glFramebufferTexture); \ - func(GLBLITFRAMEBUFFER, glBlitFramebuffer); \ - func(GLCHECKFRAMEBUFFERSTATUS, glCheckFramebufferStatus); \ - \ - func(GLGENBUFFERS, glGenBuffers); \ - func(GLDELETEBUFFERS, glDeleteBuffers); \ - func(GLBINDBUFFER, glBindBuffer); \ - func(GLMAPBUFFER, glMapBuffer); \ - func(GLMAPBUFFERRANGE, glMapBufferRange); \ - func(GLUNMAPBUFFER, glUnmapBuffer); \ - func(GLBUFFERDATA, glBufferData); \ - func(GLBUFFERSUBDATA, glBufferSubData); \ - func(GLBINDBUFFERBASE, glBindBufferBase); \ - \ - func(GLGENVERTEXARRAYS, glGenVertexArrays); \ - func(GLDELETEVERTEXARRAYS, glDeleteVertexArrays); \ - func(GLBINDVERTEXARRAY, glBindVertexArray); \ - func(GLENABLEVERTEXATTRIBARRAY, glEnableVertexAttribArray); \ - func(GLDISABLEVERTEXATTRIBARRAY, glDisableVertexAttribArray); \ - func(GLVERTEXATTRIBPOINTER, glVertexAttribPointer); \ - func(GLVERTEXATTRIBIPOINTER, glVertexAttribIPointer); \ - func(GLBINDATTRIBLOCATION, glBindAttribLocation); \ - func(GLBINDFRAGDATALOCATION, glBindFragDataLocation); \ - \ - func(GLCREATESHADER, glCreateShader); \ - func(GLSHADERSOURCE, glShaderSource); \ - func(GLCOMPILESHADER, glCompileShader); \ - func(GLCREATEPROGRAM, glCreateProgram); \ - func(GLATTACHSHADER, glAttachShader); \ - func(GLLINKPROGRAM, glLinkProgram); \ - func(GLUSEPROGRAM, glUseProgram); \ - func(GLGETSHADERIV, glGetShaderiv); \ - func(GLGETSHADERINFOLOG, glGetShaderInfoLog); \ - func(GLGETPROGRAMIV, glGetProgramiv); \ - func(GLGETPROGRAMINFOLOG, glGetProgramInfoLog); \ - func(GLDELETESHADER, glDeleteShader); \ - func(GLDELETEPROGRAM, glDeleteProgram); \ - \ - func(GLUNIFORM1I, glUniform1i); \ - func(GLUNIFORM1UI, glUniform1ui); \ - func(GLUNIFORM2I, glUniform2i); \ - func(GLUNIFORM4UI, glUniform4ui); \ - func(GLUNIFORMBLOCKBINDING, glUniformBlockBinding); \ - func(GLGETUNIFORMLOCATION, glGetUniformLocation); \ - func(GLGETUNIFORMBLOCKINDEX, glGetUniformBlockIndex); \ - \ - func(GLFENCESYNC, glFenceSync); \ - func(GLDELETESYNC, glDeleteSync); \ - func(GLWAITSYNC, glWaitSync); \ - func(GLCLIENTWAITSYNC, glClientWaitSync); \ - \ - func(GLDRAWBUFFERS, glDrawBuffers); \ - \ - func(GLBLENDFUNCSEPARATE, glBlendFuncSeparate); \ - func(GLBLENDEQUATIONSEPARATE, glBlendEquationSeparate); \ - \ - func(GLCOLORMASKI, glColorMaski); \ - \ - func(GLGETSTRINGI, glGetStringi); \ +#include "Platform.h" -#endif namespace OpenGL { -DO_PROCLIST(DECLPROC_EXT); - -bool Init(); - bool BuildShaderProgram(const char* vs, const char* fs, GLuint* ids, const char* name); bool LinkShaderProgram(GLuint* ids); void DeleteShaderProgram(GLuint* ids); diff --git a/src/frontend/qt_sdl/main.cpp b/src/frontend/qt_sdl/main.cpp index be718ab..527a507 100644 --- a/src/frontend/qt_sdl/main.cpp +++ b/src/frontend/qt_sdl/main.cpp @@ -44,6 +44,10 @@ #include <SDL2/SDL.h> +#ifdef OGLRENDERER_ENABLED +#include "OpenGLSupport.h" +#endif + #include "main.h" #include "Input.h" #include "CheatsDialog.h" @@ -62,9 +66,6 @@ #include "NDS.h" #include "GBACart.h" -#ifdef OGLRENDERER_ENABLED -#include "OpenGLSupport.h" -#endif #include "GPU.h" #include "SPU.h" #include "Wifi.h" @@ -357,7 +358,7 @@ void EmuThread::run() if (hasOGL) { oglContext->makeCurrent(oglSurface); - videoRenderer = OpenGL::Init() ? Config::_3DRenderer : 0; + videoRenderer = Config::_3DRenderer; } else #endif @@ -423,7 +424,7 @@ void EmuThread::run() if (hasOGL) { oglContext->makeCurrent(oglSurface); - videoRenderer = OpenGL::Init() ? Config::_3DRenderer : 0; + videoRenderer = Config::_3DRenderer; } else #endif |