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

Aktuelle Zeit: Sa Jun 08, 2024 02:54

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: SDL_image.dll und Delphi / Lazarus
BeitragVerfasst: Di Feb 28, 2012 18:19 
Offline
DGL Member

Registriert: Mo Aug 31, 2009 13:19
Beiträge: 151
Heyho, ich will mithilfe der sdl_image.dll meine Texturen laden. Allerdings lässt sich das Programm nicht starten, Lazarus meldet unmittelbar nach dem Kompilieren einen Anwendungsfehler mit dem schlichten und für mich völlig aussagebefreiten Text "Die Anwendung konnte nicht korrekt gestartet werden (0xc000007b). Klicken sie auf "OK", um die Anwendung zu schließen".

Sagt das irgendeinem was? Hab ich die falsche SDL_image.dll? Hülfe :)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Feb 29, 2012 10:14 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Es könnte sein, dass dir ein paar Abhängigkeiten der SDL_image.dll fehlen, wie die libpng, libjpeg, zlib und libtiff.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy 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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Mär 02, 2012 17:52 
Offline
DGL Member

Registriert: Mo Aug 31, 2009 13:19
Beiträge: 151
Scheinbar lags daran, dass ich es für ne kluge Idee hielt, die 64Bit-Version der dll zu benutzen. Hätte auch selbst drauf kommen können, dass das ne Fehlerquelle sein könnte. Mit 32Bit läufts jetzt...fast.

Das SDL_FreeSurface() am Ende meiner Routine zum Texturen erstellen erzeugt aus irgendeinem Grunde nen External: SIGSEV. SDL meldet keinen Fehler soweit ich das einschätzen kann. Jemand Vorschläge?

P.S.: Hab jetzt nochmal explizit an der Stelle nachgeschaut, SDL_GetError liefert nur '', also keinen Fehler...

Und hier noch die wesentlichen Teile der Routine (hab nur das Logging für die Übersichtlichkeit entfernt):

Code:
  1.  
  2. function TSTW_TextureManager.CreateTexture(Path: String): TSTW_TextureObject;
  3. var
  4.   tex_surface: PSDL_Surface;
  5.   texture:     GLUint;
  6.   err:         GLenum;
  7.   x, y:        Integer;
  8.   a, b:        PtrUInt;
  9. begin
  10. Result := nil;
  11.  
  12. tex_surface := IMG_Load(PChar(Path));
  13. if Assigned(tex_surface) then
  14.   begin
  15.   // Texture vertikal spiegeln
  16.   for y := 0 to ((tex_surface^.h - 1) div 2) do
  17.     for x := 0 to tex_surface^.w - 1 do
  18.     begin
  19.       a := SDL_GetPixel(tex_Surface, x, y);
  20.       b := SDL_GetPixel(tex_Surface, x, tex_surface^.h - 1 - y);
  21.  
  22.       SDL_PutPixel(tex_Surface, x, y, b);
  23.       SDL_PutPixel(tex_Surface, x, tex_Surface^.h - 1 - y, a);
  24.     end;
  25.  
  26.   glGenTextures(1, @texture);
  27.   glBindTexture(GL_TEXTURE_2D, texture);
  28.   glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
  29.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
  30.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  31.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
  32.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
  33.   glTexImage2D(GL_TEXTURE_2D, 0, 4, tex_surface^.w, tex_surface^.h, 0, GL_BGRA,
  34.                GL_UNSIGNED_BYTE, tex_surface^.pixels);
  35.  
  36.   result := TSTW_TextureObject.Create;
  37.   result.Height := tex_surface^.h;
  38.   result.Width  := tex_surface^.w;
  39.   result.bpp    := tex_surface^.Format^.BitsPerPixel;
  40.   result.glName := texture;
  41.  
  42.   SDL_FreeSurface(tex_surface);
  43.   end;
  44. end;
  45.  


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Mär 02, 2012 18:56 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich hoffe, du benutzt auch von der SDL.dll die 32bit version? ;) Ansonsten weiß ich gerade nicht...

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy 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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Mär 02, 2012 19:07 
Offline
DGL Member

Registriert: Mo Aug 31, 2009 13:19
Beiträge: 151
Wie find ich denn das am Einfachsten raus?


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 24 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.009s | 14 Queries | GZIP : On ]