Fix rendering of ImmediateGeometry with UVs
When using set_uv or any attrib except vertex, the geometry broke.
This commit is contained in:
parent
fdc421836f
commit
ca497df2d3
|
@ -1561,7 +1561,7 @@ void RasterizerSceneGLES3::_render_geometry(RenderList::Element *e) {
|
|||
if (!c.normals.empty()) {
|
||||
|
||||
glEnableVertexAttribArray(VS::ARRAY_NORMAL);
|
||||
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(Vector3) * vertices, c.normals.ptr());
|
||||
glBufferSubData(GL_ARRAY_BUFFER, buf_ofs, sizeof(Vector3) * vertices, c.normals.ptr());
|
||||
glVertexAttribPointer(VS::ARRAY_NORMAL, 3, GL_FLOAT, false, sizeof(Vector3) * vertices, ((uint8_t *)NULL) + buf_ofs);
|
||||
buf_ofs += sizeof(Vector3) * vertices;
|
||||
|
||||
|
@ -1573,7 +1573,7 @@ void RasterizerSceneGLES3::_render_geometry(RenderList::Element *e) {
|
|||
if (!c.tangents.empty()) {
|
||||
|
||||
glEnableVertexAttribArray(VS::ARRAY_TANGENT);
|
||||
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(Plane) * vertices, c.tangents.ptr());
|
||||
glBufferSubData(GL_ARRAY_BUFFER, buf_ofs, sizeof(Plane) * vertices, c.tangents.ptr());
|
||||
glVertexAttribPointer(VS::ARRAY_TANGENT, 4, GL_FLOAT, false, sizeof(Plane) * vertices, ((uint8_t *)NULL) + buf_ofs);
|
||||
buf_ofs += sizeof(Plane) * vertices;
|
||||
|
||||
|
@ -1585,7 +1585,7 @@ void RasterizerSceneGLES3::_render_geometry(RenderList::Element *e) {
|
|||
if (!c.colors.empty()) {
|
||||
|
||||
glEnableVertexAttribArray(VS::ARRAY_COLOR);
|
||||
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(Color) * vertices, c.colors.ptr());
|
||||
glBufferSubData(GL_ARRAY_BUFFER, buf_ofs, sizeof(Color) * vertices, c.colors.ptr());
|
||||
glVertexAttribPointer(VS::ARRAY_COLOR, 4, GL_FLOAT, false, sizeof(Color), ((uint8_t *)NULL) + buf_ofs);
|
||||
buf_ofs += sizeof(Color) * vertices;
|
||||
|
||||
|
@ -1598,7 +1598,7 @@ void RasterizerSceneGLES3::_render_geometry(RenderList::Element *e) {
|
|||
if (!c.uvs.empty()) {
|
||||
|
||||
glEnableVertexAttribArray(VS::ARRAY_TEX_UV);
|
||||
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(Vector2) * vertices, c.uvs.ptr());
|
||||
glBufferSubData(GL_ARRAY_BUFFER, buf_ofs, sizeof(Vector2) * vertices, c.uvs.ptr());
|
||||
glVertexAttribPointer(VS::ARRAY_TEX_UV, 2, GL_FLOAT, false, sizeof(Vector2), ((uint8_t *)NULL) + buf_ofs);
|
||||
buf_ofs += sizeof(Vector2) * vertices;
|
||||
|
||||
|
@ -1610,7 +1610,7 @@ void RasterizerSceneGLES3::_render_geometry(RenderList::Element *e) {
|
|||
if (!c.uvs2.empty()) {
|
||||
|
||||
glEnableVertexAttribArray(VS::ARRAY_TEX_UV2);
|
||||
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(Vector2) * vertices, c.uvs2.ptr());
|
||||
glBufferSubData(GL_ARRAY_BUFFER, buf_ofs, sizeof(Vector2) * vertices, c.uvs2.ptr());
|
||||
glVertexAttribPointer(VS::ARRAY_TEX_UV2, 2, GL_FLOAT, false, sizeof(Vector2), ((uint8_t *)NULL) + buf_ofs);
|
||||
buf_ofs += sizeof(Vector2) * vertices;
|
||||
|
||||
|
@ -1620,7 +1620,7 @@ void RasterizerSceneGLES3::_render_geometry(RenderList::Element *e) {
|
|||
}
|
||||
|
||||
glEnableVertexAttribArray(VS::ARRAY_VERTEX);
|
||||
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(Vector3) * vertices, c.vertices.ptr());
|
||||
glBufferSubData(GL_ARRAY_BUFFER, buf_ofs, sizeof(Vector3) * vertices, c.vertices.ptr());
|
||||
glVertexAttribPointer(VS::ARRAY_VERTEX, 3, GL_FLOAT, false, sizeof(Vector3), ((uint8_t *)NULL) + buf_ofs);
|
||||
glDrawArrays(gl_primitive[c.primitive], 0, c.vertices.size());
|
||||
}
|
||||
|
@ -3054,7 +3054,7 @@ void RasterizerSceneGLES3::_fill_render_list(InstanceBase **p_cull_result, int p
|
|||
RasterizerStorageGLES3::Immediate *immediate = storage->immediate_owner.getptr(inst->base);
|
||||
ERR_CONTINUE(!immediate);
|
||||
|
||||
_add_geometry(immediate,inst,NULL,-1,p_shadow);
|
||||
_add_geometry(immediate, inst, NULL, -1, p_shadow);
|
||||
|
||||
} break;
|
||||
case VS::INSTANCE_PARTICLES: {
|
||||
|
|
Loading…
Reference in New Issue