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

Aktuelle Zeit: So Sep 07, 2025 16:17

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 09, 2003 01:16 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 04, 2003 00:19
Beiträge: 4
Hi,
ich hab mir heute mal das Licht-Tutorial angetan, und komme da an einer Stelle nicht weiter ( was aber glaub ich nicht an mir liegt :P ). Ich habe also ein paar nette 3D-Objekte im Raum platziert, die ich nun beleuchten möchte. Dazu habe ich, wie im Tutorial beschrieben, eine Lichtquelle aktiviert, der ich bestimmte Eigenschaften zuweise (gl_position etc.). Im Tutorial wird dazu ein Array der Größe 4 vom Typ GlFloat erstellt, dessen Werte später an glLightfv übergeben werden:
Code:
  1.  
  2. light_position : Array[0..3] of GlFloat = (10.0, 10.0, 0.0, 1.0);
  3. [...]
  4. glLightfv(GL_LIGHT0, GL_POSITION, @light_position[0]);
  5.  

Beim Compilieren des Ganzen bekomme ich aber die Fehlermeldung "Undefinierter Bezeichner - GlFloat". Ich habe mir dann erstmal gedacht, dass das an der unterschiedlichen Version von opengl.pas bzw opengl12.pas liegen könnte. :rolleyes:

Um das Problem zu umgehen, wollte ich die Parameter dann direkt an glLightfv übergeben, in etwa so:
Code:
  1.  
  2. glLightfv(GL_LIGHT0, GL_POSITION, 10.0, 10.0, 0.0, 1.0);
  3.  


In diesem Falle bekomme ich sogar 2 Fehlermeldungen <_< : "Inkompatible Typen: PGLFloat und Extended" und "Zu viele Parameter". Dann dachte ich mir, lass ich den letzten weg, weil ich für die Position doch nur 3 Koordinaten brauche. Allerdings bleiben die Typen dann immer noch inkompatibel.

Als letzte Möglichkeit habe ich dann den Array 'light_position' von vorher nochmal mit dem Typ 'PGLFloat' deklariert, weil in meiner Version 'GlFloat' vielleicht zu 'PGlFloat' verändert wurde..... 'PGlFloat' ist dem Compiler auch bekannt allerdings behebt das leider auch nicht das Typenproblem :(

Ich habe das Programm dann mal ohne die ganzen neuen Parameter compiliert und dann werden die Objekte auch beleutet. Allerdings sieht dann alles so trist aus, weil das Licht ja standartgemäß grau ist.

Da ich aber trotzdem nochmal in den Genuss von farbigem Licht kommen möchte und überhaupt keine Idee mehr habe, die mir da weiterhilft, liegt nun meine ganze Hoffnung bei Euch :D - bin für jede Hilfe dankbar

(hängt das vielleicht auch mit dem Zeiger '@light_position[0]' zusammen??? Ich weiß nämlich nur, dass Zeiger auf einen bestimmten Platz im Speicher auf eine Variable zeigen, aber den konkreten Nutzen von Zeigern habe ich noch nicht verstanden, bin bisher immer ganz gut mit "normalen Variablen" ausgekommen :) Werde mich in der Zwischenzeit mal etwas über diese Dinger informieren...)

cu,
Tommy


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 09, 2003 08:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Bei mir jedenfalls muss ich GLFloat immer nur durch TGLFloat erstetzen, dann funzts!

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 09, 2003 09:00 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Du musst statt der mit Delphi gelieferten OpenGL.pas die OpenGL12.pas von Mike Lischke benutzen, dies bei uns in der Downloadsektion gibt und für die meisten Tuts benötigit wird.

Um den Borlandstandards zu entsprechen hat Mike Lischke in dieser Unit die verschiedenen Variablentypen mit einem T versehen.Deshalb heisst dort dort dann GLFloat auch TGLFloat.
Wenn du diese Unit einbindest, sollte es ohne Probleme gehen!

Das was du versucht hast, kann aber nicht gehen.Man kann weder einfach nen Parameter weglassen, noch feste Konstanten übergeben wo eine

Allerdings kanns du GLFloat durch Single ersetzen, denn in der momentanen OpenGL-Implementation entspricht ein glFloat dem Wertebereich eines Single-Wertes.

_________________
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  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 23 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 ]