Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2020-02-11 17:18:55 +0300
committerClément Foucault <foucault.clem@gmail.com>2020-02-11 17:19:04 +0300
commit804e90b42d728ecb1073af8d0bae15a91b13a469 (patch)
tree309de25d99c92286b10c9d27e547fd43a69299c1 /source/blender/draw/intern/draw_cache.c
parent58cdab8b9759dd59b55895f2f76b9624addbb324 (diff)
DRW: Color Management improvement
Reviewed By: brecht sergey jbakker Differential Revision: http://developer.blender.org/D6729
Diffstat (limited to 'source/blender/draw/intern/draw_cache.c')
-rw-r--r--source/blender/draw/intern/draw_cache.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/source/blender/draw/intern/draw_cache.c b/source/blender/draw/intern/draw_cache.c
index 22fd22e4818..8057d167e2f 100644
--- a/source/blender/draw/intern/draw_cache.c
+++ b/source/blender/draw/intern/draw_cache.c
@@ -679,20 +679,30 @@ GPUBatch *DRW_cache_cube_get(void)
if (!SHC.drw_cube) {
GPUVertFormat format = extra_vert_format();
+ const int tri_len = ARRAY_SIZE(bone_box_solid_tris);
+ const int vert_len = ARRAY_SIZE(bone_box_verts);
+
GPUVertBuf *vbo = GPU_vertbuf_create_with_format(&format);
- GPU_vertbuf_data_alloc(vbo, ARRAY_SIZE(bone_box_solid_tris) * 3);
+ GPU_vertbuf_data_alloc(vbo, vert_len);
+
+ GPUIndexBufBuilder elb;
+ GPU_indexbuf_init(&elb, GPU_PRIM_TRIS, tri_len, vert_len);
int v = 0;
- for (int i = 0; i < ARRAY_SIZE(bone_box_solid_tris); i++) {
- for (int a = 0; a < 3; a++) {
- float x = bone_box_verts[bone_box_solid_tris[i][a]][0];
- float y = bone_box_verts[bone_box_solid_tris[i][a]][1] * 2.0f - 1.0f;
- float z = bone_box_verts[bone_box_solid_tris[i][a]][2];
- GPU_vertbuf_vert_set(vbo, v++, &(Vert){{x, y, z}, VCLASS_EMPTY_SCALED});
- }
+ for (int i = 0; i < vert_len; i++) {
+ float x = bone_box_verts[i][0];
+ float y = bone_box_verts[i][1] * 2.0f - 1.0f;
+ float z = bone_box_verts[i][2];
+ GPU_vertbuf_vert_set(vbo, v++, &(Vert){{x, y, z}, VCLASS_EMPTY_SCALED});
+ }
+
+ for (int i = 0; i < tri_len; i++) {
+ const uint *tri_indices = bone_box_solid_tris[i];
+ GPU_indexbuf_add_tri_verts(&elb, tri_indices[0], tri_indices[1], tri_indices[2]);
}
- SHC.drw_cube = GPU_batch_create_ex(GPU_PRIM_TRIS, vbo, NULL, GPU_BATCH_OWNS_VBO);
+ SHC.drw_cube = GPU_batch_create_ex(
+ GPU_PRIM_TRIS, vbo, GPU_indexbuf_build(&elb), GPU_BATCH_OWNS_VBO | GPU_BATCH_OWNS_INDEX);
}
return SHC.drw_cube;
}