Support using the OpenGL3 renderer with SDL 1.2

This commit is contained in:
Cameron Cawley 2020-06-25 17:12:50 +01:00
parent 9b81f45381
commit 5328426b4b
2 changed files with 54 additions and 0 deletions

View file

@ -440,6 +440,8 @@ elseif(BACKEND_PLATFORM MATCHES "SDL2" AND BACKEND_RENDERER MATCHES "SDLTexture"
elseif(BACKEND_PLATFORM MATCHES "SDL2" AND BACKEND_RENDERER MATCHES "SDLSurface") elseif(BACKEND_PLATFORM MATCHES "SDL2" AND BACKEND_RENDERER MATCHES "SDLSurface")
elseif(BACKEND_PLATFORM MATCHES "SDL2" AND BACKEND_RENDERER MATCHES "Software") elseif(BACKEND_PLATFORM MATCHES "SDL2" AND BACKEND_RENDERER MATCHES "Software")
target_sources(CSE2 PRIVATE "src/Backends/Rendering/Window/Software/SDL2.cpp") target_sources(CSE2 PRIVATE "src/Backends/Rendering/Window/Software/SDL2.cpp")
elseif(BACKEND_PLATFORM MATCHES "SDL1" AND BACKEND_RENDERER MATCHES "OpenGL3")
target_sources(CSE2 PRIVATE "src/Backends/Rendering/Window/OpenGL3/SDL1.cpp")
elseif(BACKEND_PLATFORM MATCHES "SDL1" AND BACKEND_RENDERER MATCHES "Software") elseif(BACKEND_PLATFORM MATCHES "SDL1" AND BACKEND_RENDERER MATCHES "Software")
target_sources(CSE2 PRIVATE "src/Backends/Rendering/Window/Software/SDL1.cpp") target_sources(CSE2 PRIVATE "src/Backends/Rendering/Window/Software/SDL1.cpp")
elseif(BACKEND_PLATFORM MATCHES "GLFW3" AND BACKEND_RENDERER MATCHES "OpenGL3") elseif(BACKEND_PLATFORM MATCHES "GLFW3" AND BACKEND_RENDERER MATCHES "OpenGL3")

View file

@ -0,0 +1,52 @@
#include "../OpenGL.h"
#include <stddef.h>
#include <string>
#include <glad/glad.h>
#include "SDL.h"
#include "../../../Misc.h"
bool WindowBackend_OpenGL_CreateWindow(const char *window_title, int *screen_width, int *screen_height, bool fullscreen)
{
if (SDL_SetVideoMode(*screen_width, *screen_height, 0, SDL_RESIZABLE | SDL_OPENGL | (fullscreen ? SDL_FULLSCREEN : 0)) != NULL)
{
SDL_WM_SetCaption(window_title, NULL);
if (gladLoadGLLoader((GLADloadproc)SDL_GL_GetProcAddress))
{
// Check if the platform supports OpenGL 3.2
if (GLAD_GL_VERSION_3_2)
{
Backend_PostWindowCreation();
return true;
}
else
{
Backend_ShowMessageBox("Fatal error (OpenGL rendering backend)", "Your system does not support OpenGL 3.2");
}
}
else
{
Backend_ShowMessageBox("Fatal error (OpenGL rendering backend)", "Couldn't load OpenGL functions");
}
}
else
{
std::string error_message = std::string("Could not create window: ") + SDL_GetError();
Backend_ShowMessageBox("Fatal error (OpenGL rendering backend)", error_message.c_str());
}
return false;
}
void WindowBackend_OpenGL_DestroyWindow(void)
{
}
void WindowBackend_OpenGL_Display(void)
{
SDL_GL_SwapBuffers();
}