diff options
author | sanikoyes <sanikoyes@163.com> | 2014-12-19 13:08:48 +0800 |
---|---|---|
committer | sanikoyes <sanikoyes@163.com> | 2014-12-19 13:08:48 +0800 |
commit | 0b7a5b84255a53138b3a092175de7b6b9f32b058 (patch) | |
tree | 89fdfc5453d62859d46e9b1b9e4d4b3f03f6e432 | |
parent | 04362defe7c5cb0d41164dcc533f0383a0edb98b (diff) |
Fix RasterizerGLES2::canvas_draw_polygon can't work correct at some devices(like Sumsung Note2)
in some devices, gpu doe's not support uint(32bit) indies
-rw-r--r-- | drivers/gles2/rasterizer_gles2.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp index 9f2fd032fa..79d163b019 100644 --- a/drivers/gles2/rasterizer_gles2.cpp +++ b/drivers/gles2/rasterizer_gles2.cpp @@ -8142,7 +8142,14 @@ void RasterizerGLES2::canvas_draw_polygon(int p_vertex_count, const int* p_indic if (p_indices) { - glDrawElements(GL_TRIANGLES, p_vertex_count, GL_UNSIGNED_INT, p_indices ); + static const int _max_draw_poly_indices = 8*1024; // change this size if needed!!! + ERR_FAIL_COND(p_vertex_count > _max_draw_poly_indices); + static uint16_t _draw_poly_indices[_max_draw_poly_indices]; + for (int i=0; i<p_vertex_count; i++) { + _draw_poly_indices[i] = p_indices[i]; + }; + glDrawElements(GL_TRIANGLES, p_vertex_count, GL_UNSIGNED_SHORT, _draw_poly_indices ); + //glDrawElements(GL_TRIANGLES, p_vertex_count, GL_UNSIGNED_INT, p_indices ); } else { glDrawArrays(GL_TRIANGLES,0,p_vertex_count); } |