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

Aktuelle Zeit: Mo Jul 14, 2025 13:55

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Fr Sep 16, 2005 10:49 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Feb 23, 2005 15:54
Beiträge: 24
Nach dem Durcharbeiten der beiden großartigen Bomberman-Tutorials. Und der Anschaffung einer neuen Grafikkarte habe ich nun endlich mein erstes etwas größeres OpenGL-Projekt in Angriff geommen. Es handelt sich um das Spiel KEX, das vielleicht jemand, der, mal einen alten Robotron hatte, kennen mag. Ich habe es vorher schon einmal in JavaScript umgesetzt und diesen Code nun nach Delphi portiert. Eine nicht ganz fertie JS-Version ist hier zu finden. Der Spielmechnismus an sich macht somit auch keinerlei Sorgen mehr - nur die Oberfläche:
Das leere Spielfeld, eine Art Schachbrett, wird problemlos gezeichnet. Die Flächen sind texturiert und werden von einer Lichtquelle beleuchtet. Sobald nun aber kugelförmige Spielsteine (mit gluSphere) darauf positioniert werden, wird das Spielfeld dunkel. Die Steine hingegen sind weiter sichtbar. Seltsamerweise wird das Spielfeld wieder sichtbar, wenn man es etwas im Raum dreht. Der Effekt ist der, als hätte sich die Position der Lichtquelle verändert, was aber nicht der Fall ist.
Da mir vollkommen die Vorstellung fehlt, wo das Problem liegen könnte, fällt es mir schwer, weitere möglicherweise wichtige Anhaltspunkte zu liefern, ohne den gesamten Code zu posten. Hat irgendwer eine Idee? Hier noch die eigentliche Zeichenroutine für ein einelnes Feld des Spielbretts:
Code:
  1.  
  2. procedure TField.Draw;
  3.  procedure Sphere;
  4.  begin
  5.   gluSphere(gluNewQuadric,0.3,10,5);
  6.  end;
  7. begin
  8. glPushMatrix;
  9.  glTranslatef(FPosX,FPosY,0);
  10.  //Grundfläche
  11.  if Selected then
  12.   TextureManager.BindTexture('selected.bmp')
  13.  else
  14.   TextureManager.BindTexture('field.bmp');
  15.  glBegin(GL_QUADS);
  16.   gltexcoord2f(0,0); glVertex2f(0,0);
  17.   gltexcoord2f(1,0); glVertex2f(1,0);
  18.   gltexcoord2f(1,1); glVertex2f(1,1);
  19.   gltexcoord2f(0,1); glVertex2f(0,1);
  20.  glEnd;
  21.  if FOwner<>nil then
  22.  TextureManager.BindTexture(FOwner^.FTexture);
  23.  glTranslatef(0,0,0.4);
  24.  case FCount of
  25.  1: begin
  26.      glTranslatef(0.5,0.5,0);
  27.      Sphere;
  28.     end;
  29.  2: begin
  30.      glTranslatef(0.25,0.25,0);
  31.      Sphere;
  32.      glTranslatef(0.5,0.5,0);
  33.      Sphere;
  34.     end;
  35.  3: begin
  36.      glTranslatef(0.25,0.25,0);
  37.      Sphere;
  38.      glTranslatef(0.5,0,0);
  39.      Sphere;
  40.      glTranslatef(-0.25,0.5,0);
  41.      Sphere;
  42.     end;
  43.  end;  
  44. glPopMatrix;
  45. end;
  46.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 16, 2005 12:10 
Offline
DGL Member

Registriert: So Sep 26, 2004 05:57
Beiträge: 190
Wohnort: Linz
Die setzt beim zeichnen des Feldes nirgends einen Normalvektor soweit ich das gesehen hab. Dadurch ist der letzte Normalvektor von gluSphere weiterhin aktiv. Also vorm Feld zeichnen ein glNormal rein und es sollte zumindest mal immer gleich beleuchtet werden :-).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 16, 2005 17:15 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Feb 23, 2005 15:54
Beiträge: 24
Nach einer kurzzeitigen Konfusion darüber, dass glNormal3i(0,0,1) keineswegs das selbe bewirkt wie glNormal3f(0,0,1), funktioniert jetzt alles wie gedacht. Einen herzlichen Dank. Mir fällt ein Stein vom Herzen.


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


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.007s | 15 Queries | GZIP : On ]