Habe das Problem nun in den Griff bekommen.
Wie immer hier die Lösung, falls es noch andere interessiert.
Meine alten
Vertexe habe ich durch
Vertexe vom Typ
D3DTLVERTEX ersetzt.
Diesen Typ gibt es meines Wissens seit
DirectX 8 nicht mehr, man kann ihn aber leicht selbst bauen:
Delphi-Quellcode:
type
D3DTLVERTEX = record
x, y, z, rhw: Single;
Color, Specular: D3DCOLOR;
U, V: Single;
end;
Die
Specular Farbe wird nicht verwendet, sollte aber trotzdem initialisiert werden.
Entscheidend ist nun die Farbe, die
Color zugewiesen wird, hier im Beispiel ist es rot.
Delphi-Quellcode:
// Specular mit weiß initialisieren
Vertex.Specular := D3DCOLOR_XRGB(255, 255, 255);
// Color = rot setzen
Vertex.Color := D3DCOLOR_XRGB(255, 0, 0);
Beim Zeichnen muss jetzt der
Vertex Shader vom
Device an folgende Einstellung angepasst werden.
Device.SetVertexShader(D3DFVF_XYZRHW or D3DFVF_DIFFUSE or D3DFVF_SPECULAR or D3DFVF_TEX1);
Textur und
Stream Source noch setzen und das ganze noch zeichnen lassen:
DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
Funktioniert bei mir nun einwandfrei und ohne Beeinträchtigung der fps.
Danke für deine Hilfe igel!
Gruß an alle,
Xoric