Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Kasenoru

Frischling

  • »Kasenoru« ist der Autor dieses Themas

Beiträge: 79

Beruf: Softwareentwickler

  • Private Nachricht senden

1

13.04.2006, 23:33

Colorkey bei Surfaces

Also, es gibt folgendes Problem:
Sagen wir mal ich erstelle mir eine Surface, mit der Funktion D3DXLoadSurfaceFromFile lade ich anschließent eine Grafik in die Surface.
Die Funktion D3DXLoadSurfaceFromFile besitzt einen Parameter namens ColorKey, dieser ist in der DirectX Dokumentation wie folgt beschrieben:

Zitat

ColorKey:
D3DCOLOR value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys Thus, for opaque black, the value would be equal to 0xFF000000.

Will heißen, das ich hier einen Farbwert angeben kann, der dann später durch Transparentes Schwarz ersetzt wird.
Leider funktioniert das ganze nur zur Hälfte, die Farbe wird zwar gegen Schwarz ersetzt, allerdings ist dieses Schwarz nicht transparent.
Was habe ich Falsch gemacht?
Bei Texturen klappt es komischerweise(Funktion D3DXCreateTextureFromFileEx).

Ich wäre für eine Hilfreiche Antwort dankbar.

MFG

Kasenoru

Anonymous

unregistriert

2

13.04.2006, 23:49

Generell muß mal jeden einzelnen Pixel abfragen und ggf. kopieren. Surfaces sollte man sowieso nicht unter Direct3D benutzen sondern nur Texturen in Combo mit statischen Vertexbuffern für die 2D Ausgabe.

Kasenoru

Frischling

  • »Kasenoru« ist der Autor dieses Themas

Beiträge: 79

Beruf: Softwareentwickler

  • Private Nachricht senden

3

14.04.2006, 00:22

d.h. einmal pro Frame den BackBuffer und das zu kopierendes Surface speeren und dann alle Pixel von hand kopieren, bloß das ich alle Pixel die ich nicht haben will weglasse?
Würde das nicht viel zu viel Zeit in anspruch nehmen?

Aber warum gibts dann überhaupt nen Colorkey als parameter wenn er garnicht funktioniert?


Zitat

Surfaces sollte man sowieso nicht unter Direct3D benutzen sondern nur Texturen in Combo mit statischen Vertexbuffern für die 2D Ausgabe.

ja ich weiß, bisher habe ich auch immer Texturen benutzt, nur wollte dann halt mal Surfaces ausprobieren.

Anonymous

unregistriert

4

14.04.2006, 09:39

Kasenoru
Weil D3DX Murks ist in vielen Dingen und mit dem richtigen Direct3D gar nichts am Hut hat. Einer der vielen Gründe wieso D3DX im Gewerbe so verpöhnt ist.

Surfaces brauchste nicht zu benutzen, jedenfalls sicherlich nicht für das was du aktuell machst.

Werbeanzeige