Merge pull request #29496 from clayjohn/dlopen-fix-gles2
Use def ANDROID_ENABLED so android features are not included in web builds
This commit is contained in:
commit
0677383907
2 changed files with 19 additions and 8 deletions
|
@ -2931,14 +2931,16 @@ void RasterizerSceneGLES2::render_scene(const Transform &p_cam_transform, const
|
||||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||||
#elif IPHONE_ENABLED
|
#elif IPHONE_ENABLED
|
||||||
|
|
||||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, storage->frame.current_rt->multisample_fbo);
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, storage->frame.current_rt->multisample_fbo);
|
||||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, storage->frame.current_rt->fbo);
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, storage->frame.current_rt->fbo);
|
||||||
glResolveMultisampleFramebufferAPPLE();
|
glResolveMultisampleFramebufferAPPLE();
|
||||||
|
|
||||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||||
#else
|
#elif ANDROID_ENABLED
|
||||||
// In GLES2 Blit is not available, so just copy color texture manually
|
|
||||||
|
// In GLES2 AndroidBlit is not available, so just copy color texture manually
|
||||||
_copy_texture_to_front_buffer(storage->frame.current_rt->multisample_color);
|
_copy_texture_to_front_buffer(storage->frame.current_rt->multisample_color);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -2972,8 +2974,17 @@ void RasterizerSceneGLES2::render_scene(const Transform &p_cam_transform, const
|
||||||
|
|
||||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||||
#else
|
#elif IPHONE_ENABLED
|
||||||
// In GLES2 Blit is not available, so just copy color texture manually
|
|
||||||
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, storage->frame.current_rt->multisample_fbo);
|
||||||
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, storage->frame.current_rt->fbo);
|
||||||
|
glResolveMultisampleFramebufferAPPLE();
|
||||||
|
|
||||||
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||||
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||||
|
#elif ANDROID_ENABLED
|
||||||
|
|
||||||
|
// In GLES2 Android Blit is not available, so just copy color texture manually
|
||||||
_copy_texture_to_front_buffer(storage->frame.current_rt->multisample_color);
|
_copy_texture_to_front_buffer(storage->frame.current_rt->multisample_color);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@ GLuint RasterizerStorageGLES2::system_fbo = 0;
|
||||||
//void *glRenderbufferStorageMultisampleAPPLE;
|
//void *glRenderbufferStorageMultisampleAPPLE;
|
||||||
//void *glResolveMultisampleFramebufferAPPLE;
|
//void *glResolveMultisampleFramebufferAPPLE;
|
||||||
#define glRenderbufferStorageMultisample glRenderbufferStorageMultisampleAPPLE
|
#define glRenderbufferStorageMultisample glRenderbufferStorageMultisampleAPPLE
|
||||||
#else
|
#elif ANDROID_ENABLED
|
||||||
|
|
||||||
#include <GLES2/gl2ext.h>
|
#include <GLES2/gl2ext.h>
|
||||||
PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glRenderbufferStorageMultisampleEXT;
|
PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glRenderbufferStorageMultisampleEXT;
|
||||||
|
@ -4719,7 +4719,7 @@ void RasterizerStorageGLES2::_render_target_allocate(RenderTarget *rt) {
|
||||||
glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, color_internal_format, rt->width, rt->height);
|
glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, color_internal_format, rt->width, rt->height);
|
||||||
|
|
||||||
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rt->multisample_color);
|
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rt->multisample_color);
|
||||||
#else
|
#elif ANDROID_ENABLED
|
||||||
// Render to a texture in android
|
// Render to a texture in android
|
||||||
glGenTextures(1, &rt->multisample_color);
|
glGenTextures(1, &rt->multisample_color);
|
||||||
glBindTexture(GL_TEXTURE_2D, rt->multisample_color);
|
glBindTexture(GL_TEXTURE_2D, rt->multisample_color);
|
||||||
|
@ -5602,11 +5602,11 @@ void RasterizerStorageGLES2::initialize() {
|
||||||
//Manually load extensions for android and ios
|
//Manually load extensions for android and ios
|
||||||
|
|
||||||
#ifdef IPHONE_ENABLED
|
#ifdef IPHONE_ENABLED
|
||||||
|
// appears that IPhone doesn't need to dlopen TODO: test this rigorously before removing
|
||||||
//void *gles2_lib = dlopen(NULL, RTLD_LAZY);
|
//void *gles2_lib = dlopen(NULL, RTLD_LAZY);
|
||||||
//glRenderbufferStorageMultisampleAPPLE = dlsym(gles2_lib, "glRenderbufferStorageMultisampleAPPLE");
|
//glRenderbufferStorageMultisampleAPPLE = dlsym(gles2_lib, "glRenderbufferStorageMultisampleAPPLE");
|
||||||
//glResolveMultisampleFramebufferAPPLE = dlsym(gles2_lib, "glResolveMultisampleFramebufferAPPLE");
|
//glResolveMultisampleFramebufferAPPLE = dlsym(gles2_lib, "glResolveMultisampleFramebufferAPPLE");
|
||||||
#else
|
#elif ANDROID_ENABLED
|
||||||
|
|
||||||
void *gles2_lib = dlopen("libGLESv2.so", RTLD_LAZY);
|
void *gles2_lib = dlopen("libGLESv2.so", RTLD_LAZY);
|
||||||
glRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)dlsym(gles2_lib, "glRenderbufferStorageMultisampleEXT");
|
glRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)dlsym(gles2_lib, "glRenderbufferStorageMultisampleEXT");
|
||||||
|
|
Loading…
Reference in a new issue