Пишу на C# в Visual Studio 2005 (.NET Framework 2.0).
Вот дошло дело и до геймдевелопинга, скачал книгу:
Том Миллер "Managed DirectX 9". Пишу первый же пример с нее. Экран очищается в черный, тоесть сцена создается, но на ней ничего не отисовывается (по примеру должен рисоваться треугольник). Скачивал с нета готовые примеры - тоже просто черный экран. Кто сталкивался, помогите советом!
редакция от DeVoid, 27.09.2007 21:47 |
Вот привожу пример с книги:
public void InitializeGraphics()
{
try
{
// Set our presentation parameters
PresentParameters presentParams = new PresentParameters();
presentParams.Windowed = true;
presentParams.SwapEffect = SwapEffect.Discard;
// Create our device
device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Этот метод прописан в :
[STAThread]
static void Main()
{
....
}
и в OnPaint формы пишу:
device.Clear(ClearFlags.Target, Color.Black, 1.0f, 0);
CustomVertex.TransformedColored[] verts = new CustomVertex.TransformedColored[3];
verts[0].SetPosition(new Vector4(this.Width / 2.0f, 50.0f, 0.5f, 1.0f));
verts[0].Color = System.Drawing.Color.Aqua.ToArgb();
verts[1].SetPosition(new Vector4(this.Width - (this.Width/5.0f), this.Height-(this.Height/5.0f), 0.5f, 1.0f));
verts[1].Color = System.Drawing.Color.Black.ToArgb();
verts[2].SetPosition(new Vector4(this.Width/5.0f, this.Height - (this.Height / 5.0f), 0.5f, 1.0f));
verts[2] .Color = System.Drawing.Color.Purple.ToArgb();
device.Present();
Но этот код выдает ошибку (для Framework 2.0 нужно подправить код) вот мой вариант кода:
device.Clear(ClearFlags.Target, Color.Black, 1.0f, 0);
CustomVertex.TransformedColored[] verts = new CustomVertex.TransformedColored[3];
verts[0].Position.Add(new Vector4(this.Width / 2.0f, 50.0f, 0.5f, 1.0f));
verts[0].Color = System.Drawing.Color.Aqua.ToArgb();
verts[1].Position.Add(new Vector4(this.Width - (this.Width/5.0f), this.Height-(this.Height/5.0f), 0.5f, 1.0f));
verts[1].Color = System.Drawing.Color.Black.ToArgb();
verts[2].Position.Add(new Vector4(this.Width/5.0f, this.Height - (this.Height / 5.0f), 0.5f, 1.0f));
verts[2] .Color = System.Drawing.Color.Purple.ToArgb();
device.Present();
Вижу только черный экран :( |
Вместо: "Position.Add" пиши: "Position="CustomVertex.TransformedColored[] verts = new CustomVertex.TransformedColored[3];
verts[0].Position = (new Vector4(this.Width / 2.0f, 50.0f, 0.5f, 1.0f));
verts[0].Color = System.Drawing.Color.Red.ToArgb();
verts[1].Position=(new Vector4(this.Width - (this.Width / 5.0f), this.Height - (this.Height / 5.0f), 0.5f, 1.0f));
verts[1].Color = System.Drawing.Color.Yellow.ToArgb();
verts[2].Position=(new Vector4(this.Width / 5.0f, this.Height - (this.Height / 5.0f), 0.5f, 1.0f));
verts[2].Color = System.Drawing.Color.Green.ToArgb();
device.BeginScene();
device.VertexFormat = CustomVertex.TransformedColored.Format;
device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, verts);
device.EndScene();
device.Present();
ЗЫ: Удачи!
редакция от wildboar, 02.10.2007 19:49 |