aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/GPU3D.cpp33
-rw-r--r--src/GPU3D_OpenGL.cpp5
2 files changed, 22 insertions, 16 deletions
diff --git a/src/GPU3D.cpp b/src/GPU3D.cpp
index c94d363..1c3fbee 100644
--- a/src/GPU3D.cpp
+++ b/src/GPU3D.cpp
@@ -1144,6 +1144,23 @@ void SubmitPolygon()
for (int i = clipstart; i < nverts; i++)
clippedvertices[i] = TempVertexBuffer[i];
+ // detect lines, for the OpenGL renderer
+
+ int polytype = 0;
+ if (nverts == 3)
+ {
+ if (ClipCoordsEqual(&clippedvertices[0], &clippedvertices[1]) ||
+ ClipCoordsEqual(&clippedvertices[0], &clippedvertices[2]) ||
+ ClipCoordsEqual(&clippedvertices[1], &clippedvertices[2]))
+ {
+ polytype = 1;
+ }
+ }
+ else if (nverts == 4)
+ {
+ // TODO
+ }
+
// clipping
nverts = ClipPolygon<true>(clippedvertices, nverts, clipstart);
@@ -1198,21 +1215,7 @@ void SubmitPolygon()
if (!poly->Translucent) NumOpaquePolygons++;
- if (ClipCoordsEqual(v0, v1) ||
- ClipCoordsEqual(v0, v2) ||
- ClipCoordsEqual(v1, v2))
- {
- poly->Type = 1;
- }
- else if (nverts == 4)
- {
- if (ClipCoordsEqual(v0, v3) ||
- ClipCoordsEqual(v1, v3) ||
- ClipCoordsEqual(v2, v3))
- {
- poly->Type = 1;
- }
- }
+ poly->Type = polytype;
if (LastStripPolygon && clipstart > 0)
{
diff --git a/src/GPU3D_OpenGL.cpp b/src/GPU3D_OpenGL.cpp
index 2f25912..0d86690 100644
--- a/src/GPU3D_OpenGL.cpp
+++ b/src/GPU3D_OpenGL.cpp
@@ -582,7 +582,10 @@ void BuildPolygons(RendererPolygon* polygons, int npolys)
y = vtx->FinalPosition[1];
}
- if (lastx == x && lasty == y) continue;
+ if (j > 0)
+ {
+ if (lastx == x && lasty == y) continue;
+ }
*vptr++ = x | (y << 16);
*vptr++ = z | (w << 16);