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

Aktuelle Zeit: Mi Jul 16, 2025 10:37

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



Ein neues Thema erstellen Auf das Thema antworten  [ 26 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
BeitragVerfasst: Mi Dez 22, 2004 19:04 
Offline
DGL Member

Registriert: Di Dez 21, 2004 20:39
Beiträge: 20
hi

Mag sein, das dies schonwieder eine von den "Napfragen" ist, ich bin halt recht Zielsicher im finden selbiger,
also helft mir doch, bitte, ja ? :oops:

Also, ich hab mir LossyEx's glBitmap.pas zusammen mit der dglOpenGl.pas gesaugt und in mein Projekt eingebunden.

Jetzt folgende Frage(n):

a.) ich möchte mir meinen eigenen Textureloader schreiben, der mir dann ganz bequem
1.) alle meine Texturen läd (z.B. rekursiv aus einer bestimmten Location),
2.) einfach und korregt die gewünschte Bild Datei "bindet"

Zum laden der Bilder verwende ich folgende Code (Alpha):
Code:
  1.  
  2. function LoadPics: Bool;
  3. var
  4.   i: Integer;
  5. begin
  6.   Result := True;
  7.   for i := 0 to high(texture) do
  8.     if (not LoadTexture(root+TextureName[i], texture[i], true)) then
  9.       Result := False
  10. end;
  11.  


root ist das Verzeichnis gespeichert, indem die Bilder sind.
ich erhalte OHNE root die Fehlermeldung, das er das Bild nicht finden konnte (= absolute Pfadangaben notwendig ?!),
MIT bekomme ich denselben Fehler (nein... ;o) )

folgende Deklarationen für root:
Code:
  1.  
  2. root: String = 'D:\Proggen\Aktuell\ogl\010 own';
  3.  

die Strings
Code:
  1.  
  2.   texture:array[0..1] of GLuInt;
  3.   textureName: Array[0..1] of String = ('gunnm.bmp', 'supersonic.bmp');
  4.  

und damit mein Progg nicht abschwirrt,
Code:
  1.  
  2. function InitGL: Bool;    
  3. begin
  4.   if (not LoadPics) then
  5.     exit;
  6.  

Der Code sieht für mich recht fehlerfrei aus...
Die naheliegenste Frage meinerseits zuerst : Wo ist der Fehler ?

p.s. : mit GLaux hats noch geklappt...auch wenns nur *.bmp's genommen hat :(

Edit1:
Geradeeben wars mir kurzzeitig wieder entfallen, hier also die zweite Frage:
die glBitmap.pas benötigt ja die dglopengl.pas, diese wiederrum muss beim initialisieren auf die oglexts zugreifen können,
weshalb sie direkt hinter den getDC() und wglCreateContext() sitzt, sprich ich müsste sie dann ja in der Uses Klausel meiner *.dpr mitführen;
wenn diese aber auch in meiner texture.pas deklariert ist, könnte / kommt es dann nicht zu Doppeldeklaration und Delphi meckert ?
Ich lerne neben dem Ogl proggen nämlich auch nonVcl, und da könnte es ja anders sein als mit VCL...wer weiss ? :roll:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 22, 2004 20:31 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich habe mir das gerade mal angeschaut und konnte jetzt nichts gravierendes feststellen.

Warum es nicht funktioniert kann ich nicht sagen. Ich entdecke nichts was falsch ist. Evtl müsstest du mal deine Quellen hochladen so, dass ich mir das mal anschauen kann. Aber die Methode LoadTexture habe ich nur implementiert, um den Umstieg von Jan Horns textures.pas zu vereinfachen. Normalerweise solltest du die Klassen benutzen. Da dir dort auch wesentlich mehr Funktionalität zur Verfügung steht als dies in einer Methode möglich wäre.

Frage 2: Was sagt Delphi denn zu dir? Ohne Fehlermeldung kann ich nur raten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 22, 2004 22:44 
Offline
DGL Member

