Fixed magenta texture on iOS with OpenGL ES 2.0
This commit is contained in:
parent
ee38b15029
commit
f917e29ad7
2 changed files with 10 additions and 2 deletions
|
@ -111,6 +111,7 @@ typedef struct
|
||||||
#undef SDL_PROC
|
#undef SDL_PROC
|
||||||
SDL_bool GL_OES_framebuffer_object_supported;
|
SDL_bool GL_OES_framebuffer_object_supported;
|
||||||
GLES_FBOList *framebuffers;
|
GLES_FBOList *framebuffers;
|
||||||
|
GLuint window_framebuffer;
|
||||||
|
|
||||||
SDL_bool useDrawTexture;
|
SDL_bool useDrawTexture;
|
||||||
SDL_bool GL_OES_draw_texture_supported;
|
SDL_bool GL_OES_draw_texture_supported;
|
||||||
|
@ -356,6 +357,9 @@ GLES_CreateRenderer(SDL_Window * window, Uint32 flags)
|
||||||
if (SDL_GL_ExtensionSupported("GL_OES_framebuffer_object")) {
|
if (SDL_GL_ExtensionSupported("GL_OES_framebuffer_object")) {
|
||||||
data->GL_OES_framebuffer_object_supported = SDL_TRUE;
|
data->GL_OES_framebuffer_object_supported = SDL_TRUE;
|
||||||
renderer->info.flags |= SDL_RENDERER_TARGETTEXTURE;
|
renderer->info.flags |= SDL_RENDERER_TARGETTEXTURE;
|
||||||
|
|
||||||
|
data->glGetIntegerv(GL_FRAMEBUFFER_BINDING_OES, &value);
|
||||||
|
data->window_framebuffer = (GLuint)value;
|
||||||
}
|
}
|
||||||
data->framebuffers = NULL;
|
data->framebuffers = NULL;
|
||||||
|
|
||||||
|
@ -586,7 +590,7 @@ GLES_SetRenderTarget(SDL_Renderer * renderer, SDL_Texture * texture)
|
||||||
GLES_ActivateRenderer(renderer);
|
GLES_ActivateRenderer(renderer);
|
||||||
|
|
||||||
if (texture == NULL) {
|
if (texture == NULL) {
|
||||||
data->glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);
|
data->glBindFramebufferOES(GL_FRAMEBUFFER_OES, data->window_framebuffer);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -145,6 +145,7 @@ typedef struct GLES2_DriverContext
|
||||||
#include "SDL_gles2funcs.h"
|
#include "SDL_gles2funcs.h"
|
||||||
#undef SDL_PROC
|
#undef SDL_PROC
|
||||||
GLES2_FBOList *framebuffers;
|
GLES2_FBOList *framebuffers;
|
||||||
|
GLuint window_framebuffer;
|
||||||
|
|
||||||
int shader_format_count;
|
int shader_format_count;
|
||||||
GLenum *shader_formats;
|
GLenum *shader_formats;
|
||||||
|
@ -546,7 +547,7 @@ GLES2_SetRenderTarget(SDL_Renderer * renderer, SDL_Texture * texture)
|
||||||
GLenum status;
|
GLenum status;
|
||||||
|
|
||||||
if (texture == NULL) {
|
if (texture == NULL) {
|
||||||
data->glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
data->glBindFramebuffer(GL_FRAMEBUFFER, data->window_framebuffer);
|
||||||
} else {
|
} else {
|
||||||
texturedata = (GLES2_TextureData *) texture->driverdata;
|
texturedata = (GLES2_TextureData *) texture->driverdata;
|
||||||
data->glBindFramebuffer(GL_FRAMEBUFFER, texturedata->fbo->FBO);
|
data->glBindFramebuffer(GL_FRAMEBUFFER, texturedata->fbo->FBO);
|
||||||
|
@ -1394,6 +1395,7 @@ GLES2_CreateRenderer(SDL_Window *window, Uint32 flags)
|
||||||
GLboolean hasCompiler;
|
GLboolean hasCompiler;
|
||||||
#endif
|
#endif
|
||||||
Uint32 windowFlags;
|
Uint32 windowFlags;
|
||||||
|
GLint window_framebuffer;
|
||||||
|
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
|
||||||
|
@ -1485,6 +1487,8 @@ GLES2_CreateRenderer(SDL_Window *window, Uint32 flags)
|
||||||
#endif /* ZUNE_HD */
|
#endif /* ZUNE_HD */
|
||||||
|
|
||||||
rdata->framebuffers = NULL;
|
rdata->framebuffers = NULL;
|
||||||
|
rdata->glGetIntegerv(GL_FRAMEBUFFER_BINDING, &window_framebuffer);
|
||||||
|
rdata->window_framebuffer = (GLuint)window_framebuffer;
|
||||||
|
|
||||||
/* Populate the function pointers for the module */
|
/* Populate the function pointers for the module */
|
||||||
renderer->WindowEvent = &GLES2_WindowEvent;
|
renderer->WindowEvent = &GLES2_WindowEvent;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue