ich hab ein problem mit GL_QUAD_STRIP...
ich hab mir ein programm gebastelt dass aus externen dateien coodinaten einliest.
soweit is das kein problem zumindest solange ich polygone aus den cooridanten zeichne...
jetzt habe ich aber für einen turm quad stripe genommen und plötzlich wird eine seite des turm mit der mitte (wahrscheinlich 0/0/0) verbunden...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ich würde dir gerne helfen allerdings kann ich so nicht sagen wo das Problem liegt. Leider kann man auf dem Bild nur erkennen, dass du ein weißes Gebilde auf einem schwarzen Hintergrund hast. Evtl würde es dir auch schon helfen, wenn du testweise mal den PolygonMode auf Linien umstellst. Damit würden anstelle von Flächen nur Linien gezeichnet werden wodurch du evtl selber sehen kannst was das Problem ist.
Code:
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
Und du kannst nicht so ohne weiteres ein Polygon in ein quad_strip verwandeln. Siehe dazu folgenden Abschnitt aus dem Wiki.
Bei einem Polygon werden die Punkte gefächert aufgerufen wärend sie bei einem Quadstrip abwechselnd aufgerufen werden. Um zu verdeutlichen was ich meine. Um das abgebildete Polygon als Quadstrip zu rendern müssten die Punkte folgende Reihenfolge haben. 1, 6, 2, 5, 3, 4
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Das sehe ich ähnlich. Ich denke mal das Problem wird darin liegen, dass dort die falschen Koordinaten gesetzt werden. Achja. Du musst natürlich von dem Zylinder die ersten Koordinaten zum Schluss noch einmal rendern, da dieser sonst nicht geschlossen wird. Bzw scheint es auch so als ob du 2 Punkte zu viel renderst. Die befinden sich das sonst wo. Wenn ich mal rate wie es aussehen soll. Wohl gemerkt. Das wissen wir ja nicht was genau da nicht stimmt.
"noob": Jeder fängt mal klein an und wenn man ein Problem hat ist es immer erst einmal wichtig heraus zufinden wo das eigentlich Problem liegt. Und da lernt man mit der Zeit ein paar Tricks oder Möglichkeiten. Aber dafür sind wir ja da.
@ Lossy eX : du hast was von rendern geschrieben, nach den einzelnen objecten wie genau sieht das aus?
ich geb euch mal den completten quelltest damit ihr mal seht wie ich das gedacht hab...
vll stimmt ja auch was mit den array nicht die ich verwende....
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Als aller erstes. Bitte verbinde nicht das glBegin mit dem Delphi begin. Die haben nichts miteinander zu tun. Aus dem Grund ist dein Code unten auch falsch. Wobei man den auch noch wesentlich einfacher gestalten könnte.
Code:
for d:=1to3dobegin
if coord[d,1]=1thenbegin
glBegin(GL_POLYGON);
i:=2;
while(i<=49)dobegin
glVertex3f(coord[d,i],coord[d,i+1],coord[d,i+2]);
i:=i+3;
end;
glEnd;
end;
if coord[d,1]=2thenbegin
glBegin(GL_QUAD_STRIP);
i:=2;
while(i<=49)dobegin
glVertex3f(coord[d,i],coord[d,i+1],coord[d,i+2]);
i:=i+3;
end;
glEnd;
end;
end;
Oder vereinfacht, da das Zeichnen gleich ist.
Code:
for d:=1to3dobegin
if coord[d,1]in[1,2]thenbegin
if coord[d,1]=1thenbegin
glBegin(GL_POLYGON);
if coord[d,1]=2then
glBegin(GL_QUAD_STRIP);
i:=2;
while(i<=49)dobegin
glVertex3f(coord[d,i],coord[d,i+1],coord[d,i+2]);
i:=i+3;
end;
glEnd;
end;
end;
Dabei existiert eine Sicherheitsabfrage, damit er überhaupt nur etwas tut, wenn der Wert 1 oder 2 ist. Sonst sieht es eigentlich okay.
Was ich zum QuadStrip meinte. Wenn du bei einem Polygon die Punkte definierst dann geht das Polygon selsttätig her und verbindet den zu letzt gesetzten Pukt mit dem Ersten. Wenn du aber eine Säule mit einem QuadStrip zeichnen möchtest, dann geht er auch nur genau bis zum letzten Punkt. Somit würde eine Seite fehlen. Wie es in deinem Bild der Fall ist. Die am großen Polygon klebt. Umd das zu schließen müsstest du die ersten beiden Punkte am Schluss noch einmal zeichnen. Es kann aber auch durchaus sein, dass das von dir ja auch so bezweckt wurde. Fällt mir gerade nur so ein.
ok ich hab den fehler gefunden...
danke für die hilfe!!!!!
das is echt sehr nett von euch...
ich hab beim einlesen immer zu viele zeilen eingelesen (49) aber die dateien hatten zum teil gar keine 49 zeilen ^^...
da muss ich halt jetzt noch ne abfrage für die dateilänge mit reinschreiben damit das wird...
ok... nochmals vielen dank @ Lossy eX... ich hab einiges gelernt ^^
ach ja eine frage hätte ich doch noch...
gibt es ein tut das du mir besonders empfehlen kannst ? ich hab das von mr_T schon mal durchgelesen und größtenteils aus auchprobiert...
grundlagen sind also hoffe ich zumidnest ein paar auch vorhanden ^^
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.