Registriert: Di Dez 21, 2004 20:39
Beiträge: 20
Delphi sagt mir nichts...das war mehr eine provisorische Frage ;)
Ich mach mich morgen mal daran die Klassen zu verwenden...bin heute zu müde...
Den Quellcode lade ich mal Morgen up, wenn ich Zeit habe .

Danke für die Antwort - leider dauerts ne weile bis man mit OGL klarkommt...
Whatever..morgen mehr *gähn*
Ich hab noch vieeeele Fragen.

Grüße,
Kryoko


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 23, 2004 06:25 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Normal kannst du deine Units so häufig einbinden wie du das möchtest. Das ist ganz anders als bei C/C++. Das einzige was Probleme macht ist, wenn du in Unit1 die Unit2 einbindest und von Unit2 die Unit1 wieder einbindest. Da weiß Dlphi nicht, welche er zu erst laden soll. Das aber auch nur, wenn du die im Interfaceteil eingebunden hast. Im Implementationteil spielt das absolut keine Rolle.

Noch was zu OpenGL. Wie äußerst sich denn das nicht laden? Hast du mal im Debugger geschaut wo er aussteigt? Also wo er dann genau meint, dass er was nicht laden konnte. Und ob er das überhaupt meint. Nicht, dass der Fehler noch wo anders liegt. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 23, 2004 09:48 
Offline
DGL Member

Registriert: Di Dez 21, 2004 20:39
Beiträge: 20
Am besten its wohl wenn ich einfach mal den Debugger Text abkupfer :
Zitat:
Project empty.exe raised exception class EResNotFound with message 'Resource gunnm.bmp not found'. Process stopped. Use Step or Run to continue.

erneutes Drücken auf Run / step zeigt:
Zitat:
Exception EResNotFound in module empty.exe at 00023181 Resource gunnm.bmp not found.

Tatsache aber ist :
Die Bilder liegen im selben Ordner wie die .exe, Ich habs schon 2 Mal geprüft... (naja ;o) )
Wie auch immer, im Anhang erstmal die .dpr


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 23, 2004 10:25 
Offline
DGL Member

Registriert: Di Dez 21, 2004 20:39
Beiträge: 20
So, ich hab einfach mal die Class "TglBitmap" fürs laden der Texturen / binden etc. benutzen wollen...
aber anscheinend klappt das damit auch nicht so wie es soll(te)...
Code:
  1.  
  2.   texture: array[0..1] of TglBitmap2D;
  3.    .
  4.    .
  5. function InitGL: Bool;
  6. begin
  7.     Texture.Create('gunnm.bmp');
  8.   .
  9.   .
  10. function DrawGLScene(): Boolean;
  11. begin
  12.   .
  13.   texture.Bind; // auch mit Texture.genTexture oder beides => Error
  14.  

Diesmal bekomme ich aber nur ne EAccessViolation...
Nebenbei : es klappt auch nicht wenn ich keinen Array nehm und einfach nur create, lade, binde, free.

Zumindest wenn man mit dem "Texture loading" startwissen vom DGL-Texture tut auf die glBitmap.pas umsteigen will scheints nicht so einfach zu sein...
Es gibt anscheinend recht große unterschiede weil die glBitMap.pas ja praktisch schon alles implentiert hat und man nurnoch die vorgefertigten Befehle benutzen soll...Also...
:arrow: :arrow: :arrow: Noob needs help

EDIT: nichtmal
LoadTexture('gunnm.bmp', texture, false);
.
.
glBindTexture(GL_TEXTURE_2D, texture);
klappt ohne Fehler...
Wie soll ich bitteschön Bilder laden, wenn die glBitmap.pas bei mir nur Fehler produziert,
und Glaux "zu alt" / "zu langsam" / "zu sonstwas" ist ? :shock:
=> Bitte: Schreibt ein neues Tut, das sich mal mit dem einbinden von Textures MIT der glBitmap.pas beschäftigt. Danke. :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 23, 2004 12:04 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Bevor du dich beschwerst solltest du dich evtl. erstmal mit den Grundlagen von Delphi-Klassen beschäftigen :
Code:
  1. Texture.Create('gunnm.bmp');

