diff --git a/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp b/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp index 3dc5570c0d..825d9b463d 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp @@ -101,13 +101,13 @@ void AddIndices(int _primitive, int _numVertices) { switch (_primitive) { - case GX_DRAW_QUADS: IndexGenerator::AddQuads(_numVertices); return; - case GX_DRAW_TRIANGLES: IndexGenerator::AddList(_numVertices); return; - case GX_DRAW_TRIANGLE_STRIP: IndexGenerator::AddStrip(_numVertices); return; - case GX_DRAW_TRIANGLE_FAN: IndexGenerator::AddFan(_numVertices); return; - case GX_DRAW_LINE_STRIP: IndexGenerator::AddLineStrip(_numVertices); return; - case GX_DRAW_LINES: IndexGenerator::AddLineList(_numVertices); return; - case GX_DRAW_POINTS: IndexGenerator::AddPoints(_numVertices); return; + case GX_DRAW_QUADS: if ((_numVertices % 4) == 0 ) {IndexGenerator::AddQuads(_numVertices);} else {IndexGenerator::AddFan(_numVertices);} break; + case GX_DRAW_TRIANGLES: if ((_numVertices % 3) == 0 ) {IndexGenerator::AddList(_numVertices);} else {IndexGenerator::AddStrip(_numVertices);} break; + case GX_DRAW_TRIANGLE_STRIP: IndexGenerator::AddStrip(_numVertices); break; + case GX_DRAW_TRIANGLE_FAN: IndexGenerator::AddFan(_numVertices); break; + case GX_DRAW_LINE_STRIP: IndexGenerator::AddLineStrip(_numVertices); break; + case GX_DRAW_LINES: if ((_numVertices % 2) == 0 ) {IndexGenerator::AddLineList(_numVertices);} else {IndexGenerator::AddLineStrip(_numVertices);} break; + case GX_DRAW_POINTS: IndexGenerator::AddPoints(_numVertices); break; } } diff --git a/Source/Plugins/Plugin_VideoOGL/Src/VertexManager.cpp b/Source/Plugins/Plugin_VideoOGL/Src/VertexManager.cpp index 479a93b392..b303c0be3e 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/VertexManager.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/VertexManager.cpp @@ -110,12 +110,12 @@ void AddIndices(int primitive, int numVertices) { switch (primitive) { - case GX_DRAW_TRIANGLES: IndexGenerator::AddList(numVertices); break; - case GX_DRAW_QUADS: IndexGenerator::AddQuads(numVertices); break; + case GX_DRAW_QUADS: if ((numVertices % 4) == 0 ) {IndexGenerator::AddQuads(numVertices);} else {IndexGenerator::AddFan(numVertices);} break; + case GX_DRAW_TRIANGLES: if ((numVertices % 3) == 0 ) {IndexGenerator::AddList(numVertices);} else {IndexGenerator::AddStrip(numVertices);} break; case GX_DRAW_TRIANGLE_STRIP: IndexGenerator::AddStrip(numVertices); break; case GX_DRAW_TRIANGLE_FAN: IndexGenerator::AddFan(numVertices); break; case GX_DRAW_LINE_STRIP: IndexGenerator::AddLineStrip(numVertices); break; - case GX_DRAW_LINES: IndexGenerator::AddLineList(numVertices); break; + case GX_DRAW_LINES: if ((numVertices % 2) == 0 ) {IndexGenerator::AddLineList(numVertices);} else {IndexGenerator::AddLineStrip(numVertices);} break; case GX_DRAW_POINTS: IndexGenerator::AddPoints(numVertices); break; } }