Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

[openGL] Wie kriegt man ein JPEG-Bild in eine Textur rein?
Gehe zu Seite Zurück  1, 2, 3
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 08.07.2007, 15:06    Titel: Antworten mit Zitat

Ich werde es gleich mal mit einer anderen Version der FreeImage.dll versuchen...

|€dit|
Neeeee mysterious.....
...... lade mal deine .exe hoch.... werde das gleich mal auf anderen rechnern testen....
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 08.07.2007, 15:58    Titel: Antworten mit Zitat

Hallo,
hier die exe: http://other.storm-master.de/fbporticula41.exe
In meiner Version musst du eine 1024x786 große BMP namens "test.bmp" im selben Verzeichnis liegen.
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 08.07.2007, 16:44    Titel: Antworten mit Zitat

Das sieht bei mir so aus:
[/img]
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 08.07.2007, 17:01    Titel: Antworten mit Zitat

Das Bild ist an sich korrekt. Bloß wie das "Bitte warten... skaliere Bild" dorthin kommt, ist mir schleierhaft. Dass das Bild schief war, lag daran, dass ich die Koordinaten des Vierecks falsch gesetzt habe. Ich habe daher die EXE neu hochgeladen.

Aber komisch, dass bei dir die selbst kompilierten Programme andere Ergebnisse erzeugen als bei mir.
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 08.07.2007, 17:03    Titel: Antworten mit Zitat

Das "bitte warten" ist in der test.bmp happy

OK

ich probiers nochmal mit der neuen versi....

|edit|

Der Rand unten ist jetzt nur nicht mehr gebogen, sodnern gerade...
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 08.07.2007, 17:20    Titel: Antworten mit Zitat

Hm... dann fass ich mal zusammen:

1) Die freeimage.dll kann es nicht sein, da wir dieselbe Version nutzen. (3.9.3.0)
2) Die FB-Version kann es faktisch nicht sein, da wir dieselbe nutzen. Oder doch nicht? Schließlich ändert sich die CVS ständig. Ich habe meine vor 2 Tagen gezogen.
3) Deine OpenGL-Treiber funktionieren wie sie sollen, da in der EXE alles korrekt angezeigt wurde.
4) Die Quelldatei (BMP, JPEG, whatever) ist auch nicht die Ursache, solange diese auf einen Buffer gebracht werden, deren Größe eine 2er Potzen ist.
5) Was noch offen liegt, ist die Sache mit der Funktion "rawjpeg". Sie gibt mir zwar ein Handle, aber nachdem die Sache mit CreateTexture behandelt wurde, erhalte ich kein OpenGL-Handle zurück...

Oh ich sehe gerade, dass die Buffer-Größenerfassung falsch ist:

Code:
      w = cptr(Uinteger Ptr, buffer)[2]       
      h = cptr(Uinteger Ptr, buffer)[3]

Er spuckt mir dabei falsche Werte aus. Das müsste angepasst werden und dann können wir weitersehen. Vlt. findest du eine Möglichkeit die Größe zu ermitteln.
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 08.07.2007, 17:58    Titel: Antworten mit Zitat

Da wir ja wissen, dass die Function RawJPEG uns einen Bildpuffer vom Typ 1 zurückgibt, wissen wir auch die Speicheradressen.

Das dürfte gleich fertig sein mom.
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 08.07.2007, 18:43    Titel: Antworten mit Zitat

Code:
w = cptr(Uinteger Ptr, buffer)[0] shr 3
      h = cptr(Uinteger Ptr, buffer)[3]


???
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 08.07.2007, 18:51    Titel: Antworten mit Zitat

Ja.. scheinbar gibt rawjpeg nicht mal die richtigen Werten für den Typ 1 her. Denn normalerweise funktioniert die Formel, die du eben geschrieben hast für den Typ 1.
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 08.07.2007, 18:55    Titel: Antworten mit Zitat

*idee*

Ich nehm mal an, dass Delphi DLLs erstellen kann

Das als DLL kompiliert => eingebunden => tada!
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 08.07.2007, 18:57    Titel: Antworten mit Zitat

Ich hab den Fehler gefunden in deinem Source:

Diese Zeile:

Code:
MemCpy CPtr(Zstring Ptr, Sprite) + 4, Bits, SprWidth * SprHeight * 4


... überschreibt den Header des erstellten Buffers! Ich kenn mich mit MemCpy nicht so gut aus, weswegen du das fixen müsstest.

Prüfen kannst du es selber, indem du in rawjpeg folgendes schreibst:

Code:
      w = cptr(Uinteger Ptr, Sprite)[2]       
      h = cptr(Uinteger Ptr, Sprite)[3]       
      WriteToConsole "rawjpeg: w:" + str(w) + ", h:" + str(h)
   
    MemCpy CPtr(Zstring Ptr, Sprite) + 4, Bits, SprWidth * SprHeight * 4

      w = cptr(Uinteger Ptr, Sprite)[2]       
      h = cptr(Uinteger Ptr, Sprite)[3]       
      WriteToConsole "rawjpeg: w:" + str(w) + ", h:" + str(h)


Vorher noch w, h als integer in der Funktion definieren.
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 08.07.2007, 19:32    Titel: Antworten mit Zitat

Den Code habe ich ja noch nicht einmal geschrieben peinlich

http://forum.qbasic.at/viewtopic.php?t=4001&highlight=jpeg+loader

Ich habe uach gar keine Ahnung von memcpy, steht nichts zu in der refernz ....
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 08.07.2007, 20:10    Titel: Antworten mit Zitat

Kann es sein, daß MemCpy ein C[++]-Funktion ist?
http://www.linuxinfor.com/german/man3/memcpy.html
hth
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 08.07.2007, 20:35    Titel: Antworten mit Zitat

ja ist es zwinkern

Mit google findet man auch nur C/C++
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 08.07.2007, 21:15    Titel: Antworten mit Zitat

Hallo,
ich habe dem ganzen Ärger nun ein Ende gesetzt. Ich habe nun eine eigene Ladefunktion geschrieben und somit den Umweg mit dem FB-Buffer gemieden.

Also fiel CreateTexture raus und es kam die Funktion load_opengl_texture rein, welche alle Bildformate laden kann, welche FreeImage überhaupt laden kann.

http://other.storm-master.de/fbporticula42.bas

Probier es bitte aus. Bei mir funktioniert es einwandfrei bisher! lächeln
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 08.07.2007, 21:44    Titel: Antworten mit Zitat

Danke!

mal gleich ausprobieren....

[edit:]
Ich glaube ich plätte mein Win mal....
.... selbst im normalen modus stürzt der ab....
.... gleich mal mit der 0.16b ausprobieren....

.... mit 0.16 funzt alles Yahooo!!!! vor Freude klatschen
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 08.07.2007, 22:04    Titel: Antworten mit Zitat

Keine Ursache grinsen
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3
Seite 3 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz