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

Aktuelle Zeit: Sa Jul 05, 2025 00:33

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Feb 22, 2003 15:20 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Feb 08, 2003 19:10
Beiträge: 7
Tach auch, ich hätt mal gern ein Problem... *g*
Zitat:
set_color(RED);
draw_item(A);
draw_item(B);
set_color(GREEN);
set_color(BLUE);
draw_item©;

Items A and B are drawn in red, and item C is drawn in blue. The fourth line, which sets the current color to green, has no effect (except to waste a bit of time). With no lighting or texturing, when the current color is set, all items drawn afterward are drawn in that color until the current color is changed to something else.

So steht das im Redbook...

Ich mache das:

Farbe:=Rot
Textausgeben('bla')
Maletwas
Farbe:=Landschaftsfarbe
MalLandschaft

das passiert:

Der Text (der ja aus einer displaylist kommt) wird in einer der Landschaftsfarben eingefärbt, das "etwas" wird rot und die Landschaft wird in den Landschaftsfarben korrekt angezeigt. Bis vor kurzem wurde der Text wenigstens noch rot, wenn die Landschaft aufgrund mangelnder Sichtbarkeit nicht gezeichnet wurde... scheint sich jetzt auch verabschiedet zu haben. (wenn ich mich recht erinnere hab ich nur die Kameraposition geändert... weiß ebenfalls nicht was da ablief)
Also wenn da jemand eine Erklärung und/oder Lösung dafür kennt... immer her damit *g*

und noch so nebenbei:
Ich würd ja gern den Text in einem 2d Koordinatensystem machen, so wie das hier mit gluOrtho2d oder so schon öfters als Codeteil da war, hab da so ein bissl mit rumprobiert, doch mehr als ein schwarzer Bildschirm kam nicht raus... aber das andere Problem ist ersmal wichtiger

Zur Info: Benutze die Bitmapfonts vom NeHe Tut 13

So, ich hoffe das ist lesbar und verständlich und lass das erstmal so stehen. :)

_________________
Give a man a fire and he is warm for a day. <br>Set a man on fire and he is warm for the rest of his life.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 23, 2003 01:32 
Offline
DGL Member
Benutzeravatar

Registriert: So Jan 26, 2003 15:57
Beiträge: 50
Wohnort: Hamminkeln
Ich denke, es wuerde uns allen helfen, wenn du nicht den Pseudocode posten wuerdest, sondern deine jetzige Routine, in der du denkst, dass dort der Fehler steckt.

mfg,
Dennis.

_________________
Bush's on a highway to hell with the whole world blind, leading it straight into the flames.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 23, 2003 01:38 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Bin mir nicht 100% sicher, aber bis dato hört sich das weniger nach einen Farbproblem an.

Mache mal folgende Sachen:
a) glDisable(GL_DEPTH_TEST);
B) glDisable(GL_TEXTURE_2D);

jeweils vorm Font und anschließend wieder Enablen. Vermutlich wird es geschickter sein den Text erst nach dem rendern der Landschaft wieder zu geben.

my six cent...

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 23, 2003 10:48 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Feb 08, 2003 19:10
Beiträge: 7
Code:
  1.  
  2.  
  3. procedure glDraw;
  4.  
  5. begin
  6.  
  7.  &nbsp;glClearColor(0,0,1,0);
  8.  
  9.  &nbsp;glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT);
  10.  
  11.  
  12.  
  13.  &nbsp;glLoadIdentity;
  14.  
  15.  
  16.  
  17.  &nbsp;//Kamera verschieben
  18.  
  19.  &nbsp;glTranslatef(0,-10,-30);
  20.  
  21.  &nbsp; &nbsp;//Text positionieren
  22.  
  23.  &nbsp; &nbsp;glPushMatrix;
  24.  
  25.  &nbsp; &nbsp;glTranslatef(-16,15,0);
  26.  
  27.  &nbsp; &nbsp;glRasterPos2d(0,0);
  28.  
  29.  &nbsp; &nbsp;glColor3f(1,0,0);
  30.  
  31.  &nbsp; &nbsp;glPrint('Test');
  32.  
  33.  &nbsp; &nbsp;glPopMatrix;
  34.  
  35.  &nbsp;//Kamera drehen
  36.  
  37.  &nbsp;glRotatef(RotY,1,0,0);
  38.  
  39.  &nbsp;glRotatef(RotX,0,1,0);
  40.  
  41.  &nbsp; &nbsp;glBEGIN(GL_TRIANGLES);
  42.  
  43.  &nbsp; &nbsp; &nbsp;glVertex3f(-0.5,0,0);
  44.  
  45.  &nbsp; &nbsp; &nbsp;glVertex3f(0.5,0,0);
  46.  
  47.  &nbsp; &nbsp; &nbsp;glVertex3f(0,10,0);
  48.  
  49.  &nbsp; &nbsp;glEND();
  50.  
  51.  &nbsp;//Wenn Sichtpunkt verändert, Frustum neu berechnen
  52.  
  53.  &nbsp;if update then Frust.CalculateFrustum;
  54.  
  55.  &nbsp;//Karte zeichnen, PosX,PosY als Mittelpunkt
  56.  
  57.  &nbsp;DrawMap;
  58.  
  59.  &nbsp;//Koordinaten berechnen, falls nötig
  60.  
  61.  &nbsp;If update then MoveDamnIt;
  62.  
  63. end;
  64.  
  65.  

