diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-08-26 00:03:45 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-08-26 00:03:45 +0400 |
commit | bbce51d11691acc561f1684c20e60613941d4e9b (patch) | |
tree | ada2418ebb181015b561df9e9c92035ee2a84b43 /source/blender/gpu | |
parent | 1d5eff36f5bd7fc7986e59d4dbe7b885ccb50e61 (diff) |
replace hashes with sets where possible.
Diffstat (limited to 'source/blender/gpu')
-rw-r--r-- | source/blender/gpu/GPU_buffers.h | 9 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_buffers.c | 35 |
2 files changed, 24 insertions, 20 deletions
diff --git a/source/blender/gpu/GPU_buffers.h b/source/blender/gpu/GPU_buffers.h index fca8dcc3392..cc22063a83c 100644 --- a/source/blender/gpu/GPU_buffers.h +++ b/source/blender/gpu/GPU_buffers.h @@ -46,6 +46,7 @@ struct CustomData; struct DMFlagMat; struct DerivedMesh; struct GHash; +struct GSet; struct GPUVertPointLink; struct PBVH; @@ -175,10 +176,10 @@ GPU_Buffers *GPU_build_grid_buffers(int *grid_indices, int totgrid, GPU_Buffers *GPU_build_bmesh_buffers(int smooth_shading); void GPU_update_bmesh_buffers(GPU_Buffers *buffers, - struct BMesh *bm, - struct GHash *bm_faces, - struct GHash *bm_unique_verts, - struct GHash *bm_other_verts); + struct BMesh *bm, + struct GHash *bm_faces, + struct GSet *bm_unique_verts, + struct GSet *bm_other_verts); void GPU_update_grid_buffers(GPU_Buffers *buffers, struct CCGElem **grids, const struct DMFlagMat *grid_flag_mats, diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index 39b7e1c72ad..384b7cce2ff 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -1963,19 +1963,19 @@ static void gpu_bmesh_vert_to_buffer_copy(BMVert *v, } /* Return the total number of vertices that don't have BM_ELEM_HIDDEN set */ -static int gpu_bmesh_vert_visible_count(GHash *bm_unique_verts, - GHash *bm_other_verts) +static int gpu_bmesh_vert_visible_count(GSet *bm_unique_verts, + GSet *bm_other_verts) { - GHashIterator gh_iter; + GSetIterator gs_iter; int totvert = 0; - GHASH_ITER (gh_iter, bm_unique_verts) { - BMVert *v = BLI_ghashIterator_getKey(&gh_iter); + GSET_ITER (gs_iter, bm_unique_verts) { + BMVert *v = BLI_gsetIterator_getKey(&gs_iter); if (!BM_elem_flag_test(v, BM_ELEM_HIDDEN)) totvert++; } - GHASH_ITER (gh_iter, bm_other_verts) { - BMVert *v = BLI_ghashIterator_getKey(&gh_iter); + GSET_ITER (gs_iter, bm_other_verts) { + BMVert *v = BLI_gsetIterator_getKey(&gs_iter); if (!BM_elem_flag_test(v, BM_ELEM_HIDDEN)) totvert++; } @@ -2002,10 +2002,10 @@ static int gpu_bmesh_face_visible_count(GHash *bm_faces) /* Creates a vertex buffer (coordinate, normal, color) and, if smooth * shading, an element index buffer. */ void GPU_update_bmesh_buffers(GPU_Buffers *buffers, - BMesh *bm, - GHash *bm_faces, - GHash *bm_unique_verts, - GHash *bm_other_verts) + BMesh *bm, + GHash *bm_faces, + GSet *bm_unique_verts, + GSet *bm_other_verts) { VertexBufferFormat *vert_data; void *tri_data; @@ -2036,22 +2036,23 @@ void GPU_update_bmesh_buffers(GPU_Buffers *buffers, /* Fill vertex buffer */ vert_data = glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); if (vert_data) { - GHashIterator gh_iter; int v_index = 0; if (buffers->smooth) { + GSetIterator gs_iter; + /* Vertices get an index assigned for use in the triangle * index buffer */ bm->elem_index_dirty |= BM_VERT; - GHASH_ITER (gh_iter, bm_unique_verts) { - gpu_bmesh_vert_to_buffer_copy(BLI_ghashIterator_getKey(&gh_iter), + GSET_ITER (gs_iter, bm_unique_verts) { + gpu_bmesh_vert_to_buffer_copy(BLI_gsetIterator_getKey(&gs_iter), vert_data, &v_index, NULL, NULL, cd_vert_mask_offset); } - GHASH_ITER (gh_iter, bm_other_verts) { - gpu_bmesh_vert_to_buffer_copy(BLI_ghashIterator_getKey(&gh_iter), + GSET_ITER (gs_iter, bm_other_verts) { + gpu_bmesh_vert_to_buffer_copy(BLI_gsetIterator_getKey(&gs_iter), vert_data, &v_index, NULL, NULL, cd_vert_mask_offset); } @@ -2059,6 +2060,8 @@ void GPU_update_bmesh_buffers(GPU_Buffers *buffers, maxvert = v_index; } else { + GHashIterator gh_iter; + GHASH_ITER (gh_iter, bm_faces) { BMFace *f = BLI_ghashIterator_getKey(&gh_iter); |