JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

OpenGL Tilemap - TriangleStrip neu anfangen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 02.08.2007, 23:07    Titel: OpenGL Tilemap - TriangleStrip neu anfangen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 03.08.2007, 13:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 03.08.2007, 13:13    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum