Browse Source

Avoid failed viewport when size is too smal, fixes #9891

Juan Linietsky 8 years ago
parent
commit
b12455cde8
1 changed files with 5 additions and 5 deletions
  1. 5 5
      drivers/gles3/rasterizer_storage_gles3.cpp

+ 5 - 5
drivers/gles3/rasterizer_storage_gles3.cpp

@@ -2473,7 +2473,7 @@ void RasterizerStorageGLES3::_update_material(Material *material) {
 
 
 		glGenBuffers(1, &material->ubo_id);
 		glGenBuffers(1, &material->ubo_id);
 		glBindBuffer(GL_UNIFORM_BUFFER, material->ubo_id);
 		glBindBuffer(GL_UNIFORM_BUFFER, material->ubo_id);
-		glBufferData(GL_UNIFORM_BUFFER, material->shader->ubo_size, NULL, GL_DYNAMIC_DRAW);
+		glBufferData(GL_UNIFORM_BUFFER, material->shader->ubo_size, NULL, GL_STATIC_DRAW);
 		glBindBuffer(GL_UNIFORM_BUFFER, 0);
 		glBindBuffer(GL_UNIFORM_BUFFER, 0);
 		material->ubo_size = material->shader->ubo_size;
 		material->ubo_size = material->shader->ubo_size;
 	}
 	}
@@ -3768,7 +3768,7 @@ void RasterizerStorageGLES3::multimesh_allocate(RID p_multimesh, int p_instances
 
 
 		glGenBuffers(1, &multimesh->buffer);
 		glGenBuffers(1, &multimesh->buffer);
 		glBindBuffer(GL_ARRAY_BUFFER, multimesh->buffer);
 		glBindBuffer(GL_ARRAY_BUFFER, multimesh->buffer);
-		glBufferData(GL_ARRAY_BUFFER, multimesh->data.size() * sizeof(float), NULL, GL_DYNAMIC_DRAW);
+		glBufferData(GL_ARRAY_BUFFER, multimesh->data.size() * sizeof(float), NULL, GL_STATIC_DRAW);
 		glBindBuffer(GL_ARRAY_BUFFER, 0);
 		glBindBuffer(GL_ARRAY_BUFFER, 0);
 	}
 	}
 
 
@@ -5215,7 +5215,7 @@ void RasterizerStorageGLES3::particles_set_amount(RID p_particles, int p_amount)
 		glBindVertexArray(particles->particle_vaos[i]);
 		glBindVertexArray(particles->particle_vaos[i]);
 
 
 		glBindBuffer(GL_ARRAY_BUFFER, particles->particle_buffers[i]);
 		glBindBuffer(GL_ARRAY_BUFFER, particles->particle_buffers[i]);
-		glBufferData(GL_ARRAY_BUFFER, floats * sizeof(float), data, GL_DYNAMIC_DRAW);
+		glBufferData(GL_ARRAY_BUFFER, floats * sizeof(float), data, GL_STATIC_DRAW);
 
 
 		for (int i = 0; i < 6; i++) {
 		for (int i = 0; i < 6; i++) {
 			glEnableVertexAttribArray(i);
 			glEnableVertexAttribArray(i);
@@ -6198,7 +6198,7 @@ void RasterizerStorageGLES3::_render_target_allocate(RenderTarget *rt) {
 		rt->buffers.effects_active = true;
 		rt->buffers.effects_active = true;
 	}
 	}
 
 
-	if (!rt->flags[RENDER_TARGET_NO_SAMPLING]) {
+	if (!rt->flags[RENDER_TARGET_NO_SAMPLING] && rt->width >= 2 && rt->height >= 2) {
 
 
 		for (int i = 0; i < 2; i++) {
 		for (int i = 0; i < 2; i++) {
 
 
@@ -6511,7 +6511,7 @@ void RasterizerStorageGLES3::canvas_light_occluder_set_polylines(RID p_occluder,
 		if (!co->vertex_id) {
 		if (!co->vertex_id) {
 			glGenBuffers(1, &co->vertex_id);
 			glGenBuffers(1, &co->vertex_id);
 			glBindBuffer(GL_ARRAY_BUFFER, co->vertex_id);
 			glBindBuffer(GL_ARRAY_BUFFER, co->vertex_id);
-			glBufferData(GL_ARRAY_BUFFER, lc * 6 * sizeof(real_t), vw.ptr(), GL_DYNAMIC_DRAW);
+			glBufferData(GL_ARRAY_BUFFER, lc * 6 * sizeof(real_t), vw.ptr(), GL_STATIC_DRAW);
 		} else {
 		} else {
 
 
 			glBindBuffer(GL_ARRAY_BUFFER, co->vertex_id);
 			glBindBuffer(GL_ARRAY_BUFFER, co->vertex_id);