Code:
  1.  
  2.  
  3. procedure DrawMap;
  4.  
  5. var X,Y:Word;
  6.  
  7. begin
  8.  
  9.  &nbsp;For X:=0 to Map.Width-2 do
  10.  
  11.  &nbsp; &nbsp;For Y:=0 to Map.Height-2 do begin
  12.  
  13.  &nbsp; &nbsp;If Frust.PointInFrustum(-(PosX-X),Map.Map[X,Y+1],-(PosY-Y)+1) OR Frust.PointInFrustum(-(PosX-X)+1,Map.Map[X+1,Y+1],-(PosY-Y)+1) OR Frust.PointInFrustum(-(PosX-X)+1,Map.Map[X+1,Y],-(PosY-Y)) OR Frust.PointInFrustum(-(PosX-X),Map.Map[X,Y],-(PosY-Y)) then begin
  14.  
  15.  &nbsp; &nbsp;//Wenn sichtbar zeichnen &nbsp;
  16.  
  17.  &nbsp;glPushMatrix;
  18.  
  19.  &nbsp;glTranslatef(-(PosX-X),0,-(PosY-Y));
  20.  
  21.  &nbsp;glBEGIN(GL_TRIANGLE_STRIP);
  22.  
  23.  &nbsp; &nbsp;If Map.Map[X,Y+1]>MaxHeight-MaxHeight/3 then &nbsp; glColor3f(0.98,0.76,0.98) else If Map.Map[X,Y+1]>0 then glColor3f(0,0.90,0) else glColor3f(0,0,1); //Farbe gesetzt
  24.  
  25.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(0,1); glVertex3f(0,Map.Map[X,Y+1],1);
  26.  
  27.  &nbsp; &nbsp; &nbsp; &nbsp;If Map.Map[X+1,Y+1]>MaxHeight-MaxHeight/3 then &nbsp; &nbsp;glColor3f(0.98,0.76,0.98) else If Map.Map[X+1,Y+1]>0 then glColor3f(0,0.96,0) else glColor3f(0,0,1); //Farbe gesetzt
  28.  
  29.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(1,1); glVertex3f(1,Map.Map[X+1,Y+1],1);
  30.  
  31.  &nbsp; &nbsp; &nbsp; &nbsp;If Map.Map[X,Y]>MaxHeight-MaxHeight/3 then glColor3f(0.98,0.76,0.98) else If Map.Map[X,Y]>0 then glColor3f(0,0.98,0) else glColor3f(0,0,1); &nbsp;//Farbe gesetzt
  32.  
  33.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(0,0); glVertex3f(0,Map.Map[X,Y],0);
  34.  
  35.  &nbsp; &nbsp; &nbsp; &nbsp;If Map.Map[X+1,Y]>MaxHeight-MaxHeight/3 then glColor3f(0.98,0.76,0.98) else If Map.Map[X+1,Y]>0 then glColor3f(0,1,0) else glColor3f(0,0,1); //Farbe gesetzt
  36.  
  37.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(1,0); glVertex3f(1,Map.Map[X+1,Y],0);
  38.  
  39.  &nbsp; &nbsp; &nbsp;glEND();
  40.  
  41.  &nbsp; &nbsp; &nbsp;glPopMatrix;
  42.  
  43.  &nbsp; &nbsp; &nbsp;end;
  44.  
  45.  &nbsp; &nbsp;end;
  46.  
  47. end;
  48.  
  49.  


