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

1

29.10.2013, 18:58

Textur einfärben

Hallo zusammen,

ich suche gerade einen Weg eine vorhandene Textur in DX9 einzufärben. In Gimp lege ich einfach eine 2. Ebene, mit meiner Wunschfarbe, auf die Textur und stelle den Modus auf "Farbe". Gibt es einen geeigneten Renderstate für diese Operation in DX9? Oder muss ich da mit einem Pixelshader drauf gehen?

Die Variante, in der ich die Vertices in die Zielfarbe einfärbe, suche ich nicht. Hier bleibt Weiß nicht Weiß sondern erhält die Farbe der Vertices (Multiplikative Verknüpfung, oder?).

Im Anhang befindet sich ein Beispiel, dass man Vorhaben evtl. etwas besser verdeutlicht.
»Itchy« hat folgendes Bild angehängt:
  • Beispiel.PNG

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

29.10.2013, 19:04

Nein, mit der Fixed Function Pipeline geht das nicht.
Da brauchst du einen Shader, der die RGB-Farbe in ein anderes Farbmodell konvertiert (z.B. HSV), dort dann die Farbkomponente ändert (bei HSV wäre das H) und wieder zurück nach RGB rechnet.

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

3

29.10.2013, 19:29

Falls möglich würde ich die Daten gleich als HSV laden. ;)
Zur Not heißt das HSV direkt in RGB abspeichern. Sieht nur lustig aus, wenn man das mit nem Viewer öffnet.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

4

01.11.2013, 17:29

Hmmm... in OpenGL habe ich das gelöst, indem ich mittels glColor4f(...) eine Farbe hinzugefügt habe, und einen Blendmodus aktiviert habe. Jetzt weiß ich natürlich nicht, wie das in DirectX geht, weil ich da weder Durchblicke, noch irgendeinen Code bei mir zum Laufen kriege....

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

01.11.2013, 17:53

Das ist eine andere Art der Umfärbung. Die will er aber nicht, er will etwas besseres. ;)
Mit der einfachen Multiplikation kannst du z.B. nie aus einem Rot ein Grün machen.

6

01.11.2013, 18:35

Da hast du recht ;), das habe ich falsch verstanden. Nun mit der Fixed-Function-Pipeline fiele mir dazu auch nicht wirklich eine andere Möglichkeit ein, als die Farbwerte der Pixel noch vor dem Hochladen der Textur umzuändern....

Werbeanzeige