summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo2009-03-21 22:04:50 +0000
committerLeo2009-03-21 22:04:50 +0000
commit5ddc827be12907afffb32430299701b2dc020e54 (patch)
treee842e86ffec62dfc4fa3de8cb26c28f394350a68
parent8b1b2a276433fa4d897b28fb30c414a74935bb38 (diff)
Removed quads.
git-svn-id: http://svn.leocad.org/tags/leocad-0.75@750 c7d43263-9d01-0410-8a33-9dba5d9f93d6
-rw-r--r--common/debug.cpp2
-rw-r--r--common/piece.cpp2
-rw-r--r--common/pieceinf.cpp37
-rw-r--r--common/project.cpp74
-rw-r--r--common/terrain.cpp4
-rw-r--r--common/texfont.cpp33
6 files changed, 67 insertions, 85 deletions
diff --git a/common/debug.cpp b/common/debug.cpp
index bede613..31e98b6 100644
--- a/common/debug.cpp
+++ b/common/debug.cpp
@@ -82,7 +82,7 @@ void RenderDebugPrimitives()
{
glColor4fv((float*)&DebugQuads[q].color);
glVertexPointer(3, GL_FLOAT, 0, &DebugQuads[q].pt1);
- glDrawArrays(GL_QUADS, 0, 4);
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
}
glDisableClientState(GL_VERTEX_ARRAY);
diff --git a/common/piece.cpp b/common/piece.cpp
index 4bf9471..2410a98 100644
--- a/common/piece.cpp
+++ b/common/piece.cpp
@@ -1179,7 +1179,7 @@ void Piece::Render(bool bLighting, bool bEdges, unsigned char* nLastColor, bool*
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, m_pPieceInfo->m_pTextures[sh].coords);
- glDrawArrays(GL_QUADS, 0, 4);
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
diff --git a/common/pieceinf.cpp b/common/pieceinf.cpp
index 39e5a9b..32dd76f 100644
--- a/common/pieceinf.cpp
+++ b/common/pieceinf.cpp
@@ -268,38 +268,31 @@ void PieceInfo::DeRef()
void PieceInfo::RenderBox()
{
- glEnableClientState(GL_VERTEX_ARRAY);
-
- float box[24][3] =
+ float Verts[8][3] =
{
{ m_fDimensions[0], m_fDimensions[1], m_fDimensions[2] },
{ m_fDimensions[3], m_fDimensions[1], m_fDimensions[2] },
{ m_fDimensions[3], m_fDimensions[4], m_fDimensions[2] },
{ m_fDimensions[0], m_fDimensions[4], m_fDimensions[2] },
{ m_fDimensions[0], m_fDimensions[1], m_fDimensions[5] },
- { m_fDimensions[0], m_fDimensions[4], m_fDimensions[5] },
- { m_fDimensions[3], m_fDimensions[4], m_fDimensions[5] },
- { m_fDimensions[3], m_fDimensions[1], m_fDimensions[5] },
- { m_fDimensions[3], m_fDimensions[4], m_fDimensions[2] },
- { m_fDimensions[3], m_fDimensions[1], m_fDimensions[2] },
- { m_fDimensions[3], m_fDimensions[1], m_fDimensions[5] },
- { m_fDimensions[3], m_fDimensions[4], m_fDimensions[5] },
- { m_fDimensions[0], m_fDimensions[4], m_fDimensions[5] },
- { m_fDimensions[0], m_fDimensions[1], m_fDimensions[5] },
- { m_fDimensions[0], m_fDimensions[1], m_fDimensions[2] },
- { m_fDimensions[0], m_fDimensions[4], m_fDimensions[2] },
- { m_fDimensions[0], m_fDimensions[1], m_fDimensions[5] },
{ m_fDimensions[3], m_fDimensions[1], m_fDimensions[5] },
- { m_fDimensions[3], m_fDimensions[1], m_fDimensions[2] },
- { m_fDimensions[0], m_fDimensions[1], m_fDimensions[2] },
- { m_fDimensions[0], m_fDimensions[4], m_fDimensions[2] },
- { m_fDimensions[3], m_fDimensions[4], m_fDimensions[2] },
{ m_fDimensions[3], m_fDimensions[4], m_fDimensions[5] },
{ m_fDimensions[0], m_fDimensions[4], m_fDimensions[5] }
};
- glVertexPointer(3, GL_FLOAT, 0, box);
- glDrawArrays(GL_QUADS, 0, 24);
+ unsigned short Indices[] =
+ {
+ 0, 4, 1, 5, 2, 6, 3, 7,
+ 1, 2, 0, 3, 4, 7, 5, 6,
+ };
+
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glVertexPointer(3, GL_FLOAT, 0, Verts);
+
+ glDrawElements(GL_TRIANGLE_STRIP, 8, GL_UNSIGNED_SHORT, Indices);
+ glDrawElements(GL_TRIANGLE_STRIP, 8, GL_UNSIGNED_SHORT, Indices+8);
+
+ glDisableClientState(GL_VERTEX_ARRAY);
}
void PieceInfo::LoadInformation()
@@ -1719,7 +1712,7 @@ void PieceInfo::RenderPiece(int nColor)
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, m_pTextures[sh].coords);
- glDrawArrays(GL_QUADS, 0, 4);
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_TEXTURE_2D);
diff --git a/common/project.cpp b/common/project.cpp
index 09297cc..c199e8a 100644
--- a/common/project.cpp
+++ b/common/project.cpp
@@ -2279,7 +2279,7 @@ void Project::RenderOverlays(int Viewport)
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, verts);
- glDrawArrays(GL_QUADS, 0, 4);
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
@@ -2862,9 +2862,8 @@ void Project::RenderViewports(bool bBackground, bool bLines)
glShadeModel(GL_SMOOTH);
glDisable(GL_DEPTH_TEST);
- float Verts[16][2];
- float Colors[16][3];
- int v = 0;
+ float Verts[4][2];
+ float Colors[4][3];
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, Verts);
@@ -2878,17 +2877,17 @@ void Project::RenderViewports(bool bBackground, bool bLines)
w = viewports[m_nViewportMode].dim[vp][2] * (float)m_nViewX;
h = viewports[m_nViewportMode].dim[vp][3] * (float)m_nViewY;
- Colors[v][0] = m_fGradient1[0]; Colors[v][1] = m_fGradient1[1]; Colors[v][2] = m_fGradient1[2];
- Verts[v][0] = x+w; Verts[v][1] = y+h; v++;
- Colors[v][0] = m_fGradient1[0]; Colors[v][1] = m_fGradient1[1]; Colors[v][2] = m_fGradient1[2];
- Verts[v][0] = x; Verts[v][1] = y+h; v++;
- Colors[v][0] = m_fGradient2[0]; Colors[v][1] = m_fGradient2[1]; Colors[v][2] = m_fGradient2[2];
- Verts[v][0] = x; Verts[v][1] = y; v++;
- Colors[v][0] = m_fGradient2[0]; Colors[v][1] = m_fGradient2[1]; Colors[v][2] = m_fGradient2[2];
- Verts[v][0] = x+w; Verts[v][1] = y; v++;
- }
+ Colors[0][0] = m_fGradient1[0]; Colors[0][1] = m_fGradient1[1]; Colors[0][2] = m_fGradient1[2];
+ Verts[0][0] = x+w; Verts[0][1] = y+h;
+ Colors[1][0] = m_fGradient1[0]; Colors[1][1] = m_fGradient1[1]; Colors[1][2] = m_fGradient1[2];
+ Verts[1][0] = x; Verts[1][1] = y+h;
+ Colors[2][0] = m_fGradient2[0]; Colors[2][1] = m_fGradient2[1]; Colors[2][2] = m_fGradient2[2];
+ Verts[2][0] = x; Verts[2][1] = y;
+ Colors[3][0] = m_fGradient2[0]; Colors[3][1] = m_fGradient2[1]; Colors[3][2] = m_fGradient2[2];
+ Verts[3][0] = x+w; Verts[3][1] = y;
- glDrawArrays(GL_QUADS, 0, v);
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+ }
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
@@ -2907,9 +2906,8 @@ void Project::RenderViewports(bool bBackground, bool bLines)
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
m_pBackground->MakeCurrent();
- float Verts[16][2];
- float Coords[16][2];
- int v = 0;
+ float Verts[4][2];
+ float Coords[4][2];
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, Verts);
@@ -2930,17 +2928,17 @@ void Project::RenderViewports(bool bBackground, bool bLines)
th = h/m_pBackground->m_nHeight;
}
- Coords[v][0] = 0; Coords[v][1] = 0;
- Verts[v][0] = x; Verts[v][1] = y+h; v++;
- Coords[v][0] = tw; Coords[v][1] = 0;
- Verts[v][0] = x+w; Verts[v][1] = y+h; v++;
- Coords[v][0] = tw; Coords[v][1] = th;
- Verts[v][0] = x+w; Verts[v][1] = y; v++;
- Coords[v][0] = 0; Coords[v][1] = th;
- Verts[v][0] = x; Verts[v][1] = y; v++;
- }
+ Coords[0][0] = 0; Coords[0][1] = 0;
+ Verts[0][0] = x; Verts[0][1] = y+h;
+ Coords[1][0] = tw; Coords[1][1] = 0;
+ Verts[1][0] = x+w; Verts[1][1] = y+h;
+ Coords[2][0] = tw; Coords[2][1] = th;
+ Verts[2][0] = x+w; Verts[2][1] = y;
+ Coords[3][0] = 0; Coords[3][1] = th;
+ Verts[3][0] = x; Verts[3][1] = y;
- glDrawArrays(GL_QUADS, 0, v);
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+ }
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
@@ -6850,8 +6848,8 @@ void Project::FindObjectFromPoint(int x, int y, LC_CLICKLINE* pLine, bool Pieces
glGetIntegerv(GL_VIEWPORT,viewport);
// Unproject the selected point against both the front and the back clipping plane
- gluUnProject(x, y, 0, modelMatrix, projMatrix, viewport, &px, &py, &pz);
- gluUnProject(x, y, 1, modelMatrix, projMatrix, viewport, &rx, &ry, &rz);
+ gluUnProject(x, y, 0.0f, modelMatrix, projMatrix, viewport, &px, &py, &pz);
+ gluUnProject(x, y, 1.0f, modelMatrix, projMatrix, viewport, &rx, &ry, &rz);
pLine->a1 = (float)px;
pLine->b1 = (float)py;
@@ -7925,9 +7923,9 @@ bool Project::OnKeyDown(char nKey, bool bControl, bool bShift)
glGetFloatv(GL_MODELVIEW_MATRIX, modelMatrix);
glGetFloatv(GL_PROJECTION_MATRIX, projMatrix);
glGetIntegerv(GL_VIEWPORT, viewport);
- gluUnProject( 5, 5, 0.1, modelMatrix,projMatrix,viewport,&p1[0],&p1[1],&p1[2]);
- gluUnProject(10, 5, 0.1, modelMatrix,projMatrix,viewport,&p2[0],&p2[1],&p2[2]);
- gluUnProject( 5,10, 0.1, modelMatrix,projMatrix,viewport,&p3[0],&p3[1],&p3[2]);
+ gluUnProject( 5, 5, 0.1f, modelMatrix,projMatrix,viewport,&p1[0],&p1[1],&p1[2]);
+ gluUnProject(10, 5, 0.1f, modelMatrix,projMatrix,viewport,&p2[0],&p2[1],&p2[2]);
+ gluUnProject( 5,10, 0.1f, modelMatrix,projMatrix,viewport,&p3[0],&p3[1],&p3[2]);
Vector vx((float)(p2[0] - p1[0]), (float)(p2[1] - p1[1]), 0);//p2[2] - p1[2] };
Vector x(1, 0, 0);
@@ -8023,7 +8021,7 @@ void Project::OnLeftButtonDown(int x, int y, bool bControl, bool bShift)
glGetFloatv(GL_PROJECTION_MATRIX, projMatrix);
glGetIntegerv(GL_VIEWPORT, viewport);
- gluUnProject(x, y, 0.9, modelMatrix, projMatrix, viewport, &point[0], &point[1], &point[2]);
+ gluUnProject(x, y, 0.9f, modelMatrix, projMatrix, viewport, &point[0], &point[1], &point[2]);
m_fTrack[0] = (float)point[0]; m_fTrack[1] = (float)point[1]; m_fTrack[2] = (float)point[2];
switch (m_nCurAction)
@@ -8231,7 +8229,7 @@ void Project::OnLeftButtonDown(int x, int y, bool bControl, bool bShift)
break;
GLfloat tmp[3];
- gluUnProject(x+1, y-1, 0.9, modelMatrix, projMatrix, viewport, &tmp[0], &tmp[1], &tmp[2]);
+ gluUnProject(x+1, y-1, 0.9f, modelMatrix, projMatrix, viewport, &tmp[0], &tmp[1], &tmp[2]);
SelectAndFocusNone(false);
StartTracking(LC_TRACK_START_LEFT);
pLight = new Light (m_fTrack[0], m_fTrack[1], m_fTrack[2], (float)tmp[0], (float)tmp[1], (float)tmp[2]);
@@ -8246,7 +8244,7 @@ void Project::OnLeftButtonDown(int x, int y, bool bControl, bool bShift)
case LC_ACTION_CAMERA:
{
GLfloat tmp[3];
- gluUnProject(x+1, y-1, 0.9, modelMatrix, projMatrix, viewport, &tmp[0], &tmp[1], &tmp[2]);
+ gluUnProject(x+1, y-1, 0.9f, modelMatrix, projMatrix, viewport, &tmp[0], &tmp[1], &tmp[2]);
SelectAndFocusNone(false);
StartTracking(LC_TRACK_START_LEFT);
Camera* pCamera = new Camera(m_fTrack[0], m_fTrack[1], m_fTrack[2], (float)tmp[0], (float)tmp[1], (float)tmp[2], m_pCameras);
@@ -8351,7 +8349,7 @@ void Project::OnLeftButtonDoubleClick(int x, int y, bool bControl, bool bShift)
glGetIntegerv(GL_VIEWPORT, viewport);
// why this is here ?
- gluUnProject(x, y, 0.9, modelMatrix, projMatrix, viewport, &point[0], &point[1], &point[2]);
+ gluUnProject(x, y, 0.9f, modelMatrix, projMatrix, viewport, &point[0], &point[1], &point[2]);
m_fTrack[0] = (float)point[0]; m_fTrack[1] = (float)point[1]; m_fTrack[2] = (float)point[2];
LC_CLICKLINE ClickLine;
@@ -8463,7 +8461,7 @@ void Project::OnRightButtonDown(int x, int y, bool bControl, bool bShift)
glGetFloatv(GL_PROJECTION_MATRIX, projMatrix);
glGetIntegerv(GL_VIEWPORT, viewport);
- gluUnProject(x, y, 0.9, modelMatrix, projMatrix, viewport, &point[0], &point[1], &point[2]);
+ gluUnProject(x, y, 0.9f, modelMatrix, projMatrix, viewport, &point[0], &point[1], &point[2]);
m_fTrack[0] = (float)point[0]; m_fTrack[1] = (float)point[1]; m_fTrack[2] = (float)point[2];
switch (m_nCurAction)
@@ -8554,7 +8552,7 @@ void Project::OnMouseMove(int x, int y, bool bControl, bool bShift)
glGetFloatv(GL_PROJECTION_MATRIX, projMatrix);
glGetIntegerv(GL_VIEWPORT, viewport);
- gluUnProject(x, y, 0.9, modelMatrix, projMatrix, viewport, &tmp[0], &tmp[1], &tmp[2]);
+ gluUnProject(x, y, 0.9f, modelMatrix, projMatrix, viewport, &tmp[0], &tmp[1], &tmp[2]);
ptx = (float)tmp[0]; pty = (float)tmp[1]; ptz = (float)tmp[2];
switch (m_nCurAction)
diff --git a/common/terrain.cpp b/common/terrain.cpp
index 1e817cd..3146258 100644
--- a/common/terrain.cpp
+++ b/common/terrain.cpp
@@ -613,7 +613,7 @@ ty = (th*eye[1])/(2*pCam->m_zFar);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, coords);
- glDrawArrays(GL_QUADS, 0, 4);
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
@@ -623,7 +623,7 @@ ty = (th*eye[1])/(2*pCam->m_zFar);
{
glColor3fv(m_fColor);
- glDrawArrays(GL_QUADS, 0, 4);
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
}
glDisableClientState(GL_VERTEX_ARRAY);
diff --git a/common/texfont.cpp b/common/texfont.cpp
index 035b44c..8223ac0 100644
--- a/common/texfont.cpp
+++ b/common/texfont.cpp
@@ -109,10 +109,8 @@ void TexFont::PrintText(float Left, float Top, float Z, const char* Text) const
{
float Height = m_nFontHeight;
- const int BufferSize = 32;
- float Verts[BufferSize][3];
- float Coords[BufferSize][2];
- int v = 0;
+ float Verts[4][3];
+ float Coords[4][2];
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, Verts);
@@ -123,28 +121,21 @@ void TexFont::PrintText(float Left, float Top, float Z, const char* Text) const
{
int ch = *Text;
- Coords[v][0] = m_Glyphs[ch].left; Coords[v][1] = m_Glyphs[ch].top;
- Verts[v][0] = Left; Verts[v][1] = Top; Verts[v][2] = Z; v++;
- Coords[v][0] = m_Glyphs[ch].left; Coords[v][1] = m_Glyphs[ch].bottom;
- Verts[v][0] = Left; Verts[v][1] = Top - Height; Verts[v][2] = Z; v++;
- Coords[v][0] = m_Glyphs[ch].right; Coords[v][1] = m_Glyphs[ch].bottom;
- Verts[v][0] = Left + m_Glyphs[ch].width; Verts[v][1] = Top - Height; Verts[v][2] = Z; v++;
- Coords[v][0] = m_Glyphs[ch].right; Coords[v][1] = m_Glyphs[ch].top;
- Verts[v][0] = Left + m_Glyphs[ch].width; Verts[v][1] = Top; Verts[v][2] = Z; v++;
-
- if (v == BufferSize)
- {
- glDrawArrays(GL_QUADS, 0, v);
- v = 0;
- }
+ Coords[0][0] = m_Glyphs[ch].left; Coords[0][1] = m_Glyphs[ch].top;
+ Verts[0][0] = Left; Verts[0][1] = Top; Verts[0][2] = Z;
+ Coords[1][0] = m_Glyphs[ch].left; Coords[1][1] = m_Glyphs[ch].bottom;
+ Verts[1][0] = Left; Verts[1][1] = Top - Height; Verts[1][2] = Z;
+ Coords[2][0] = m_Glyphs[ch].right; Coords[2][1] = m_Glyphs[ch].top;
+ Verts[2][0] = Left + m_Glyphs[ch].width; Verts[2][1] = Top; Verts[2][2] = Z;
+ Coords[3][0] = m_Glyphs[ch].right; Coords[3][1] = m_Glyphs[ch].bottom;
+ Verts[3][0] = Left + m_Glyphs[ch].width; Verts[3][1] = Top - Height; Verts[3][3] = Z;
+
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
Left += m_Glyphs[ch].width;
Text++;
}
- if (v)
- glDrawArrays(GL_QUADS, 0, v);
-
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}