Bu uygulamada ekrana temel şekillerin nasıl çizdirildiğini inceleyeceğiz. İlk uygulama olduğu için texture yerine şimdilik vertexleri boyamayı tercih ediyoruz. Yani kullanacağımız vertex tipi “TransformedColored” olacak.
using System;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
using Direct3D = Microsoft.DirectX.Direct3D;
namespace Oyun1
{
public class oyun : Form
{
Device device=null;
VertexBuffer vertbuffer=null;
public oyun()
{
this.ClientSize = new Size(450,450);
this.Text = "Oyun Deneme!";
}
public bool grafik_hazirla()
{
try
{
PresentParameters d3dpp = new PresentParameters();
d3dpp.Windowed = true;
d3dpp.SwapEffect = SwapEffect.Discard;
device = new Device(0,DeviceType.Hardware,this,CreateFlags.SoftwareVertexProcessing,d3dpp);
vertbuffer = new VertexBuffer(typeof(CustomVertex.TransformedColored),4,device,Usage.WriteOnly,CustomVertex.TransformedColored.Format,Pool.Default);
GraphicsStream stm = vertbuffer.Lock(0,0,0);
CustomVertex.TransformedColored[] verts = new Microsoft.DirectX.Direct3D.CustomVertex.TransformedColored[4];
verts[0].X = 100; verts[0].Y = 100;verts[0].Z = 0;verts[0].Rhw = 1;verts[0].Color = System.Drawing.Color.Blue.ToArgb();
verts[1].X = 300; verts[1].Y = 100;verts[1].Z = 0;verts[1].Rhw = 1;verts[1].Color = System.Drawing.Color.Black.ToArgb();
verts[2].X = 100; verts[2].Y = 300;verts[2].Z = 0;verts[2].Rhw = 1;verts[2].Color = System.Drawing.Color.Red.ToArgb();
verts[3].X = 300; verts[3].Y = 300;verts[3].Z = 0;verts[3].Rhw = 1;verts[3].Color = System.Drawing.Color.Brown.ToArgb();
stm.Write(verts);
vertbuffer.Unlock();
return true;
}
catch(DirectXException hata)
{
MessageBox.Show(hata.ToString());
return false;
}
}
private void render()
{
if(device==null)
return;
device.Clear(ClearFlags.Target,System.Drawing.Color.BlueViolet,1.0f,0);
device.BeginScene();
device.SetStreamSource(0,vertbuffer,0);
device.VertexFormat = CustomVertex.TransformedColored.Format;
device.DrawPrimitives(PrimitiveType.TriangleStrip,0,2);
device.EndScene();
device.Present();
}
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
this.render();
}
protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e)
{
if ((int)(byte)e.KeyChar == (int)System.Windows.Forms.Keys.Escape)
this.Close();
}
static void Main()
{
using(oyun f1=new oyun())
{
if(!f1.grafik_hazirla())
{
MessageBox.Show("Grafik Hazırlanamıyor!");
return;
}
f1.Show();
while(f1.Created)
{
f1.render();
Application.DoEvents();
}
}
}
}
}
16 Nisan 2008 Çarşamba
Managed Directx Örnek Uygulama - 1
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder