Compare commits
1 Commits
camera.29
...
macos_open
Author | SHA1 | Date | |
---|---|---|---|
3615b3ff15 |
@ -23,6 +23,22 @@ sc_display_init(struct sc_display *display, SDL_Window *window, bool mipmaps) {
|
|||||||
// starts with "opengl"
|
// starts with "opengl"
|
||||||
bool use_opengl = renderer_name && !strncmp(renderer_name, "opengl", 6);
|
bool use_opengl = renderer_name && !strncmp(renderer_name, "opengl", 6);
|
||||||
if (use_opengl) {
|
if (use_opengl) {
|
||||||
|
|
||||||
|
#ifdef SC_DISPLAY_FORCE_OPENGL_CORE_PROFILE
|
||||||
|
// Persuade macOS to give us something better than OpenGL 2.1.
|
||||||
|
// If we create a Core Profile context, we get the best OpenGL version.
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK,
|
||||||
|
SDL_GL_CONTEXT_PROFILE_CORE);
|
||||||
|
|
||||||
|
LOGD("Creating OpenGL Core Profile Context");
|
||||||
|
display->gl_context = SDL_GL_CreateContext(window);
|
||||||
|
if (!display->gl_context) {
|
||||||
|
LOGE("Could not create OpenGL context: %s", SDL_GetError());
|
||||||
|
SDL_DestroyRenderer(display->renderer);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
struct sc_opengl *gl = &display->gl;
|
struct sc_opengl *gl = &display->gl;
|
||||||
sc_opengl_init(gl);
|
sc_opengl_init(gl);
|
||||||
|
|
||||||
@ -51,6 +67,9 @@ sc_display_init(struct sc_display *display, SDL_Window *window, bool mipmaps) {
|
|||||||
|
|
||||||
void
|
void
|
||||||
sc_display_destroy(struct sc_display *display) {
|
sc_display_destroy(struct sc_display *display) {
|
||||||
|
#ifdef SC_DISPLAY_FORCE_OPENGL_CORE_PROFILE
|
||||||
|
SDL_GL_DeleteContext(display->gl_context);
|
||||||
|
#endif
|
||||||
if (display->texture) {
|
if (display->texture) {
|
||||||
SDL_DestroyTexture(display->texture);
|
SDL_DestroyTexture(display->texture);
|
||||||
}
|
}
|
||||||
|
@ -10,11 +10,19 @@
|
|||||||
#include "coords.h"
|
#include "coords.h"
|
||||||
#include "opengl.h"
|
#include "opengl.h"
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
# define SC_DISPLAY_FORCE_OPENGL_CORE_PROFILE
|
||||||
|
#endif
|
||||||
|
|
||||||
struct sc_display {
|
struct sc_display {
|
||||||
SDL_Renderer *renderer;
|
SDL_Renderer *renderer;
|
||||||
SDL_Texture *texture;
|
SDL_Texture *texture;
|
||||||
|
|
||||||
struct sc_opengl gl;
|
struct sc_opengl gl;
|
||||||
|
#ifdef SC_DISPLAY_FORCE_OPENGL_CORE_PROFILE
|
||||||
|
SDL_GLContext *gl_context;
|
||||||
|
#endif
|
||||||
|
|
||||||
bool mipmaps;
|
bool mipmaps;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user