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

Aktuelle Zeit: Mi Jul 09, 2025 12:09

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



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Apr 03, 2004 13:46 
Offline
DGL Member

Registriert: Mi Mär 31, 2004 15:24
Beiträge: 114
Um Licht in meine Scene zu bringen, brauche ich ja u.a. den Befehl:
Code:
  1.  glLightfv(GL_LIGHT0, GL_AMBIENT,  @light_ambient[0]);


Und also Konstante muss ich light_ambient z.B. so deklarieren:
Code:
  1.  light_ambient  : Array[0..3] of GlFloat = (0.1, 0.1, 0.1, 1.0);


So ähnlich läufts ja auch bei Beziers (zumindest in den Tuts). Dazu hätte ich zwei Fragen.

1. Wieso braucht glLightfv den Parameter @light_ambient[0] ? Damit würde doch nur ein GLFloat des Arrays übergeben werden. Was hat das mit dem "@"-Zeichen auf sich?

2. So wie oben kann ich light_ambient ja als Konstante definieren und initial., aber was mach ich wenn ich diese Werte später aus einer Datei laden möchte? Wie übergebe ich dann die Param. an light_ambient?
Über Hilfe wäre ich dankbar![/code]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 03, 2004 13:55 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
1) Der @ Operator gibt einen Zeiger auf die Variable zurück. Man übergibt nicht einen Wert, sondern den Zeiger auf den ersten der vier Werte und weil die alle hintereinander liegen ist das die einfachste Möglichkeit. Bei statischen Arrays entspricht der Zeiger auf das erste Element @light_ambient[0] dem Zeiger auf das Array @light_ambient. Bei dynamischen Arrays ohne feste Größenangabe ist das nicht der Fall und deshalb ist es das Sicherste immer das Element mit anzugeben.

2) Man kann das auch einfach als Variable deklarieren und dann zuweisen oder aus einer Datei laden:

Code:
  1.  
  2. var
  3.  light_ambient  : Array[0..3] of GlFloat;
  4.  st:TFileStream;
  5. begin
  6. ...
  7. st.ReadBuffer(light_ambient,sizeof(lightambient));
  8. glLightfv(GL_LIGHT0, GL_AMBIENT,  @light_ambient[0]);
  9. ...
  10. end;
  11.  

Die Übergabe an eine Funktion geschieht dann genauso.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 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.006s | 14 Queries | GZIP : On ]