From 6e39808ed7531b2faa14b0d051898b25d0261d25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=82=E3=82=8B=E3=82=8B=20/=20=E3=81=8D=E3=81=AE?= =?UTF-8?q?=E3=82=82=E3=81=A8=20=E7=B5=90=E8=A1=A3?= Date: Fri, 27 Jun 2025 13:33:02 +0900 Subject: [PATCH] Fixed generate_triangle_mesh when using PRIMITIVE_TRIANGLE_STRIP --- scene/resources/mesh.cpp | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp index eb3f4040eba..206c58aba19 100644 --- a/scene/resources/mesh.cpp +++ b/scene/resources/mesh.cpp @@ -360,9 +360,15 @@ Ref Mesh::generate_triangle_mesh() const { } } else { // PRIMITIVE_TRIANGLE_STRIP for (int j = 2; j < ic; j++) { - facesw[widx++] = vr[ir[j - 2]]; - facesw[widx++] = vr[ir[j - 1]]; - facesw[widx++] = vr[ir[j]]; + if (j % 2 == 0) { + facesw[widx++] = vr[ir[j - 2]]; + facesw[widx++] = vr[ir[j - 1]]; + facesw[widx++] = vr[ir[j]]; + } else { + facesw[widx++] = vr[ir[j - 2]]; + facesw[widx++] = vr[ir[j]]; + facesw[widx++] = vr[ir[j - 1]]; + } } } @@ -373,9 +379,15 @@ Ref Mesh::generate_triangle_mesh() const { } } else { // PRIMITIVE_TRIANGLE_STRIP for (int j = 2; j < vc; j++) { - facesw[widx++] = vr[j - 2]; - facesw[widx++] = vr[j - 1]; - facesw[widx++] = vr[j]; + if (j % 2 == 0) { + facesw[widx++] = vr[j - 2]; + facesw[widx++] = vr[j - 1]; + facesw[widx++] = vr[j]; + } else { + facesw[widx++] = vr[j - 2]; + facesw[widx++] = vr[j]; + facesw[widx++] = vr[j - 1]; + } } } }