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

Aktuelle Zeit: Fr Jul 18, 2025 08:17

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Fr Jul 13, 2007 07:37 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Sep 23, 2005 20:31
Beiträge: 212
Wohnort: Sachsen/ Vogtland
Moin,

Ich bin gerade dabei meine Win32-SDL Anwendung so umzubauen, dass ich sie auch mit dem Freepascal-Compiler kompilieren kann.
Dabei stosse ich auf Probleme mit der textures.pas, welche zum einen die Unit "Graphics" nutzt (die FPC nicht kennt) und zum anderen scheinbar nicht fpc-konformen Assemblercode (procedure SwapRGB) enthält.
Gibt es eine Ersatzunit für Delphi, FPC und SDL um Texturen zu laden?

Dank und Gruß,
Daniel

_________________
Heute code ich, morgen debug ich, und übermorgen caste ich die Königin auf int.
http://www.2ndmoon.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 13, 2007 10:22 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Im DGL-SDK befindet sich eine easySDLTextures. Das ist derzeit die einzig Unit die ich kenne. Ich habe zwar an meiner glBitmap schon was in dieser Richtung gemacht aber das ist noch nicht fertig.

Assemblercode: Dazu musst du bei FPC ein Ziel für den Assembler angeben. Das ist dann typischerweise Intel. In der dglOpenGL befindet sich oben so ein paar Defines. Da kann man das gut sehen.

Graphics: Das könntest du zur Not auch stumpf auskommentieren. Wird meines wissens nach nur für die jpegs benutzt.

Bei dem Rest sollte es eigentlich keine Probleme geben. Denke ich.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 14, 2007 18:23 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Sep 23, 2005 20:31
Beiträge: 212
Wohnort: Sachsen/ Vogtland
Ok. Danke. Unter Delphi hab ich alles wieder am Laufen. Ging relativ schmerzfrei, bis auf eine Methode zur Pfadtrennzeichenkorrektur, welche mir im Moment falsch zu laufen scheinen. Aber da wird man sich schon was bei gedacht haben, und das merke ich, sobald ich unter Linux kompilieren will. :)

Dank und Grüße,
DNA

_________________
Heute code ich, morgen debug ich, und übermorgen caste ich die Königin auf int.
http://www.2ndmoon.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 14, 2007 18:56 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Wenn du von easySDLTextures redest:
Unter Linux ist das Arbeitsverzeichnis nicht automatisch das Verzeichnis der Exe. Wenn du z.B. eine Exe über den Konquerer startest hat sie teilweise das falsche Arbeitsverzeichnis. Und in diesem werden dann die Texturen gesucht und nicht gefunden. Von daher wird einfach jeder relativer Pfad zu einem absoluten umgewandelt um das Problem zu umgehen.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 14, 2007 21:20 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Auch unter windows kann das arbeitsverzeichnis von programmverzeichnis verschieden sein. Drum verwende ich auch immer extractfilepath(paramstr(0)) um nen absoluten pfad zu erhalten.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 14, 2007 21:57 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Sep 23, 2005 20:31
Beiträge: 212
Wohnort: Sachsen/ Vogtland
Moin,

um es etwas konkreter zu machen ging es um folgende 2 Stellen:
1.
Code:
  1. function TEasySDLTextures.CorrectPath(oldPath: String): String;
  2. ...
  3. begin
  4.   if Pos('',oldPath)<>0 then
  5.   begin
  6. //    Writeln(Illegal character \ in: '+oldpath)
  7.     MessageDlg('Illegal character \ in: '+oldpath,mtError, [mbOk], 0);
  8.     oldPath:=StringReplace(oldPath,'','/',[rfReplaceAll]);
  9.  

Hier habe ich mit Turbo Delphi einen Fehler beim Ausführen von writeln erhalten. Daher hab ich auf MessageDlg umgebaut.

2.
Als zweites habe ich das Verhalten beim Laden einer Textur mit gleichem Namen (ggf. Pfad) modifiziert. Und zwar erhält man nun statt einem nervigen Fehler, die bereits geladene TexturID, wenn versucht wird eine Textur mit bereits verwendetem Namen zu laden.
Code:
  1. ALT
  2.     if fNames.IndexOf(texture_name)<>-1 then
  3.     begin //texture_name already in use
  4.       raise EEasySDLTextureFail.Create('Texture name already in use: '+texture_name);
  5.       exit;
  6.     end;
  7.  

Code:
  1. NEU
  2.   if fNames.IndexOf(texture_name)<>-1 then
  3.   begin  //alte Textur ausspucken
  4.     Result := fTexture_ID[fNames.IndexOf(texture_name)];
  5.   end else
  6.   begin  //normales laden  
  7.  

_________________
Heute code ich, morgen debug ich, und übermorgen caste ich die Königin auf int.
http://www.2ndmoon.de


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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 | 16 Queries | GZIP : On ]