Elemental
2007-03-18, 19:16:01
Hallo,
ich spiel gerade mit den Beispielen von Tom Miller's Bch zu managed direct x 9.
Jetzt hab ich beim ersten Beispiel für Texturen, wo sich drehende Würfel mit Texturen gezeichnet werden, eine Exception, die ich nicht verstehe.
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
device.Clear(ClearFlags.Target, Color.CornflowerBlue, 1.0f, 0);
SetupCamera();
device.BeginScene();
device.VertexFormat = CustomVertex.PositionTextured.Format;
device.SetStreamSource(0, vb, 0);
// Draw our boxes
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI * 2.0f, angle / (float)Math.PI / 4.0f, 0.0f, 0.0f, 0.0f, tex);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI / 2.0f, angle / (float)Math.PI * 4.0f, 5.0f, 0.0f, 0.0f, tex1);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI * 4.0f, angle / (float)Math.PI / 2.0f, -5.0f, 0.0f, 0.0f, tex2);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI * 2.0f, angle / (float)Math.PI / 4.0f, 0.0f, -5.0f, 0.0f, tex1);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI / 2.0f, angle / (float)Math.PI * 4.0f, 5.0f, -5.0f, 0.0f, tex2);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI * 4.0f, angle / (float)Math.PI / 2.0f, -5.0f, -5.0f, 0.0f, tex);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI * 2.0f, angle / (float)Math.PI / 4.0f, 0.0f, 5.0f, 0.0f, tex2);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI / 2.0f, angle / (float)Math.PI * 4.0f, 5.0f, 5.0f, 0.0f, tex);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI * 4.0f, angle / (float)Math.PI / 2.0f, -5.0f, 5.0f, 0.0f, tex1);
device.EndScene();
device.Present();
this.Invalidate();
}
private void DrawBox(float yaw, float pitch, float roll, float x, float y, float z, Texture t)
{
angle += 0.01f;
device.Transform.World = Matrix.RotationYawPitchRoll(yaw, pitch, roll) * Matrix.Translation(x, y, z);
device.SetTexture(0, t);
device.DrawPrimitives(PrimitiveType.TriangleList, 0, 12);
}
Wenn man das Form, in dem die Anwendung läuft, resized, dass kommt eine Exception beim Aufruf von SetTexture():
"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
Wenn ich SetTexture() auskommentiere gehts wunderbar :confused:
Ich weiss, dass das device geresettet wird beim resize, aber hat das mit dem Problem hier was zu tun?
mfG
ich spiel gerade mit den Beispielen von Tom Miller's Bch zu managed direct x 9.
Jetzt hab ich beim ersten Beispiel für Texturen, wo sich drehende Würfel mit Texturen gezeichnet werden, eine Exception, die ich nicht verstehe.
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
device.Clear(ClearFlags.Target, Color.CornflowerBlue, 1.0f, 0);
SetupCamera();
device.BeginScene();
device.VertexFormat = CustomVertex.PositionTextured.Format;
device.SetStreamSource(0, vb, 0);
// Draw our boxes
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI * 2.0f, angle / (float)Math.PI / 4.0f, 0.0f, 0.0f, 0.0f, tex);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI / 2.0f, angle / (float)Math.PI * 4.0f, 5.0f, 0.0f, 0.0f, tex1);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI * 4.0f, angle / (float)Math.PI / 2.0f, -5.0f, 0.0f, 0.0f, tex2);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI * 2.0f, angle / (float)Math.PI / 4.0f, 0.0f, -5.0f, 0.0f, tex1);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI / 2.0f, angle / (float)Math.PI * 4.0f, 5.0f, -5.0f, 0.0f, tex2);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI * 4.0f, angle / (float)Math.PI / 2.0f, -5.0f, -5.0f, 0.0f, tex);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI * 2.0f, angle / (float)Math.PI / 4.0f, 0.0f, 5.0f, 0.0f, tex2);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI / 2.0f, angle / (float)Math.PI * 4.0f, 5.0f, 5.0f, 0.0f, tex);
DrawBox(angle / (float)Math.PI, angle / (float)Math.PI * 4.0f, angle / (float)Math.PI / 2.0f, -5.0f, 5.0f, 0.0f, tex1);
device.EndScene();
device.Present();
this.Invalidate();
}
private void DrawBox(float yaw, float pitch, float roll, float x, float y, float z, Texture t)
{
angle += 0.01f;
device.Transform.World = Matrix.RotationYawPitchRoll(yaw, pitch, roll) * Matrix.Translation(x, y, z);
device.SetTexture(0, t);
device.DrawPrimitives(PrimitiveType.TriangleList, 0, 12);
}
Wenn man das Form, in dem die Anwendung läuft, resized, dass kommt eine Exception beim Aufruf von SetTexture():
"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
Wenn ich SetTexture() auskommentiere gehts wunderbar :confused:
Ich weiss, dass das device geresettet wird beim resize, aber hat das mit dem Problem hier was zu tun?
mfG