Log.LogError('GL_Error bei gluProject: '+IntToStr(glGetError),'');
end;
Problem mit dem Code ist, gluProject nicht GL_TRUE liefert. Daher springe ich in den Block, in dem ich den GL_Error in ein Logfile schreibe. Aber glGetError liefert den Fehlercode 0.
Wie muss ich das verstehen?
Dank und Gruß,
DNA
// Edit Lossy: Code durch Pascaltag ersetzt
_________________ Heute code ich, morgen debug ich, und übermorgen caste ich die Königin auf int.
http://www.2ndmoon.de
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ich glaube du bist der Erste bei dem ich sehe der sich tatsächlich für den Rückgabewert von gluProject interessiert.
Aber zu deinem Problem. Du hast win* bereits als Pointer auf Doubles deklariert. Diese Pointer zeigen aber nicht auf einen echten Speicher sondern irgendwo ins nirgendwo. Und dann übergibst du die pointer der pointer an gluProject.
Benutz mal bitte für win* kein PGLDouble sondern nur ein GLDouble und entferne das ^ bei win* unterhalb von gluProject. Das @ bei gluProject ist korrekt, da du ja den Pointer an die Funktion übergeben möchtest.
Danke für die Hinweise. Die Verwendung von PGLDouble war Käse. Da habe ich gepennt. Den Rückgabewert von GLProjekt finde ich schon relativ interessant, schließlich funktioniert der Aufruf im Moment nicht. (sollte ich Zweifel am Rückgabewert haben?)
Jedenfalls habe ich alles nach Deinen Vorschlägen abgeändert. Der Code sieht jetzt so aus:
Code:
var winx, winy, winz: GLDouble;
modelMatrix: TGLMatrixd4;
projMatrix: TGLMatrixd4;
viewport: TGLVectori4;
objx, objy, objz:double;
begin
...
objx:= Steine[CPUMove1].Posi.x;
objy := Steine[CPUMove1].Posi.y;
objz := Steine[CPUMove1].Posi.z;
glGetDoublev(GL_MODELVIEW_MATRIX,@modelmatrix);
glGetDoublev(GL_PROJECTION_MATRIX,@projMatrix);
glGetIntegerV(GL_VIEWPORT,@viewport);
if gluProject(objx,objy,objz,modelmatrix,projmatrix,viewport,@winx,@winy,@winz)= GL_TRUE then
begin
// Machen tun
endelse
begin
Log.LogError('GL_Error bei gluProject: '+IntToStr(glGetError),'');
sleep(2);
end;
end;
Die Ergebnisse auf den Variablen win* sind nach dem Funktionsaufruf unverändert. glProject funktioniert im o.g. Code nicht. Ein Ignorieren des Rückgabewertes würde also auch nix nützen. Noch 'ne Idee? DArf man GLProject evtl. in bestimmten Situationen nicht aufrufen?
Danke und Grüße,
DNA
// Edit Lossy: Code durch Pascaltag ersetzt
_________________ Heute code ich, morgen debug ich, und übermorgen caste ich die Königin auf int.
http://www.2ndmoon.de
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Bitte benutz die Pascaltags. Danke.
Das mit dem Rückgabewert finde ich sehr löblich. Ich denke mal der hat durchaus seine bewandniss. Aber so etwas wird schon ganz gerne mal ignoriert. Und du bist der erste bei dem ich den in Benutzung sehe.
Und zum Code. So spontan fällt mir nichts weiter auf.
Ich mach mal die Ingrid. Nachdem ich den Aufruf von gluLookat zur Festlegung der Kamera vor glProject gebaut habe, läuft der Laden. Ich sehe den Fehler, kann das aber nur begrenzt nachvollziehen, da LoadIdendity schon ausgeführt war, und er damit wengistens falsche Ergebnisse hätte liefern sollen, oder.
Grüße, DNA
_________________ Heute code ich, morgen debug ich, und übermorgen caste ich die Königin auf int.
http://www.2ndmoon.de
Mitglieder in diesem Forum: 0 Mitglieder und 4 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.