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

Aktuelle Zeit: Mo Jul 21, 2025 03:22

Foren-Übersicht » DGL » Feedback
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Tutorial 8
BeitragVerfasst: Di Dez 29, 2009 09:01 
Offline
DGL Member

Registriert: So Dez 27, 2009 11:31
Beiträge: 3
Hallo,

vorerst mal vielen Dank an die Community. Die Tutorials und das Forum haben mir auf den ersten Schritten sehr geholfen. Ich hab jetzt eine kleine Welt gebastelt und wollte mit Hilfe von Tut.8 mal eine Lampe einbauen. Dabei hab ich etwas vermasselt, denk ich, denn es sieht aus wie vorher.
Ich hab das Beispiel mit den Kugeln so mehr oder weniger in meine Render-Prozedur kopiert, bevor meine kleine Welt geladen wird.
Eigentlich hatte ich damit gerechnet das alles dunkel ist und irgendwo in der Nähe vom Anfang sollte die kleine Funzel glimmen.
Es wäre nett wenn hier mal einer rüberschauen könnte:
Code:
  1. procedure TForm1.Render;     //wird über den Timer ausgeführt
  2. var Player:TVertex;
  3.   const
  4.     mat_specular   : Array[0..3] of GlFloat = (1.0, 1.0, 1.0, 1.0);
  5.     mat_shininess  : Array[0..0] of GlFloat = (50.0);
  6.     mat_ambient    : Array[0..3] of GlFloat = (0.4, 0.4, 0.4, 1.0);
  7.     mat_diffuse    : Array[0..3] of GlFloat = (0.4, 0.8, 0.4, 1.0);
  8.  
  9.     light_position : Array[0..3] of GlFloat = (10.0, 10.0, 10.0, 1.0);
  10.     light_ambient  : Array[0..3] of GlFloat = (0.8, 0.8, 0.8, 1.0);
  11.     light_diffuse  : Array[0..3] of GlFloat = (0.8, 0.8, 0.8, 1.0);
  12.  
  13.  
  14. begin
  15.   glLoadIdentity;
  16.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  17.  
  18.   //glMatrixMode(GL_PROJECTION);
  19.  
  20.   gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  21.  
  22.   glMatrixMode(GL_MODELVIEW);
  23.  
  24.   //==========================================
  25.     glMaterialfv(GL_FRONT, GL_SPECULAR,  @mat_specular[0]);
  26.     glMaterialfv(GL_FRONT, GL_SHININESS, @mat_shininess[0]);
  27.     glMaterialfv(GL_FRONT, GL_AMBIENT,   @mat_ambient[0]);
  28.     glMaterialfv(GL_FRONT, GL_DIFFUSE,   @mat_diffuse[0]);
  29.  
  30.     glLightfv(GL_LIGHT0, GL_AMBIENT,  @light_ambient[0]);
  31.     glLightfv(GL_LIGHT0, GL_DIFFUSE,  @light_diffuse[0]);
  32.     glLightfv(GL_LIGHT0, GL_POSITION, @light_position[0]);
  33.  
  34.     glEnable(GL_COLOR_MATERIAL);
  35.     glEnable(GL_LIGHTING);
  36.     glEnable(GL_LIGHT0);
  37.  
  38.  
  39.   GlPushMatrix;    //Welt Zeichnen
  40.     //zurecht drehen
  41.     glRotatef(Kamera.ang.rotx, 1, 0, 0);
  42.     glRotatef(Kamera.ang.rotz, 0, 1, 0);
  43.     glRotatef(Kamera.ang.roty, 0, 0, 1);
  44.  
  45.     //Welt 0,0,0 unter die Kamera schieben
  46.     glTranslatef(-Kamera.Pos.x, -Kamera.Pos.y, -Kamera.Pos.z);
  47.  
  48.     //Welt zeichnen
  49.     DrwWelt;
  50.   GlPopMatrix;    //ENDE Welt
  51.  
  52.   SwapBuffers(DC);
  53. end;


Ich hab noch einen scrshot angehangen, aber wie ihr seht... kein Licht.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tutorial 8
BeitragVerfasst: Di Dez 29, 2009 09:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jul 23, 2009 04:33
Beiträge: 157
Programmiersprache: Turbo Delphi Pro
Du musst in DrwWelt zu jeder Fläche die du zeichnest eine Normale angeben, also einen vektor der im Rechten Winkel dazu steht und das Auftreffen des Lichst steuert.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tutorial 8
BeitragVerfasst: Di Dez 29, 2009 09:58 
Offline
DGL Member

Registriert: So Dez 27, 2009 11:31
Beiträge: 3
Ach das erklärt einiges...
Aber trotzdem wundert mich dabei das es garnicht dunkel ist. Wird das Licht jetzt in alle Richtungen reflektiert so das es wieder so wie anfangs ohne Lichtquelle aussieht? Dann würde so bald eine Fläche keine normale hat das ganze Licht kaputt gehen???


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tutorial 8
BeitragVerfasst: Mi Dez 30, 2009 14:52 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Zitat:
Dann würde so bald eine Fläche keine normale hat das ganze Licht kaputt gehen???


Nur für die Flächen die keine Normale definiert haben.

Hab gerade mal mein RedBook konsultiert, aber das schweigt zu der Frage ob es eine default-Wert gibt und wie dieser definiert ist.

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tutorial 8
BeitragVerfasst: Do Dez 31, 2009 13:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Die Vorgabe für Normalen ist 0/0/1, und da OpenGL ja ne Statemachine ist wird die aktuelle gesetzte Normale solange auf deine Primitiven angewendet bis du eine neue angibst. Es gibt also quasi keine Flächen ohne Normale, höchstens mit einer die nicht zur Fläche passt.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.014s | 15 Queries | GZIP : On ]