mirror of
https://github.com/godotengine/godot.git
synced 2026-01-03 18:11:19 +03:00
Merge pull request #94952 from alvinhochun/angle-d3d11-flip-y
Optimize ANGLE on D3D11 to remove an extra blit
This commit is contained in:
@@ -86,6 +86,10 @@
|
||||
#define strcpy strcpy_s
|
||||
#endif
|
||||
|
||||
#ifdef WINDOWS_ENABLED
|
||||
bool RasterizerGLES3::screen_flipped_y = false;
|
||||
#endif
|
||||
|
||||
bool RasterizerGLES3::gles_over_gl = true;
|
||||
|
||||
void RasterizerGLES3::begin_frame(double frame_step) {
|
||||
@@ -389,6 +393,12 @@ void RasterizerGLES3::_blit_render_target_to_screen(RID p_render_target, Display
|
||||
flip_y = false;
|
||||
}
|
||||
|
||||
#ifdef WINDOWS_ENABLED
|
||||
if (screen_flipped_y) {
|
||||
flip_y = !flip_y;
|
||||
}
|
||||
#endif
|
||||
|
||||
GLuint read_fbo = 0;
|
||||
glGenFramebuffers(1, &read_fbo);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, read_fbo);
|
||||
@@ -485,9 +495,14 @@ void RasterizerGLES3::set_boot_image(const Ref<Image> &p_image, const Color &p_c
|
||||
screenrect.position += ((Size2(win_size.width, win_size.height) - screenrect.size) / 2.0).floor();
|
||||
}
|
||||
|
||||
// Flip Y.
|
||||
screenrect.position.y = win_size.y - screenrect.position.y;
|
||||
screenrect.size.y = -screenrect.size.y;
|
||||
#ifdef WINDOWS_ENABLED
|
||||
if (!screen_flipped_y)
|
||||
#endif
|
||||
{
|
||||
// Flip Y.
|
||||
screenrect.position.y = win_size.y - screenrect.position.y;
|
||||
screenrect.size.y = -screenrect.size.y;
|
||||
}
|
||||
|
||||
// Normalize texture coordinates to window size.
|
||||
screenrect.position /= win_size;
|
||||
|
||||
Reference in New Issue
Block a user