kann doch gar nicht gehen, so erstellt man doch keine Klasse.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 23, 2004 12:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich kann Sasha da nur zustimmen. Du solltest dich ein wenig mit den Grundlagen von Delphi beschäftigen. Nebenbei solltest du auch darauf achten was dir dein Delphi als Fehlermeldungen gibt. Die haben in den meisten Fällen einen Sinn und helfen bei der Fehlersuche. Und wenn du Fragen hast und Fehler auftreten, dann die Fehlermeldungen immer mit schreiben. Das macht uns die Arbeit um ein vielfaches leichter. Das dürfte ja auch in deinem Intresse sein!

In deinem Falle ist das Problem, dass du bei dem Aufruf von LoadTexture als dritten Parameter ein True übergeben hast. Dadurch sagst du meine Klasse das sie die Textur aus einer Resource laden soll. Resourcen sind in die Anwendung mit eingebunden. Das ist in diesem Falle aber nicht so also kann er sie nicht laden. Wenn du den dritten Parameter im ersten Quellcode auf False setzt sollte es gehen.

Im zweiten Quellcode LoadTexture('gunnm.bmp', texture, false); kann nicht gehen, da textur ein array ist und du dann eine Stelle angeben musst.

Klassen werden mit Instanzvariable := Klassentyp.Constructorname erstellt.
In deinem Falle wäre das dann so. Textur[0] := TglBitmap2D.Create('Dateiname');


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 23, 2004 12:56 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
Also wenn du den Fehler resource not found kriegst, dann liegt das daran, daß du bestimmt TBitmap.LoadFromResource gemacht hast und dann will er die bitmap unbedingt im *.res file deiner Anwendung finden. Probiers mal mit TBitmap.LoadFromFile

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 23, 2004 15:08 
Offline
DGL Member

Registriert: Di Dez 21, 2004 20:39
Beiträge: 20
@Sascha, Lossy :
Ja, das ich da einen Fehler gemacht habe ist mir auch schon aufgefallen, und ich habe es entsprechend korrigiert.
Code:
  1. Texture := TglBitmap2D.Create('gunnm.bmp');

Nur - dann erhalte ich einen StreamreadError, und schonwieder in der glBitmap.pas
Code:
  1.  
  2. procedure TglBitmap.LoadFromStream(Stream: TStream);
  3. begin
  4.   if (not LoadTga(Stream))
  5.     then
  6.   if (not LoadJpg(Stream))
  7.     then
  8.   if (not LoadBmp(Stream))
  9.     then raise EglBitmapException.Create('TglBitmap.LoadFromStream - Couldn''t load Stream. It''s possible to be an unknow Streamtype.');
  10. end;
  11.  

aber ist auch egal...* *...ich beschäftige mich dann mal wieder mit den Basics von Delphi...
@Sidorion:
Ne daran liegts nicht...die Fehlermeldung verändert sich nur...Fehler bleibt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 23, 2004 15:56 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Wird bei dir die Exception aus der Methode LoadFromStream ausgelöst? Wenn ja, dann zippe mal Bitte dein Bild und lade es hoch. Ich habe schon unzählige Bilder damit geladen. Es wundert mich, warum es ausgerechnet bei dir nicht gehen soll.

Und natürlich tritt in der glBitmap der Fehler auf. Wenn die Datei nicht existiert (oder falsch angegeben wurde) oder irgendwie kaputt ist, dann kann er ja nur bei mir auftreten. Wo sollte er denn sonst auftreten? Und gerade was Bitmaps angeht mache ich nichts selber. Da benutze ich die TBitmap Klasse. Und wenn die auf einmal einen Fehler beinhalten sollte, dann würde mich das sehr wundern.

Langsam glaube ich nämlich, dass dein Bild irgendwie ne Macke hat. Lade das mal bitte gezipped hoch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 23, 2004 18:27 
Offline
DGL Member

Registriert: Di Dez 21, 2004 20:39
Beiträge: 20
Ja, die Exception wird vom LoadFromStream ausgelöst.

nur das Bild ist mit Glaux fehlerfrei ladbar, von daher glaube ich nicht, dass das Bild ne Macke hat...

