Cleanup: DRW: Use data span to fill lattice line index buffer
Pull Request: https://projects.blender.org/blender/blender/pulls/135921
This commit is contained in:
@@ -362,10 +362,11 @@ static gpu::IndexBuf *lattice_batch_cache_get_edges(LatticeRenderData *rdata,
|
||||
if (cache->edges == nullptr) {
|
||||
const int vert_len = lattice_render_data_verts_len_get(rdata);
|
||||
const int edge_len = lattice_render_data_edges_len_get(rdata);
|
||||
int edge_len_real = 0;
|
||||
|
||||
GPUIndexBufBuilder elb;
|
||||
GPU_indexbuf_init(&elb, GPU_PRIM_LINES, edge_len, vert_len);
|
||||
GPUIndexBufBuilder builder;
|
||||
GPU_indexbuf_init(&builder, GPU_PRIM_LINES, edge_len, vert_len);
|
||||
MutableSpan<uint2> data = GPU_indexbuf_get_data(&builder).cast<uint2>();
|
||||
int line_index = 0;
|
||||
|
||||
#define LATT_INDEX(u, v, w) ((((w) * rdata->dims.v_len + (v)) * rdata->dims.u_len) + (u))
|
||||
|
||||
@@ -377,19 +378,13 @@ static gpu::IndexBuf *lattice_batch_cache_get_edges(LatticeRenderData *rdata,
|
||||
int uxt = ELEM(u, 0, rdata->dims.u_len - 1);
|
||||
|
||||
if (w && ((uxt || vxt) || !rdata->show_only_outside)) {
|
||||
GPU_indexbuf_add_line_verts(&elb, LATT_INDEX(u, v, w - 1), LATT_INDEX(u, v, w));
|
||||
BLI_assert(edge_len_real <= edge_len);
|
||||
edge_len_real++;
|
||||
data[line_index++] = uint2(LATT_INDEX(u, v, w - 1), LATT_INDEX(u, v, w));
|
||||
}
|
||||
if (v && ((uxt || wxt) || !rdata->show_only_outside)) {
|
||||
GPU_indexbuf_add_line_verts(&elb, LATT_INDEX(u, v - 1, w), LATT_INDEX(u, v, w));
|
||||
BLI_assert(edge_len_real <= edge_len);
|
||||
edge_len_real++;
|
||||
data[line_index++] = uint2(LATT_INDEX(u, v - 1, w), LATT_INDEX(u, v, w));
|
||||
}
|
||||
if (u && ((vxt || wxt) || !rdata->show_only_outside)) {
|
||||
GPU_indexbuf_add_line_verts(&elb, LATT_INDEX(u - 1, v, w), LATT_INDEX(u, v, w));
|
||||
BLI_assert(edge_len_real <= edge_len);
|
||||
edge_len_real++;
|
||||
data[line_index++] = uint2(LATT_INDEX(u - 1, v, w), LATT_INDEX(u, v, w));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -398,14 +393,14 @@ static gpu::IndexBuf *lattice_batch_cache_get_edges(LatticeRenderData *rdata,
|
||||
#undef LATT_INDEX
|
||||
|
||||
if (rdata->show_only_outside) {
|
||||
BLI_assert(edge_len_real <= edge_len);
|
||||
BLI_assert(line_index <= edge_len);
|
||||
}
|
||||
else {
|
||||
BLI_assert(edge_len_real == edge_len);
|
||||
BLI_assert(line_index == edge_len);
|
||||
}
|
||||
UNUSED_VARS_NDEBUG(edge_len_real);
|
||||
|
||||
cache->edges = GPU_indexbuf_build(&elb);
|
||||
cache->edges = GPU_indexbuf_calloc();
|
||||
GPU_indexbuf_build_in_place_ex(&builder, 0, vert_len, false, cache->edges);
|
||||
}
|
||||
|
||||
return cache->edges;
|
||||
|
||||
Reference in New Issue
Block a user