Code not drawing correctly

Started by
-1 comments, last by blacken 11 years, 4 months ago
Hi Guys,

Was just wondering if someone could tell me where i am going wrong.

I have used this code that i have found around the traps and obviously made my own changes but the problem is when i run it all i get is a purple screen. It is supposed to be drawing a cube, but alas it doesn't.

If someone would be able to help me out with this it would greatly appreciated.

Cheers


[source lang="csharp"]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SlimDX;
using SlimDX.Direct3D9;
using SlimDX.Windows;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Mesh meshTerrain;
Device device;
Direct3D direct3d = new Direct3D();
CustomVertex test = null;
Vertex[] vertices;
short[] indices;
int WIDTH, HEIGHT, angle;
public Form1()
{
InitializeComponent();
this.Text = "Managed DirectX Tutorial 1";
test = new CustomVertex();
InitGraphics();
}
void InitGraphics()
{
angle = 0;
PresentParameters present_params = new PresentParameters();
present_params.Windowed = true;
present_params.SwapEffect = SwapEffect.Discard;
device = new Device(direct3d, 0, DeviceType.Hardware, this.Handle, CreateFlags.SoftwareVertexProcessing, present_params);
vertices = new Vertex[]
{
new Vertex ( new Vector3 ( - 1, - 1, - 1 ) , Color.Red.ToArgb ( ) ) ,
new Vertex ( new Vector3 ( 1, - 1, - 1 ) , Color.LightBlue.ToArgb ( ) ) ,
new Vertex ( new Vector3 ( 1, - 1, 1 ) , Color.LightCyan.ToArgb ( ) ) ,
new Vertex ( new Vector3 ( - 1, - 1, 1 ) , Color.CadetBlue.ToArgb ( ) ) ,
new Vertex ( new Vector3 ( - 1, 1, - 1 ) , Color.Red.ToArgb ( ) ) ,
new Vertex ( new Vector3 ( 1,1, - 1 ) , Color.Orange.ToArgb ( ) ) ,
new Vertex ( new Vector3 ( 1,1,1 ) , Color.Goldenrod.ToArgb ( ) ) ,
new Vertex ( new Vector3 ( - 1, 1,1 ) , Color.Yellow.ToArgb ( ) )
};
indices = new short[]
{
4,1,0,4,5,1,
5,2,1,5,6,2,
6,3,2,6,7,3,
7,0,3,7,4,0,
7,5,4,7,6,5,
2,3,0,2,0,1
};

CreateMesh();
//device = new Device(direct3d, 0, DeviceType.Hardware, this.Handle, CreateFlags.SoftwareVertexProcessing, present_params);
//device = new Device(direct3d, 0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, present_params);
}
private void CreateMesh()
{
meshTerrain = new Mesh(device, 12, 8, MeshFlags.Managed, CustomVertex.PositionColored.format);
DataStream stream = meshTerrain.VertexBuffer.Lock(0, 0, LockFlags.None);
stream.WriteRange(vertices);
meshTerrain.VertexBuffer.Unlock();
stream.Close();
stream = meshTerrain.IndexBuffer.Lock(0, 0, LockFlags.None);
stream.WriteRange(indices);
meshTerrain.IndexBuffer.Unlock();
stream.Close();
meshTerrain.GenerateAdjacency(0.5f);
meshTerrain.OptimizeInPlace(MeshOptimizeFlags.VertexCache);
meshTerrain = meshTerrain.Clone(device, MeshFlags.Managed, CustomVertex.PositionNormalColored.format);
meshTerrain.ComputeNormals();

}
protected override void OnPaint(PaintEventArgs e)
{
device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.DarkSlateBlue, 1.0f, 0);
device.BeginScene();
//device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertices);
device.VertexFormat = CustomVertex.PositionNormalColored.format;
//device.SetTransform(TransformState.World, Matrix.Translation(-HEIGHT / 2, -WIDTH / 2, 0) * Matrix.RotationZ(angle));
int numSubSets = meshTerrain.GetAttributeTable().Length;
for (int i = 0; i < numSubSets; i++)
{
meshTerrain.DrawSubset(i);
}
device.EndScene();
device.Present();
//CustomVertex.TransformedColored[] vertexes = new CustomVertex.TransformedColored[3];

//vertexes[0].Position = new Vector4(50, 50, 0, 1.0f);
//vertexes[0].Color = System.Drawing.Color.FromArgb(0, 255, 0).ToArgb();
//vertexes[1].Position = new Vector4(250, 50, 0, 1.0f);
//vertexes[1].Color = System.Drawing.Color.FromArgb(0, 0, 255).ToArgb();
//vertexes[2].Position = new Vector4(50, 250, 0, 1.0f);
//vertexes[2].Color = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();

//device.Clear(ClearFlags.Target, System.Drawing.Color.FromArgb(0, 0, 0).ToArgb(), 1.0f, 0);
//device.BeginScene();
//device.VertexFormat = CustomVertex.TransformedColored.format;
//device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertexes);
//device.EndScene();
//device.Present();

}
private void Form1_Load(object sender, EventArgs e)
{


}
//[StructLayout(LayoutKind.Sequential)]
public struct Vertex
{
public Vector3 Position;
public int color;
public Vertex(Vector3 position, int color)
{
this.Position = position;
this.color = color;
}
}
class CustomVertex
{
//[StructLayout(LayoutKind.Sequential)]
public struct TransformedColored
{
public Vector4 Position;
public int Color;
public static readonly VertexFormat format = VertexFormat.Diffuse | VertexFormat.PositionRhw;
}
//[StructLayout(LayoutKind.Sequential)]
public struct PositionColored
{
public Vector3 Position;
public int Color;
public static readonly VertexFormat format = VertexFormat.Diffuse | VertexFormat.Position;
}
//[StructLayout(LayoutKind.Sequential)]
public struct PositionNormalColored
{
public Vector3 Position;
public Vector3 Normal;
public int Color;
public static readonly VertexFormat format = VertexFormat.Diffuse | VertexFormat.Position | VertexFormat.Normal;
}
}
}
}[/source]

This topic is closed to new replies.

Advertisement