Habt Spaß damit *g*

@Phobeus
Ich hab das mal gemacht, es hat sich aber nichts verändert und habs deshalb wieder rausgenommen. Wenn ich den Text nach der Landschaft render ändert sich nur, dass er beim drehen auch wild in der Gegend rum dreht, deshalb hab ich das ja auch vor der Landschaft.

Tja, also um nochmal zusammenzufassen, ich möchte meinen Text Rot
Code:
  1.  
  2.  
  3. glColor3f(1,0,0);
  4.  
  5. glPrint('Test');
  6.  
  7.  

bekomme ihn aber in einer dieser Farben:
Code:
  1.  
  2.  
  3. If Map.Map[X,Y+1]>MaxHeight-MaxHeight/3 then glColor3f(0.98,0.76,0.98) else If Map.Map[X,Y+1]>0 then glColor3f(0,0.90,0) else glColor3f(0,0,1);
  4.  
  5.  


Code:
  1.  
  2.  
  3. glBEGIN(GL_TRIANGLES);
  4.  
  5.  &nbsp;glVertex3f(-0.5,0,0);
  6.  
  7.  &nbsp;glVertex3f(0.5,0,0);
  8.  
  9.  &nbsp;glVertex3f(0,10,0);
  10.  
  11. glEND();
  12.  
  13.  


wird allerdings davon beeinflusst und färbt sich rot. (wie es auch sein sollte)

Wenn ich in der DrawMap Prozedur am Ende noch eine Zeile glColor3f(1,0,0) hinzufüge, dann wird der Text auch rot, aber warum wird die direkte Zuweisung ignoriert?

EDIT: hatte quote statt code... kann ja mal passieren... *g* mit den langen Farbstellen und obs sichtbar is sieht aber immer noch nich so schick aus hier

_________________
Give a man a fire and he is warm for a day. <br>Set a man on fire and he is warm for the rest of his life.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 23, 2003 12:00 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
8O 8O 8O
Hast du schon mal was von FORMATIEREN DES QUELLCODES gehört?? :twisted:

EDIT: Jetzt siehts schön aus ;)

Fiji-Fighter

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 23, 2003 12:18 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
Hast du denn schon mal das auch gemacht?
Code:
  1. ...
  2.  
  3.  glDisable(GL_DEPTH_TEST);
  4.  
  5.  glDisable(GL_TEXTURE_2D);
  6.  
  7.  &nbsp;glColor3f(1,0,0);
  8.  
  9.  &nbsp;glPrint('Test');
  10.  
  11.  glEnable(GL_DEPTH_TEST);
  12.  
  13.  glEnable(GL_TEXTURE_2D);
  14.  
  15. ...
  16.  
  17.  


Und wenn du den Text erst nachher ausgeben willst, dann sollteste entweder
alles davor "pushen und poppen"...
oder den Text selber genau umgekehrt translaten und drehen wie den Rest...

Hoffe das ganze hat ein bißchen geholfen ;)

Fiji-Fighter

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 23, 2003 12:31 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Feb 08, 2003 19:10
Beiträge: 7
Ja, das hab ich mit
Zitat:
@Phobeus
Ich hab das mal gemacht, es hat sich aber nichts verändert und habs deshalb wieder rausgenommen.  

gemeint, dass ich das schon gemacht hab. Und es ist mir relativ egal wann der Text ausgegeben wird, hauptsache er bekommt die Farbe, die ich angegeben hab.

_________________
Give a man a fire and he is warm for a day. <br>Set a man on fire and he is warm for the rest of his life.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 23, 2003 12:33 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
Kannst ja mal den ganzen Quellcode hochladen (nicht hier ins Forum, sondern als .zip-Datei)...

Fiji-Fighter

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 23, 2003 12:54 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
.... vor dem Text ausgeben auch das Licht ausgeschaltet? Is ne häufige Fehlerquelle.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 23, 2003 13:31 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Feb 08, 2003 19:10
Beiträge: 7
Ich habs gar nicht angemacht, ändert sich auch nichts wenn ich es explizit ausschalte :-(
<a href='http://krebs.berlin.bei.t-online.de/Martin/TerrainTest.zip' target='_blank'>Klick mich</a>

_________________
Give a man a fire and he is warm for a day. <br>Set a man on fire and he is warm for the rest of his life.


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


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 6 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.009s | 16 Queries | GZIP : On ]