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 ). 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:
light_position : Array[0..3] of GlFloat = (10.0, 10.0, 0.0, 1.0);
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:
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 - 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...)
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
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.
Mitglieder in diesem Forum: 0 Mitglieder und 19 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.