Commit: f713f39182afac8617711a21e97d33d24a87733c Author: Antony Riakiotakis Date: Sun Dec 6 23:53:58 2015 +0100 Branches: temp_display_optimization https://developer.blender.org/rBf713f39182afac8617711a21e97d33d24a87733c
Merge branch 'master' into temp_display_optimization Conflicts: source/blender/blenkernel/intern/editderivedmesh.c source/blender/gpu/intern/gpu_buffers.c =================================================================== =================================================================== diff --cc source/blender/blenkernel/intern/editderivedmesh.c index c855c37,b6d009d..2886191 --- a/source/blender/blenkernel/intern/editderivedmesh.c +++ b/source/blender/blenkernel/intern/editderivedmesh.c @@@ -1002,61 -754,10 +1002,62 @@@ static void emDM_drawMappedFaces } if (has_vcol_preview || has_fcol_preview) { flag |= DM_DRAW_ALWAYS_SMOOTH; - glDisable(GL_LIGHTING); /* grr */ + /* weak, this logic should really be moved higher up */ + setMaterial = NULL; } + GPU_vertex_setup(dm); + + /* if we do selection, fill the selection buffer color */ + if (G.f & G_BACKBUFSEL) { + if (!(flag & DM_DRAW_SKIP_SELECT)) { + unsigned int *fi_map; + unsigned int start_element = 0; + - findex_buffer = GPU_buffer_alloc(dm->drawObject->tot_loop_verts * sizeof(int), false); ++ findex_buffer = GPU_buffer_alloc(dm->drawObject->tot_loop_verts * sizeof(int)); + fi_map = GPU_buffer_lock(findex_buffer, GPU_BINDING_ARRAY); + + if (fi_map) { + BMIter iter; + int j; + + BM_ITER_MESH_INDEX(efa, &iter, bm, BM_FACES_OF_MESH, i) { + int selcol = 0xFFFFFFFF; + + if (!skip_hidden || !BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) { + WM_framebuffer_index_get(i + 1, &selcol); + } + + for (j = 0; j < efa->len; j++) + fi_map[start_element++] = selcol; + } + + GPU_buffer_unlock(findex_buffer, GPU_BINDING_ARRAY); + GPU_buffer_bind_as_color(findex_buffer); + } + } + } - else { ++ else if (!skip_normals){ + /* no need to setup normals when selecting */ + GPU_normal_setup(dm); + } + GPU_triangle_setup(dm); + glShadeModel(GL_SMOOTH); + for (i = 0; i < dm->drawObject->totmaterial; i++) { + if (!setMaterial || setMaterial(dm->drawObject->materials[i].mat_nr + 1, NULL)) { + unsigned int totalelem = (skip_hidden) ? dm->drawObject->materials[i].totvisibleelems : + dm->drawObject->materials[i].totelements; + GPU_buffer_draw_elements(dm->drawObject->triangles, GL_TRIANGLES, + dm->drawObject->materials[i].start, totalelem); + } + } + glShadeModel(GL_FLAT); + GPU_buffers_unbind(); + + if (findex_buffer) + GPU_buffer_free(findex_buffer); + return; + if (bmdm->vertexCos) { short prev_mat_nr = -1; diff --cc source/blender/gpu/intern/gpu_buffers.c index d19b28e,3c44811..96ea244 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@@ -80,23 -80,21 +80,23 @@@ static size_t gpu_buffer_size_from_type const GPUBufferTypeSettings gpu_buffer_type_settings[] = { /* vertex */ - {GL_ARRAY_BUFFER_ARB, 3}, + {GL_ARRAY_BUFFER, 3}, /* normal */ - {GL_ARRAY_BUFFER_ARB, 4}, /* we copy 3 shorts per normal but we add a fourth for alignment */ + {GL_ARRAY_BUFFER, 4}, /* we copy 3 shorts per normal but we add a fourth for alignment */ /* mcol */ - {GL_ARRAY_BUFFER_ARB, 3}, + {GL_ARRAY_BUFFER, 3}, /* uv */ - {GL_ARRAY_BUFFER_ARB, 2}, + {GL_ARRAY_BUFFER, 2}, /* uv for texpaint */ - {GL_ARRAY_BUFFER_ARB, 4}, + {GL_ARRAY_BUFFER, 4}, /* edge */ - {GL_ELEMENT_ARRAY_BUFFER_ARB, 2}, + {GL_ELEMENT_ARRAY_BUFFER, 2}, /* uv edge */ - {GL_ELEMENT_ARRAY_BUFFER_ARB, 4}, + {GL_ELEMENT_ARRAY_BUFFER, 4}, /* triangles, 1 point since we are allocating from tottriangle points, which account for all points */ - {GL_ELEMENT_ARRAY_BUFFER_ARB, 1}, + {GL_ELEMENT_ARRAY_BUFFER, 1}, + /* editface colors */ - {GL_ARRAY_BUFFER_ARB, 4}, ++ {GL_ARRAY_BUFFER, 4}, }; #define MAX_GPU_ATTRIB_DATA 32 _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs