Procházet zdrojové kódy

Fixed proper texture binding for sprite material, fixes #13987

Juan Linietsky před 7 roky
rodič
revize
c858dbdc4e

+ 1 - 1
drivers/gles3/rasterizer_canvas_gles3.cpp

@@ -1150,7 +1150,7 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons
 					glBindTexture(t->target, t->tex_id);
 					glBindTexture(t->target, t->tex_id);
 				}
 				}
 
 
-			} else if (!shader_ptr) {
+			} else {
 				state.canvas_shader.set_custom_shader(0);
 				state.canvas_shader.set_custom_shader(0);
 				state.canvas_shader.bind();
 				state.canvas_shader.bind();
 			}
 			}

+ 13 - 1
drivers/gles3/rasterizer_scene_gles3.cpp

@@ -1541,7 +1541,19 @@ void RasterizerSceneGLES3::_render_geometry(RenderList::Element *e) {
 
 
 				if (c.texture.is_valid() && storage->texture_owner.owns(c.texture)) {
 				if (c.texture.is_valid() && storage->texture_owner.owns(c.texture)) {
 
 
-					const RasterizerStorageGLES3::Texture *t = storage->texture_owner.get(c.texture);
+					RasterizerStorageGLES3::Texture *t = storage->texture_owner.get(c.texture);
+
+					t = t->get_ptr(); //resolve for proxies
+#ifdef TOOLS_ENABLED
+					if (t->detect_3d) {
+						t->detect_3d(t->detect_3d_ud);
+					}
+#endif
+
+					if (t->render_target) {
+						t->render_target->used_in_frame = true;
+					}
+
 					glActiveTexture(GL_TEXTURE0);
 					glActiveTexture(GL_TEXTURE0);
 					glBindTexture(t->target, t->tex_id);
 					glBindTexture(t->target, t->tex_id);
 					restore_tex = true;
 					restore_tex = true;