Implement the count parameter in RenderingServer.canvas_item_add_triangle_array()

This commit is contained in:
chocola-mint 2025-05-14 22:42:18 +09:00
parent 09fcbb8645
commit 101dc9868f
8 changed files with 20 additions and 18 deletions

View file

@ -100,7 +100,7 @@ void RendererCanvasRenderRD::_update_transform_to_mat4(const Transform3D &p_tran
p_mat4[15] = 1;
}
RendererCanvasRender::PolygonID RendererCanvasRenderRD::request_polygon(const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, const Vector<int> &p_bones, const Vector<float> &p_weights) {
RendererCanvasRender::PolygonID RendererCanvasRenderRD::request_polygon(const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, const Vector<int> &p_bones, const Vector<float> &p_weights, int p_count) {
// Care must be taken to generate array formats
// in ways where they could be reused, so we will
// put single-occurring elements first, and repeated
@ -311,14 +311,14 @@ RendererCanvasRender::PolygonID RendererCanvasRenderRD::request_polygon(const Ve
if (p_indices.size()) {
//create indices, as indices were requested
Vector<uint8_t> index_buffer;
index_buffer.resize(p_indices.size() * sizeof(int32_t));
index_buffer.resize(p_count * sizeof(int32_t));
{
uint8_t *w = index_buffer.ptrw();
memcpy(w, p_indices.ptr(), sizeof(int32_t) * p_indices.size());
}
pb.index_buffer = RD::get_singleton()->index_buffer_create(p_indices.size(), RD::INDEX_BUFFER_FORMAT_UINT32, index_buffer);
pb.indices = RD::get_singleton()->index_array_create(pb.index_buffer, 0, p_indices.size());
pb.primitive_count = p_indices.size();
pb.index_buffer = RD::get_singleton()->index_buffer_create(p_count, RD::INDEX_BUFFER_FORMAT_UINT32, index_buffer);
pb.indices = RD::get_singleton()->index_array_create(pb.index_buffer, 0, p_count);
pb.primitive_count = p_count;
}
pb.vertex_format_id = vertex_id;