Can't render the scene
Hi,
Please, help me with my problem. I have a simple app which should render one triangle. But I see a blank screen. Can someone help? I am using Managed DirectX for .NET Framework 2.0 (April update). The source code is here:
using
System;using
System.Collections.Generic;using
System.ComponentModel;using
System.Data;using
System.Drawing;using
System.Text;using
System.Windows.Forms;using
Microsoft.DirectX;using
Microsoft.DirectX.Direct3D;using
Microsoft.DirectX.Generic;using
CV = Microsoft.DirectX.Direct3D.CustomVertex;namespace
dxtest{
publicpartialclassForm1 :Form{
privateVertexBuffer vb;privateDevice device;public Form1(){
SetStyle(
ControlStyles.AllPaintingInWmPaint |ControlStyles.Opaque,true);InitializeComponent();
}
publicvoid InitDeviceObjects(){
PresentParameters presentParameters =newPresentParameters();presentParameters.DeviceWindowHandle =
this.Handle;presentParameters.SwapEffect =
SwapEffect.Discard;presentParameters.IsWindowed =
true;presentParameters.AutoDepthStencilFormat =
DepthFormat.D24X8;presentParameters.EnableAutoDepthStencil =
true;device =
newDevice(0,DeviceType.Reference,this.Handle,CreateFlags.SoftwareVertexProcessing,presentParameters);
device.RenderState.CullMode =
Cull.None;vb =
newVertexBuffer(device, 3 * CV.PositionColored.StrideSize,Usage.None, CV.PositionColored.Format,Pool.Managed,null);GraphicsBuffer<CV.PositionColored> stream = vb.Lock<CV.PositionColored>(0, 1,LockFlags.None);stream.Write(
new CV.PositionColored(0, 0, 1,Color.White));stream.Write(
new CV.PositionColored(0, 1, 2,Color.White));stream.Write(
new CV.PositionColored(1, 1, 3,Color.White));vb.Unlock();
}
privatevoid Form1_Paint(object sender,PaintEventArgs e){
device.Clear(
ClearFlags.Target |ClearFlags.ZBuffer,Color.Blue, 1.0f, 0);device.BeginScene();
device.Transform.Projection =
Matrix.PerspectiveFieldOfViewLeftHanded((float)Math.PI / 4, (float)this.Width /this.Height, 0.1f, 1000.0f);device.Transform.View =
Matrix.LookAtLeftHanded(newVector3(0, 0, -5),newVector3(0, 0, 0),newVector3(0, 1, 0));device.Transform.World =
Matrix.Identity;device.VertexShader =
null;device.PixelShader =
null;device.SetStreamSource(0, vb, 0);
device.VertexFormat = CV.
PositionColored.Format;device.DrawPrimitives(
PrimitiveType.TriangleList, 0, 1);device.EndScene();
device.Present();
this.Invalidate();}
}
}

