diff options
| author | Juan Linietsky | 2018-01-02 18:44:09 -0300 |
|---|---|---|
| committer | Juan Linietsky | 2018-01-02 18:45:00 -0300 |
| commit | 2c226e4edf720ebbadf355e244b27082ca01f330 (patch) | |
| tree | fe03ed994ad67dd10d8e75b9016a80abd19f40cc /drivers/gles3/rasterizer_gles3.cpp | |
| parent | 14772d22136ac87e2bbf2b94639f79242330ae0a (diff) | |
| download | godot-2c226e4edf720ebbadf355e244b27082ca01f330.tar.gz godot-2c226e4edf720ebbadf355e244b27082ca01f330.tar.zst godot-2c226e4edf720ebbadf355e244b27082ca01f330.zip | |
Some fixes to improve precision and speed on Android. Fixes precision issues on Mali and PowerVR.
Diffstat (limited to 'drivers/gles3/rasterizer_gles3.cpp')
| -rw-r--r-- | drivers/gles3/rasterizer_gles3.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp index 5f3b42abf..7ae175864 100644 --- a/drivers/gles3/rasterizer_gles3.cpp +++ b/drivers/gles3/rasterizer_gles3.cpp @@ -338,6 +338,15 @@ void RasterizerGLES3::blit_render_target_to_screen(RID p_render_target, const Re RasterizerStorageGLES3::RenderTarget *rt = storage->render_target_owner.getornull(p_render_target); ERR_FAIL_COND(!rt); +#if 1 + + Size2 win_size = OS::get_singleton()->get_window_size(); + glBindFramebuffer(GL_READ_FRAMEBUFFER, rt->fbo); + glReadBuffer(GL_COLOR_ATTACHMENT0); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, RasterizerStorageGLES3::system_fbo); + glBlitFramebuffer(0, 0, rt->width, rt->height, p_screen_rect.position.x, win_size.height - p_screen_rect.position.y - p_screen_rect.size.height, p_screen_rect.position.x + p_screen_rect.size.width, win_size.height, GL_COLOR_BUFFER_BIT, GL_NEAREST); + +#else canvas->canvas_begin(); glDisable(GL_BLEND); glBindFramebuffer(GL_FRAMEBUFFER, RasterizerStorageGLES3::system_fbo); @@ -350,6 +359,7 @@ void RasterizerGLES3::blit_render_target_to_screen(RID p_render_target, const Re canvas->draw_generic_textured_rect(p_screen_rect, Rect2(0, 0, 1, -1)); glBindTexture(GL_TEXTURE_2D, 0); canvas->canvas_end(); +#endif } void RasterizerGLES3::end_frame(bool p_swap_buffers) { |
