JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=9c32ed01c79321e7cb57530143143990Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

[DX] IDirect3DTexture9 eines eigenen Dateiformates

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Grafik und Sound
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 06.05.2006, 22:06    Titel: [DX] IDirect3DTexture9 eines eigenen Dateiformates Antworten mit Zitat

Hi Leuzz.

Ich hab mir ein eigenes, verschlüsseltes Dateiformat (.bncf) für Bilder programmiert. Konvertieren in versch. andere Formate hab ich schon, aber es geht darum, dass ich von dieser Datei eine IDirect3DTexture9 bekommen will. Natürlich kann ich D3DXCreateTextureFromFileEx() net nehmen, die kennen mein Format ja net. Ich hab mir das so gedacht: Ich lade mein Format und konvertiere schnell in ein DIB. Die einzelnen Bestandteile zu kriegen ist kein Problem. Ich brauche nur eine Funktion, die mir von einer geräteunabhängigen Bitmap (also .bmp Arrow DIB, wie immer) im Programm eine IDirect3DTexture9macht. In der MSDN hab ich D3DXCreateTextureFromFileInMemoryEx() oder so gefunden, ich bin mir jedoch net sicher, ob das die richtige ist und wie ich das so machen könnte. Kennt ihr die Funktion die ich suche? Oder wie ich das sonst machen kann?

Gruß DXer Rolling Eyes
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
GreveN
JLI Master


Alter: 37
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 06.05.2006, 22:41    Titel: Antworten mit Zitat

Kenn mich jetzt zwar mit D3D nicht aus, aber sollte doch kein Problem sein, die BMP einfach zu laden (also den Datenblock, ist ja nichtmal komprimiert oder so), und dann mittels einer D3D-Funktion in eine kompatible Textur umzuwandeln...

Das Device stellt doch eine Methode 'CreateTexture' zu Verfügung soweit ich weiß, damit eine Textur erzeugen, die dann locken und den Datenblock reinkopieren.

Achja, BMP speichert die Bilder afaik verkehrt herum...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 06.05.2006, 22:56    Titel: Antworten mit Zitat

erstmal thx für die schnelle Antwort am Abend Smile
GreveN hat Folgendes geschrieben:
Kenn mich jetzt zwar mit D3D nicht aus, aber sollte doch kein Problem sein, die BMP einfach zu laden (also den Datenblock, ist ja nichtmal komprimiert oder so), und dann mittels einer D3D-Funktion in eine kompatible Textur umzuwandeln...
diese Funktion such ich ja Wink Also ich kenne D3D-Funktionen, die einem eine Textur von einer Datei außerhalb geben, egal ob bmp, jpg, usw. Aber eine Funktion, der man die bmp o.Ä. einfach übergibt... naja. Ich könnte natürlich mein Format laden, in bmp umwandeln und speichern, textur erstellen und dann wieder die Datei löschen; aber dadurch gibts ein paar nachteile: viel zeitverlust, meine eigentlich geschützeten Dateien sind kurz als bmps vorhanden etc. Deshalb müsste es ja auch ne Funktion geben, die innerhalb erstellte Bitmaps o.Ä. annimmt

GreveN hat Folgendes geschrieben:
Das Device stellt doch eine Methode 'CreateTexture' zu Verfügung soweit ich weiß, damit eine Textur erzeugen, die dann locken und den Datenblock reinkopieren.

naja, gibt mehrere Sachen die man da beachten muss. Man kann net einfach den Datenblock reinkopieren, mann muss den vorher anpassen, also umdrehen wenn nötig, von BGR nach RGB wenn nötig, dekomprimieren uswusf. Das ist ja eigentlich die Arbeit von DX, den DX kann ja Bitmaps von außerhalb auch umdrehen, dekompr. etc.

GreveN hat Folgendes geschrieben:
Achja, BMP speichert die Bilder afaik verkehrt herum...
naja, manchmal. Diese Information kann man abfragen bei BITMAPINFO::BITMAPINFOHEADER::biHeight; wenn positiv dann richtig herum, wenn negativ dann verkehrt herum
btw: bmps können auch komprimiert sein

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
GreveN
JLI Master


Alter: 37
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 06.05.2006, 23:11    Titel: Antworten mit Zitat

DirectXer hat Folgendes geschrieben:
GreveN hat Folgendes geschrieben:
Das Device stellt doch eine Methode 'CreateTexture' zu Verfügung soweit ich weiß, damit eine Textur erzeugen, die dann locken und den Datenblock reinkopieren.

