Hallo,
ich bin noch immer dabei, mich in
DirectX 8 mit
Delphi 6 einzuarbeiten.
Bisher hab ich meine Texturen ausschließlich mit
Sprites gezeichnet.
Das war relativ einfach und funktioniert inzwischen wunderbar.
Nun hab ich den Schritt zu
Vertexen gewagt und komme an einer Stelle nicht weiter.
Es geht darum, diese beim Zeichnen umzufärben. Bei den
Sprites habe ich das so realisiert:
Sprite.Draw(Texture, @Source, @Scale, @RotCenter, 0, @Dest, Color);
Als
Color übergebe ich beispielsweise eine rote Farbe: Color := D3DCOLOR_RGBA(255, 25, 25, 255);
Das Ergebnis sieht man hier:
http://img382.imageshack.us/img382/4100/roty.jpg
Das gleiche möchte ich jetzt bei meinen
Vertexen erreichen.
Dass es hier etwas aufwändiger wird als bei den
Sprites hab ich schnell gemerkt.
Beim Zeichnen kann meines Wissens nicht mehr so einfach eine Farbe als Parameter an
DirectX übergeben werden.
Ich verwende folgende
Vertexe:
Delphi-Quellcode:
type
TMyVertex = record
X, Y, Z, rhw: Single;
U, V: Single;
end;
TQuadVertex = array [0..3] of TMyVertex;
Gezeichnet habe ich sie bisher so:
Delphi-Quellcode:
with Device do
CreateVertexBuffer (SizeOf(TQuadVertex),
D3DUSAGE_WRITEONLY,
D3DFVF_XYZRHW or D3DFVF_TEX1,
D3DPOOL_MANAGED,
Quad);
with Quad do
begin
Lock(0, 0, Vertices, 0);
Move(DX.Vertex, Vertices^, SizeOf(TQuadVertex));
Unlock;
end;
with Device do
begin
SetVertexShader(D3DFVF_XYZRHW or D3DFVF_TEX1);
SetStreamSource(0, Quad, SizeOf(TMyVertex));
SetTexture(0, Texture);
DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
end;
Auch das funktioniert einwandfrei, mein derzeit verwendeter Code bietet mir jedoch keine Möglichkeit, die Textur der
Vertexe beim Zeichnen zu verfärben.
Bei meinen Recherchen bin ich u.a. auf die Methode
SetMaterial gestoßen und habe ein paar Versuche damit unternommen.
Ich hab ein
Material erstellt und ihm einen roten
Diffuse, Specular und
Ambient Wert zugewiesen.
Das
Material hab ich meinem
Device zugewiesen und etwas hilflos einige Einstellungen mit
SetRenderState durchprobiert.
Leider hat sich an meinen
Vertexen nie eine Änderung gezeigt.
Ob das
Material meinem
Device zugewiesen war oder nicht, hatte überhaupt keine Auswirkung.
Bringt die Zuweisung eines
Materials überhaupt etwas, wenn man kein Licht verwendet?
Wie kann ich die Textur meiner
Vertexe beim Zeichnen umfärben?
Da ich trotz meiner Bemühungen auf keinen grünen Zweig komme, wollte ich es mal im Forum probieren.
Hat jemand vielleicht ein paar Tipps / Links für mich?
Würde mich sehr darüber freuen!
Gruß an alle
Xoric