Entwickler-Ecke

Multimedia / Grafik - Textur laden: Programm beendet


der organist - Fr 11.10.13 20:03
Titel: Textur laden: Programm beendet
Liebes Forum,

ich versuche gerade ein Quad mit Textur zu erzeugen mit Hilfe des bekannten Tutorials(http://wiki.delphigl.com/index.php/Tutorial_Lektion_4). Mit diesem Quelltext habe ich mein Problem: Das Fenster wird nicht angezeigt; Das Programm schließt sich gleich wieder.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
procedure TForm1.FormCreate(Sender: TObject);
var
  tex: PSDL_Surface;
begin
  DC:=GetDC(Handle);
  RC:=CreateRenderingContext(DC,[opDoubleBuffered],32,24,0,0,0,0);
  ActivateRenderingContext(DC, RC);
  glViewport(00, ClientWidth, ClientHeight);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(60, ClientWidth/ClientHeight, 0.1100);
  glMatrixMode(GL_MODELVIEW);

  //CreateZCoord;

  glEnable(GL_TEXTURE_2D);

  tex := IMG_Load(PChar(ExtractFileDir(paramStr(0))+'\Textur.bmp'));
  if assigned(tex) then
  begin
    glGenTextures(1, @TexID);
    glBindTexture(GL_TEXTURE_2D, TexID);

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

    glTexImage2D(GL_TEXTURE_2D, 03, tex^.w, tex^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex^.pixels);

    SDL_FreeSurface(tex);
  end;

end;


Sobald ich die markierten Zeilen auskommentiere, ist kein Problem. Sobald aber eine von beiden wieder dabei ist, tritt das erleuterte Problem auf.

Ich habe keine Idee und kann mir auch nicht mit meinen "normalen" Debuggerfähigkeite helfen.. Habt ihr eine Idee?

Gruss, Lukas


rushifell - Sa 12.10.13 08:56

Hallo Lukas,

ich glaube, für IMG_LOAD benötigst Du die entsprechende DLL. Hast Du diese zusätzliche DLL? Ich nutze zum Laden der Texturen die glBitmap Unit, die Du auf der von Dir genannten Website runterladen kannst. Auf der Seite gibt's auch aktuelle Header für SDL. Viele der Tutorials sind leider schon sehr alt.

Ich empfehle Dir außerdem Dich im Dgl-Forum anzumelden. Dort kann Dir bei solchen Problemen garantiert jemand weiterhelfen.

Viele Grüße


Bergmann89 - Sa 12.10.13 15:01

Hey,

das das Programm einfach beendet wird klingt für mich nach ner unhandled Exception die aus irgend einem Grund nicht vom Debugger aufgefangen und angezeigt wird. Häng mal einen Handler an Application.OnException und guck ma ob die Exception evtl. da durch kommt. Ansonsten wie rushifell schon gesagt hat: bei DGL könnte dir da evtl eher jmd helfen.

MfG Bergmann.


rushifell - Mi 23.10.13 03:07

Mal ne ganz blöde Frage (ich weiss, es gibt keine blöde Fragen ;-)) : Initialisiert Du überhaupt SDL? Warum Du die VCL mit SDL kombinierst, war mir sowieso schleierhaft. Bin aber nicht weiter darauf eingegangen, da Du keine Rückmeldung mehr gegeben hast.

Auf der von Dir genannten Website gibt's einwandfrei funktionierende Templates für VCL und SDL. Beides zu kombinieren macht meiner Meinung nach wenig Sinn.