|
|
@@ -997,13 +997,11 @@ void RasterizerCanvasGLES3::_canvas_item_render_commands(Item *p_item, Item *cur
|
|
|
glEnable(GL_SCISSOR_TEST);
|
|
|
//glScissor(viewport.x+current_clip->final_clip_rect.pos.x,viewport.y+ (viewport.height-(current_clip->final_clip_rect.pos.y+current_clip->final_clip_rect.size.height)),
|
|
|
//current_clip->final_clip_rect.size.width,current_clip->final_clip_rect.size.height);
|
|
|
-
|
|
|
- int x = current_clip->final_clip_rect.position.x;
|
|
|
int y = storage->frame.current_rt->height - (current_clip->final_clip_rect.position.y + current_clip->final_clip_rect.size.y);
|
|
|
- int w = current_clip->final_clip_rect.size.x;
|
|
|
- int h = current_clip->final_clip_rect.size.y;
|
|
|
+ if (storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_VFLIP])
|
|
|
+ y = current_clip->final_clip_rect.position.y;
|
|
|
|
|
|
- glScissor(x, y, w, h);
|
|
|
+ glScissor(current_clip->final_clip_rect.position.x, y, current_clip->final_clip_rect.size.x, current_clip->final_clip_rect.size.y);
|
|
|
|
|
|
reclip = false;
|
|
|
}
|
|
|
@@ -1138,7 +1136,11 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons
|
|
|
if (current_clip) {
|
|
|
|
|
|
glEnable(GL_SCISSOR_TEST);
|
|
|
- glScissor(current_clip->final_clip_rect.position.x, (rt_size.height - (current_clip->final_clip_rect.position.y + current_clip->final_clip_rect.size.height)), current_clip->final_clip_rect.size.width, current_clip->final_clip_rect.size.height);
|
|
|
+ int y = storage->frame.current_rt->height - (current_clip->final_clip_rect.position.y + current_clip->final_clip_rect.size.y);
|
|
|
+ if (storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_VFLIP])
|
|
|
+ y = current_clip->final_clip_rect.position.y;
|
|
|
+
|
|
|
+ glScissor(current_clip->final_clip_rect.position.x, y, current_clip->final_clip_rect.size.x, current_clip->final_clip_rect.size.y);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
@@ -1515,7 +1517,10 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons
|
|
|
if (reclip) {
|
|
|
|
|
|
glEnable(GL_SCISSOR_TEST);
|
|
|
- glScissor(current_clip->final_clip_rect.position.x, (rt_size.height - (current_clip->final_clip_rect.position.y + current_clip->final_clip_rect.size.height)), current_clip->final_clip_rect.size.width, current_clip->final_clip_rect.size.height);
|
|
|
+ int y = storage->frame.current_rt->height - (current_clip->final_clip_rect.position.y + current_clip->final_clip_rect.size.y);
|
|
|
+ if (storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_VFLIP])
|
|
|
+ y = current_clip->final_clip_rect.position.y;
|
|
|
+ glScissor(current_clip->final_clip_rect.position.x, y, current_clip->final_clip_rect.size.width, current_clip->final_clip_rect.size.height);
|
|
|
}
|
|
|
|
|
|
p_item_list = p_item_list->next;
|