Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Jul 14, 2025 23:40

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: So Apr 17, 2005 16:23 
Offline
DGL Member

Registriert: Sa Apr 02, 2005 15:11
Beiträge: 41
Hi,
ich wollte auf mein Spielfeld (2D) ein Raster zeichnen. Undzwar mache ich es so, dass jedesmal wenn ein Stück vom Spielfeld gezeichnet wird, ein Rand mit GL_LINE_LOOP gezeichnet wird. Das klappt auch wunderbar, nur sind einige Linien heller als andere.
Kann mir da jemand helfen?

Code:
  1.  
  2. glEnable(GL_TEXTURE_2D);
  3.   for i := 0 to High(TexSpielfeld) do
  4.   begin
  5.     glBindTexture(GL_TEXTURE_2D, TexSpielfeld[i]);
  6.     glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_BORDER_COLOR,1);
  7.     for Y := 0 to  FHeight-1 do
  8.       begin
  9.         for X := 0 to  FWidth-1 do
  10.         begin
  11.           J:= (Y*FWidth +X+1);
  12.           glloadname(j);
  13.           glcolor3f(0,1,0);
  14.           DrawQuad((x+1)*FieldWidth,(y+1)*FieldWidth,0,FieldWidth,FieldHeight,false);
  15.  
  16.           glDisable(GL_TEXTURE_2D);
  17.           glEnable(GL_BLEND);
  18.           glBlendFunc(GL_SRC_ALPHA,GL_ONE);
  19.           glDisable(GL_DEPTH_TEST);
  20.           glColor4f(1,0.3,0.3,0.5);
  21.           glbegin(GL_LINE_LOOP);
  22.             glvertex3f((x+1)*FieldWidth,(y+1)*FieldWidth,0.001);
  23.             glvertex3f((x+1)*FieldWidth,(y+2)*FieldWidth,0.001);
  24.             glvertex3f((x+2)*FieldWidth,(y+2)*FieldWidth,0.001);
  25.             glvertex3f((x+2)*FieldWidth,(y+1)*FieldWidth,0.001);
  26.           glend();
  27.           glEnable(GL_DEPTH_TEST);
  28.           glDisable(GL_BLEND);
  29.           glEnable(GL_TEXTURE_2D);
  30.         end;
  31.       end;
  32.   end;
  33.    glDisable(GL_TEXTURE_2D);
  34.  


Bild -> KlixX


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Apr 17, 2005 17:02 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hast du Licht an?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Apr 17, 2005 17:12 
Offline
DGL Member

Registriert: Sa Apr 02, 2005 15:11
Beiträge: 41
Hab keins an.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 20, 2005 15:12 
Offline
DGL Member

Registriert: Sa Apr 02, 2005 15:11
Beiträge: 41
Keiner ne Idee woran das liegen kann :( ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 20, 2005 16:09 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Du zeichnest die linien ja mit glblend um nen quad herum.
Ich schätze mal, dass die linien die "vorne" anders aussehen als die "hinten". ähm... weiß nicht wie ich dass beschreiben soll... jedenfalls versuch doch mal, die linien etwas über das quad zu zeichnen oder so. Die farben kommen jedenfalls von der blend funktion, denke ich.
Wenn du genau hinsiest, müssten einige linien über das quad und andere darunter gezeichnet sein, was möglich ist, da GL_DEPTH_TEST ja aus ist.

Ich hoffe ich konnte mich irgendwie verständlich machen :-)

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 20, 2005 16:12 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Wollte gerade mal nach nem Bild schreien ist ja aber eines da. ;-)

An deiner Stelle würde ich Zu erst alle Flächen rendern und dann in einer seperaten Schleife alle Linien. Hat den Vorteil, dass du die Primitive nicht wechseln musst. Du musst die Texturen und Blending nicht ständig aktivieren und deaktivieren. Und ich würde es evtl so optimieren, dass du maximal 1 Linie pro Kante zeichnest. Also von ganz oben nach ganz unten ist jeweils 1 Linie. Von Links nach Rechts ist jeweils eine und dann ein mal die Kante. Dadurch werden dann auch nicht mehrfach die Linien übergeblendet wodurch so etwas auch entstehen kann. Und es ist sogar (minimal) schneller.

Dann würde ich den Tiefentestin von GL_LOWER auf GL_LEQUAL umstellen. Damit werden auch Flächen berücksichtig die sich auf genau der gleichen Höhe befinden. Bei geblendeten Objekten ist das ganz praktisch. Also Multipass. So etwas ähnliches hast du ja.

[edit] Evtl kannst du das mit dem Blenden auch lassen und den Linien direkt eine Gelbgrüne Farbe geben oder sie als Bestandteil der Textur machen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 5 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]