ich bin neu was das Arbeiten mit OGL und dem ganzen "Drumherum" angeht.
Soweit bin ich: Ich initialisiere OpenGL - alles wie in den Tutorials hier beschrieben - und kann auch "per Hand" Primitiven erstellen und anzeigen. Doch sobald ich mit Hilfe der gl3ds.pas eine .3ds-Datei laden will gibts Probleme:
Das Objekt wird zwar geladen, doch zu sehen ist die (.tga-)Textur nur in schwarz/weiß, wobei Weiß auch nicht angezeigt wird, stattdessen ein "Keine Farbe zugewießen"-Grün. Als wäre das nicht genug sinkt die Framezahl von ~2000 auf 3FPS ab und OpenGL meldet einmal den Fehler "Stack underflow".
Das ganze muss wohl irgendwie mit der Textur zusammenhängen, aber ich habe keinen Plan was ich falsch mache. Sagt mir was ihr braucht um mir zu helfen: Source-Code (von dem ich glaube dass er korrekt ist, nachdem ich die Tutoruials und das Bsp nochmal durchgegangen bin)? Die .3ds-Datei? die Textur?
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Bei einem Stack-Underflow liegt der Fehler mit ziehmlicher Sicherheit in deinem Sourcecode, also poste den doch mal bitte.
Achte vorallem auf glPush* und glPop*-Anweisungen, wenn du da mehr glPops als glPushs hast, dann kommt der Stack-Underflow zum Beispiel.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Ich habe mich exakt an den Code aus den Tutorials gehalten, und der Fehler tritt auch nicht auf wenn ich Model.Render auskommentiere. OGL wir ebenfalls wie in den Tus initialisiert, das Objekt danach geladen:
Code:
procedure TForm_Main.FormCreate(Sender:TObject);
begin
DC:= GetDC(Handle);
ifnot InitOpenGL then Application.Terminate;
RC:= CreateRenderingContext( DC,
[opDoubleBuffered],
32,
24,
0,0,0,
0);
ActivateRenderingContext(DC, RC);
SetupGL;
InitOpenGL;
Init;
Application.OnIdle:= IdleHandler;
end;
Code:
var
Model: TAll3dsMesh;
procedure TForm_Main.SetupGL;
begin
glClearColor(0.3,0.4,0.7,0.0);//Hintergrundfarbe: Hier ein leichtes Blau
Registriert: Di Jul 01, 2003 18:59 Beiträge: 887 Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
Why do you call initopengl twice? Try removing the second one.
The cube.3ds is not at fault as it renders correctly with the latest released version of gl3ds.
Sorry, but I work with the latest released version of gl3ds I think (http://www.noeska.com/downloads/vclgl3ds_5b.zip right?). Also glbitmap.pas and DGLOpenGL.pas are updated nevertheless problem keeps existing.^^
Perhaps you can send me your testprogram to test compiling with my Delphiversion (D7 Personal)?! Thank you!
//EDIT: Second initopengl has been removed - no effect on my problem^^
I use version 2.1 - i will try with version 2.0 as soon as I find this version to download.^^
Loading the cube.3ds in your example no error occures, but the picture is just black; ~6fps. (dglopengl v2.1)
Mitglieder in diesem Forum: 0 Mitglieder und 9 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.