|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 02.08.2007, 22:07 Titel: OpenGL Tilemap - TriangleStrip neu anfangen |
|
|
Ich möchte eine Tilemap rendern:
CPP: | void Landscape::Render()
{
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glBegin(GL_TRIANGLE_STRIP);
unsigned int i=0;
for(unsigned int y=0; y<m_Size.y; ++y)
{
for(unsigned int x=0; x<m_Size.x; ++x)
{
glColor3f(i/81.0f, 0, 1-i/81.0f);
i++;
glVertex2f(x, y);
glVertex2f(x, y+1);
glVertex2f(x+1, y);
glVertex2f(x+1, y+1);
}
//glVertex2f(m_Size.x, y+1);
//glEnd();
//glBegin(GL_TRIANGLE_STRIP);
}
glEnd();
}
|
Auf diesen Bild sieht man die Anordnung. Ich fange unten links an und setze immer eine Reihe über die nächste. Soweit so gut, nun folgendes Problem:
(Die Farben sind, damit man sieht, in welche Reihenfolge gerendert wurde).
Das linke BIld ist korrekt, das rechte ist falsch, da zwischen die Reihen unnötige Dreiecke gezeichnet werden. Ich müsste quasi für jede Reihe ein neuen Trianglestrip anfangen. Das mache ich ja mit glEnd() und glBegin() auch. Aber ich möchte auch alles in ienem Rutsch rendenr und sptäre per Vertexbuffer rendern, auch in einem Rutsch.
Bei DirectX konnte man imo einen neuen TriangleStrip anfangen, indem man einfach den letzten Vertex nochmals angegeben hat, das hat aber leider nicht funktioniert. (das wäre dann die oberste, auskommentierte Zeile). Gibt es sonst eine Möglichkeit in OGL? _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 03.08.2007, 12:00 Titel: |
|
|
Hat sich erledigt:
CPP: | void Landscape::Render()
{
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glBegin(GL_QUADS);
unsigned int i=0;
for(unsigned int y=0; y<m_Size.y; ++y)
{
for(unsigned int x=0; x<m_Size.x; ++x)
{
glColor3f(i/81.0f, 0, 1-i/81.0f);
i++;
glVertex2f(x, y);
glVertex2f(x, y+1);
glVertex2f(x+1, y+1);
glVertex2f(x+1, y);
}
}
glEnd();
}
|
Da jedes Quad hinterher eh unterschiedliche Texturkoordinaten benötigt, erpar ich mir mit nem Strip nix. Daher eine einfache Qaudliste, jetzt bin ich damit zufriedne und die Geschwindigkeit soltle fürs erste auch locker reichen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
David Super JLI'ler
Alter: 39 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 03.08.2007, 12:13 Titel: |
|
|
Jo, GL_QUAD hätt ich dir jetzt auch vorgeschlagen. Ich vermute aber beim Trianglestrip haben dir einfach die zwei letzten "stopper" Vertices gefehlt. Wobei das ohnehin nicht schön ist. GL_QUAD ist da die bessere Alternative. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|