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

Aktuelle Zeit: Do Jul 17, 2025 07:44

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Access-Violation mit DGLOpenGL
BeitragVerfasst: Mi Feb 08, 2006 22:09 
Offline
DGL Member

Registriert: Mi Feb 08, 2006 21:51
Beiträge: 8
Hallo,

ich wollte Texturen einbinden und da alle Units dafür auf die DGLOpenGL-Unit zurückgeifen musste ich diese auch einbinden.
Jetzt gibt es beim Programmstart jedesmal eine Acces Violation und zwar kurioser Weise an "Adresse 00000000. Lesen von Adresse 00000000". Ich rufe beim Start jedoch gar keine Funktion der Units auf, eigentlich überhaut nicht bisher.

Habe inzwischen zwei verschiedene DGLOpenGL-Versionen getestet.
Einmal mit einer älteren und der texture.pas, die bei den Demos auf sulaco.co.za benutzt werden und einmal die aktuellste mit der glbitmap.pas (welche hier in einem Tutorial verlinkt war). Bei letztem kommt der Fehler wenigstens erst, wenn ich eine Textur lade...
Benutze ich nur die textures.pas ohne dglopengl geht es zwar, aber der Befehl glbindexture ist dann leider unbekannt...

Gibt es da irgendwelche Funktionen, die zu solchen Fehlern führen? Interessanterweise gab es die Verletzungen auch, wenn ich nach dem Texturöffnen nur die Caption eines Labels verändere - und das hat mit opengl nun wirklich nix zu tun.


Bei Form.create wird folgendes ausgeführt:

Code:
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. var pfd : TPIXELFORMATDESCRIPTOR;
  3.     pf  : Integer;
  4. begin
  5.   dc:=GetDC(panel1.Handle);
  6.  
  7.    pfd.nSize:=sizeof(pfd);
  8.   pfd.nVersion:=1;
  9.   pfd.dwFlags:=PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER or 0;
  10.   pfd.iPixelType:=PFD_TYPE_RGBA;    
  11.   pfd.cColorBits:=32;
  12.  
  13.   pf :=ChoosePixelFormat(dc, @pfd);  
  14.   SetPixelFormat(dc, pf, @pfd);
  15.  
  16.   rc :=wglCreateContext(dc);  
  17.   wglMakeCurrent(dc,rc);        
  18.  
  19.   glClearColor(0.0, 0.0, 0.0, 0.0);      
  20.   glShadeModel(GL_SMOOTH);          
  21.   glClearDepth(1.0);                    
  22.   glEnable(GL_DEPTH_TEST);              
  23.   glDepthFunc(GL_LESS);              
  24.  
  25.   glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);  
  26.    
  27.  
  28. end;

Zudem werden einige Variablen gesetzt, die aber nix mit Opengl zu tun haben und eine tbitmap-objekt erzeugt.

Und noch form1.resize:
Code:
  1. procedure TForm1.FormResize(Sender: TObject);
  2. begin
  3.        glViewport(0, 0, Panel1.Width, Panel1.Height);  
  4.   glMatrixMode(GL_PROJECTION);    
  5.   glLoadIdentity();                  
  6.   gluPerspective(45.0, Panel1.Width/Panel1.Height, 0.1, 1500.0);  
  7.  
  8.   glMatrixMode(GL_MODELVIEW);        
  9.  
  10. end;


Eigentlich nix besonderes...
Und es tut auch ansonsten alles.

Ist irgendwas mit Konflikten bekannt? Oder ist mein Delphi kaputt (es gab schon ohne opengl viele seltsame Fehler, die sich durch den Code nicht erklären ließen, wie zb plötzlich schwarze Forms und merkwürdiges Verhalten)?

Grüße,
styxxx


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 08, 2006 22:22 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Ich behaupte spontan, dass dein Init defekt ist.
Ja, er ist es ;)
Da fehlt InitOpenGL.
Erst danach sind die OpenGL-Funktionen initialisiert.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 08, 2006 22:38 
Offline
DGL Member

Registriert: Mi Feb 08, 2006 21:51
Beiträge: 8
i0n0s hat geschrieben:
Ich behaupte spontan, dass dein Init defekt ist.
Ja, er ist es ;)
Da fehlt InitOpenGL.
Erst danach sind die OpenGL-Funktionen initialisiert.


Hmm..faszinierend ;) Danke :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 09, 2006 12:55 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Und noch ne wichtige Info: In einem Projekt immer nur einen GL-Header benutzen. Wenn man verschiedene einbindet kann/wird das auch krachen.

PS: DGLOpenGL.pas ist definitiv die richtige wahl ;)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


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


Wer ist online?

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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]