naja, gibt mehrere Sachen die man da beachten muss. Man kann net einfach den Datenblock reinkopieren, mann muss den vorher anpassen, also umdrehen wenn nötig, von BGR nach RGB wenn nötig, dekomprimieren uswusf. Das ist ja eigentlich die Arbeit von DX, den DX kann ja Bitmaps von außerhalb auch umdrehen, dekompr. etc.

Frage, warum willst du überhaupt den Umweg über DIB/BMP machen? Du weißt doch wie dein Format aufgebaut ist, lade die Bilddaten doch einfach direkt und kopier den Block in eine gelockte Textur.

Btw.: So eine Bitmap API-ready zu kriegen ist auch nicht der hammermäßige Aufwand, BGR-RBG-Konvertierung und einmal horizontal spiegeln ist eigentlich mit wenigen Zeilen Code gemacht... Über evt. BMP-Komprimierung weiß ich nichts... Wink
So gehts zumindest ohne D3DX. Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Dr. Best
Senior JLI'ler


Alter: 33
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 07.05.2006, 00:05    Titel: Antworten mit Zitat

Also ich würde dafür auch einfach eine Textur mit IDirect3DDevice9::CreateTexture erstellen die dann locken und deine Daten da dann reindekomprimieren.
Du musst doch sowieso deine Daten in ein Feld von RGB Daten umwandeln.
Wenn du das aus irgendeinem Grund den ich nicht verstehe nicht machen willst kannst du auch ein Datenarray mit einer BMP erstellen und die dann direkt aus diesem Array mit D3DXCreateTextureFromFileInMemoryEx laden. Aber das fänd ich wirklich sinnlos Wink .
_________________

Ich bin da, wer noch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 07.05.2006, 08:49    Titel: Antworten mit Zitat

nagut, dann mach ich das so mit createTextur. Ich dachte mir nur, wenn DX eine bmp per speicherpfad laden könne, müsste es auch innerhalb per Übergabe gehen Wink

@GreveN
zur Bitmapkomprimierung, da gibts z.B. die Lauflängencodierun für 8Bit/Pixel und 4Bit/Pixel (BI_RLE4 und BI_RLE8) Da werden aufeinanderfolgende gleiche Pixelfarben unter einer zusammen gefasst; also aus 5mal 0x33
Code:
0x33 0x33 0x33 0x33 0x33
in einer unkomprimierten Bitmap wird
Code:
0x05 0x33
in einer komprimierten Bitmap usw.

Gruß DXer, danke für die Hilfe
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
GreveN
JLI Master


Alter: 37
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 07.05.2006, 09:47    Titel: Antworten mit Zitat

Jau, klingt nach Standard RLE, ähnlich wie in TGA.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 07.05.2006, 10:28    Titel: Antworten mit Zitat

Ich glabue kaum das BMP Dateien verschlüsselt sein können. Jedenfalls nicht Standardbmp dateien. Andere Bitmaps wie zum Beispiel TGA unterstützen aber definitiv RLE Kompression.
CreateTexture ist wirklich easy, benutze ich bei meinem TGA Loader auch, funktioniert wunderbar und ist insgesamt mit Laden der TGA DAtei bloß 1,5 Seiten, also wirklich nicht viel. Farbkonvertierung und so geht auch schnell, ist eine einzige Schleife mehr net.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 07.05.2006, 12:43    Titel: Antworten mit Zitat

Jonathan_Klein hat Folgendes geschrieben:
Ich glabue kaum das BMP Dateien verschlüsselt sein können.
verschlüsselt net, aber komprimiert. siehe dazu Petzold s.698, da steht die lauflängencodierung (gibt noch andere für BMP) ausführlich beschrieben.
Jonathan_Klein hat Folgendes geschrieben:
Jedenfalls nicht Standardbmp dateien.

was verstehst du unter "Standardbmp"? Geräteunabhängige bmps, wie sie gespeichert werden, sind DIB. d.h. alle Bitmaps, die du mit der endung .bmp auf deinem PC findest, sind DIBs (DDBs sind geräteabhängig und können deshalb net gespeichert werden). Laut MSDN und Petzold können DIBs, (für mich die "standard-bmps") komprimiert werden. Wozu sonst sollte es im BITMAPINFOHEADER eine Variable biCompression geben, wo die Komprimierungsart drin steht. Wenn du mit "Standardbmp"s DDBs meinst, dann hast du in gewisser Weise recht. Die werden net komprimiert. Aber was würde es auch für einen Sinn machen, geräteabhängige Bitmaps, die zur Laufzeit erstellt und auch zur Laufzeit wieder zerstört werden, zu komprimieren Razz `

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Grafik und Sound Alle Zeiten sind GMT
Seite 1 von 1

 
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.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum