Jump to content

  • Log In with Google      Sign In   
  • Create Account


blacken

Member Since 05 Dec 2012
Offline Last Active Feb 28 2013 10:48 PM

Posts I've Made

In Topic: Form Flashing when Painting

17 December 2012 - 01:02 AM

Nevermind, I'm good.

Turns out that refreshing the matrices every draw doesn't quite work appropriately.

In Topic: Form Flashing when Painting

16 December 2012 - 12:30 AM

Anyone out there help me out?

I believe that it has something to do with the speed at which the device clears the screen before painting the new one. If i put a breakpoint on the this.invalidate line and then hold f5 to just continue the program it works perfectly.

Looking at msdn and a few other things, the invalidate method has to wait for the messages or something to stop or you should make the messages or something stop, i personally have no idea, so i am hoping someone can help me. Once it get this problem solved i should be good.

Cheers guys

In Topic: Can't draw a simple cube

11 December 2012 - 12:28 AM

Hossainiir,

not sure what you mean by PIX? could you elaborate?


thanks adt7, but not sure what i should be doing for drawing.

i uncommented the drawprimitives section and it still just shows a blank screen.

Is there something i am missing?

In Topic: SlimDX Mesh.ComputeNormals Error

06 December 2012 - 01:00 AM

Thank you very much for your help unbird. It no longer throws this error.

However, the next question i have is why doesn't it show the cube?

Any help you could provide would be much appreciated.

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;
		    }
	    }
    }
}

PARTNERS