When running on an iOS simulator. Is there anything I can do with SDL2 to get an OpenGL ES 3.0 instance? I have quite a few shaders which rely on #version 330 and I would love to be able to just switch to #version 300 es
Primary things I rely on are “layout” and “smooth” I think I can re-write these without too much effort, but I was hoping for some news about running at head.
I noticed I’m using “SDL_opengles2.h” though, I don’t see an “SDL_opengles3.h” header, maybe I’m doing something goofy or confused, relevant includes here:
#include <SDL.h> #ifdef HAVE_OPENGLES #include <SDL_opengl.h> #include <SDL_opengles2.h>
typedef GLfloat GLdouble; //opengles has no GLdouble
I don’t think the header files should affect the context you are getting. The only thing I can think of is to make sure you are setting those attributes before creating the context, but that seems rather obvious. Also, maybe it can depend on which xcode version / which ios simulator you are using as at least some of the actual old devices don’t support ES 3.
For me the the emulator gives these versions respectively:
OpenGL ES 2.0 APPLE-12.0.41
OpenGL ES 3.0 APPLE-12.0.41
I wonder why I’m getting an older version number for ES2. I’m using the latest Xcode. Maybe it’s the quite old simulator I was using to test (iPhone 4s).
For headers I’m personally using the platforms own header files directly with some if-defs. You can look into SDL_opengles2.h and see what it could look like.
for ios use #include <OpenGLES/ES3/gl.h>
for android and others use: #include <GLES3/gl3.h>
Still, as SDL is providing a header for ES 2 it should probably add, headers for 3.0, 3.1 and 3.2 too.