Makefile.minimal
author Sam Lantinga <slouken@libsdl.org>
Wed, 18 Oct 2017 08:52:04 -0700
changeset 11630 ad4b5d85edee
parent 7667 be1cc6f55840
child 12130 24142c5073a4
permissions -rw-r--r--
Fixed bug 3821 - Allow SDL_CreateWindow and SDL_CreateRenderer with OpenGL ES 3.0 (GLES3) for Angle (Windows)

Carlos

Angle supports GLES3 but when using these functions (SDL_CreateWindow and SDL_CreateRenderer), defaults again to GLES2.0.

A current workaround (hack) to retrieve a GLES3.0 context with Angle is:

1) set

SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);

after InitSDL AND after calling SDL_CreateWindow (before SDL_CreateRenderer)

2) Comment lines 2032-2044 in SDL_render_gles2.c, funtion GLES2_CreateRenderer

window_flags = SDL_GetWindowFlags(window);
if (!(window_flags & SDL_WINDOW_OPENGL) ||
profile_mask != SDL_GL_CONTEXT_PROFILE_ES || major != RENDERER_CONTEXT_MAJOR || minor != RENDERER_CONTEXT_MINOR) {

changed_window = SDL_TRUE;
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, RENDERER_CONTEXT_MAJOR);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, RENDERER_CONTEXT_MINOR);

if (SDL_RecreateWindow(window, window_flags | SDL_WINDOW_OPENGL) < 0) {
goto error;
}
}

This retrives a GLES3 context as confirmed using glGetString(GL_VERSION). This should be fixed by modifying a few if's.
     1 # Makefile to build the SDL library
     2 
     3 INCLUDE = -I./include
     4 CFLAGS  = -g -O2 $(INCLUDE)
     5 AR	= ar
     6 RANLIB	= ranlib
     7 
     8 TARGET  = libSDL.a
     9 SOURCES = \
    10 	src/*.c \
    11 	src/audio/*.c \
    12 	src/audio/dummy/*.c \
    13 	src/cpuinfo/*.c \
    14 	src/events/*.c \
    15 	src/file/*.c \
    16 	src/haptic/*.c \
    17 	src/haptic/dummy/*.c \
    18 	src/joystick/*.c \
    19 	src/joystick/dummy/*.c \
    20 	src/loadso/dummy/*.c \
    21 	src/power/*.c \
    22 	src/filesystem/dummy/*.c \
    23 	src/render/*.c \
    24 	src/render/software/*.c \
    25 	src/stdlib/*.c \
    26 	src/thread/*.c \
    27 	src/thread/generic/*.c \
    28 	src/timer/*.c \
    29 	src/timer/dummy/*.c \
    30 	src/video/*.c \
    31 	src/video/dummy/*.c \
    32 
    33 OBJECTS = $(shell echo $(SOURCES) | sed -e 's,\.c,\.o,g')
    34 
    35 all: $(TARGET)
    36 
    37 $(TARGET): $(OBJECTS)
    38 	$(AR) crv $@ $^
    39 	$(RANLIB) $@
    40 
    41 clean:
    42 	rm -f $(TARGET) $(OBJECTS)