Marscel
2009-03-18, 16:44:06
Ich nutze hier SlimDX, ein inoffizieller Nachfolger von DirectX Managed, mit C# VS EE 2008. Bisher hab 3D-Sachen immer über irgendwelche Frameworks realisiert (Processing, XNA oder auch OpenGL), da war das einfacher.
Noch ziemlich am Anfang wollte ich ein Raster zeichnen, Koordinaten stimmen auch alle. Das Vertex-Struct sieht so aus - aus irgendeine Tutorial kopiert:
[StructLayout(LayoutKind.Sequential)]
public struct tc_vertex
{
public Vector4 Position;
public int Color;
public static readonly VertexFormat format = VertexFormat.Diffuse | VertexFormat.Position;
}
Beispiel für eine Beschreibung dessen:
vertices[0].Position = new Vector4(0.0f, 0.0f, 0.0f, 1.0f);
vertices[0].Color = Color.Blue.ToArgb();
... // 1 bis 2n-1
Was unterm Strich rauskommt, ist aber das hier:
http://marscel.aplh.de/3dc/raster.png
Nix blau.
Blau wirds z.B. dann, wenn ich VertexFormat.PositionRhw anstelle von
VertexFormat.Position verwende. Da es laut Doku aber heißt, dass PositionRhw bereits transformierte Koordinaten erwartet, kann ich nicht wie gewohnt mit World-, View- und Projection-Matrix arbeiten, sondern müsste zusätzlich wohl alle Matrizen manuell nochmal auf jede Koordinate anwenden.
Hat irgndwer eine Idee, wieso die Linie nur schwarz ist?
Außerdem, Device.Present() sind im OnPaint() eines Child-Fensters. Die CPU-Auslastung liegt bei 99%, nach jedem Paint-Event wird Invalidate() aufgerufen. Was machen? Ist ja nicht normal.
Noch ziemlich am Anfang wollte ich ein Raster zeichnen, Koordinaten stimmen auch alle. Das Vertex-Struct sieht so aus - aus irgendeine Tutorial kopiert:
[StructLayout(LayoutKind.Sequential)]
public struct tc_vertex
{
public Vector4 Position;
public int Color;
public static readonly VertexFormat format = VertexFormat.Diffuse | VertexFormat.Position;
}
Beispiel für eine Beschreibung dessen:
vertices[0].Position = new Vector4(0.0f, 0.0f, 0.0f, 1.0f);
vertices[0].Color = Color.Blue.ToArgb();
... // 1 bis 2n-1
Was unterm Strich rauskommt, ist aber das hier:
http://marscel.aplh.de/3dc/raster.png
Nix blau.
Blau wirds z.B. dann, wenn ich VertexFormat.PositionRhw anstelle von
VertexFormat.Position verwende. Da es laut Doku aber heißt, dass PositionRhw bereits transformierte Koordinaten erwartet, kann ich nicht wie gewohnt mit World-, View- und Projection-Matrix arbeiten, sondern müsste zusätzlich wohl alle Matrizen manuell nochmal auf jede Koordinate anwenden.
Hat irgndwer eine Idee, wieso die Linie nur schwarz ist?
Außerdem, Device.Present() sind im OnPaint() eines Child-Fensters. Die CPU-Auslastung liegt bei 99%, nach jedem Paint-Event wird Invalidate() aufgerufen. Was machen? Ist ja nicht normal.