Edit1:
wenn ich das Bild in ein JPG konvertiere, läd er immerhin die App....nur als BMP will er garnicht...entweder es liegt am Bild....
oder an der glBitmap.pas...

Edit2:
die Texture bleibt nach dem binden nur standartmäßig 'weiß' / blank...
soll heissen nach erfolgreichem Binden habe ich genau da nur ne weiße Fläche, wo eigentlich die Texture hin soll...
wie gesagt, mit Glaux gings einwandfrei...whatever.

Edit3:
nach 3maligen neuerstellen der Texture im Paintshop zeigt er die gunnm. jpg sogar an !!
Oha...!! Ich...bin begeistert...beim bmp schmiert er immernoch ab...egal obs neuerstellt ist oder nicht.

Edit4:
Aber die Quali der Texture gefällt mir...nice...oder so...
Aber warum ers mit dem BMP nicht nimmt würd ich dennoch gerne wissen.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 23, 2004 19:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
So. Ich habe mir das mal angesehen und er hat Probleme das Bild zu laden. Leider kann ich so auf die schnelle nicht herrausfinden woran es liegt. Nur eines weiß ich. So einfach kann ich das Problem nicht lösen, da ich wie gesagt die TBitmap Klasse von Delphi benutze. Und auf diese habe ich recht wenig Einfluss. An dieser Stelle sogar leider. Achja. Das Problem tritt nur auf, wenn du die Bilder mit Paint speicherst. (zu mindest bei mir) Ich habe sie mit IrfanView und mit Photoshop gespeichert und dann ging es. Evtl muss du deine Bilder noch einmal kurz damit abspeichern und dann geht es. Eine andere Möglichkeit wüsste ich jetzt nicht.

Aber keine Sorge ich werde zusehen, dass ich das Problem genau lokalisiert bekomme und werde, wenn es denn geht, das Problem fixen. Aber so lange bitte kein Paint benutzen. Das kann auch ne Weile dauern, da ich über die Feiertage nur selten an meinem Rechner bin.

Mit welchem Programm und welchen Einstellungen hast du das denn gespeichert?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 23, 2004 20:32 
Offline
DGL Member

Registriert: Di Dez 21, 2004 20:39
Beiträge: 20
Schön das der Fehler nicht immer bei Mir liegt...

Ähm, ich habs mit Paintshop (das tolle Windoof Prog) gespeichert;
Und da kann man ja keine Einstellungen festlegen...

Den Fehler kann ich aber auch mit Photoshop reproduzieren, indem ich
(egal was) als *.bmp abspeichere, mit Fileformat auf Windows, unabhängig von der Farbtiefe ( 16, 24, 32 Bit) oder einer umgekehrten Row order...
Wenn ich hingegen als OS/2 abbspeicher nimmt ers wieder;
siehe Anhang...

Und jetzt könnt ihr wieder freundlich zu mir werden - dafür das er die windoof bmps nicht schluckt kann ich nix... schon garnicht ahnen... :(

EDIT1:
und falls es dir irgendwann beim Fixen hilft: hier ein link zu einem Artikel, der sich mit den Unterschieden von OS/2 zu Windows Bitmaps beschäftigt :
http://netghost.narod.ru/gff/graphics/summary/os2bmp.htm

Edit2:
scheint nur eine unterschiedliche Anzahl an Feldern zu sein, die im Header angegeben ist...
Du machst das schon... :wink:


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 23, 2004 22:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Der "Fehler" liegt gewissermaßen auch nicht bei mir sondern in etwas was ich verwende. Und das kommt von Borland. An der Stelle kann ich so jetzt auch nichts dran ändern. Außer ich mache es komplett neu und das habe ich aber nicht vor. Und zum Thema Photoshop. Damit lief es bei mir! Ich habe es zwar nur als Windows Bitmap gespeichert aber das ging auf anhieb. Und auch wärend der Entwicklung habe ich viel mit Bitmaps gemacht und hatte dort nie Probleme. Im Zweifelfalle kannst du immernoch TGA oder JPG benutzen. Wobei TGA da besser ist, da du dort auch direkt den Alphakanal mit ablegen kannst.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 26 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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 ]