Проблема с ДиректХ в С#
Цитата:
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 Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Device d3d;
public Mesh teapot;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
// Устанавливаем режим отображения трехмерной графики
PresentParameters d3dpp = new PresentParameters();
d3dpp.BackBufferCount = 1;
d3dpp.SwapEffect = SwapEffect.Discard;
d3dpp.Windowed = true; // Выводим графику в окно
d3dpp.MultiSample = MultiSampleType.None; // Выключаем антиалиасинг
d3dpp.EnableAutoDepthStencil = true; // Разрешаем создание z-буфера
d3dpp.AutoDepthStencilFormat = DepthFormat.D16; // Z-буфер в 16 бит
d3d = new Device(0, // D3D_ADAPTER_DEFAULT - видеоадаптер по умолчанию
DeviceType.Hardware, // Тип устройства - аппаратный ускоритель
this, // Окно для вывода графики
CreateFlags.SoftwareVertexProcessing, // Геометрию обрабатывает CPU
d3dpp);
}
catch (Exception exc)
{
MessageBox.Show(this, exc.Message, "Ошибка инициализации");
Close(); // Закрываем окно
}
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
// Очищаем буфер глубины и дублирующий буфер
d3d.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Green, 1.0f, 0);
d3d.BeginScene();
d3d.EndScene();
d3d.Present();
}
}
}
Вот вывод на экран:
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Device d3d;
public Mesh teapot;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
// Устанавливаем режим отображения трехмерной графики
PresentParameters d3dpp = new PresentParameters();
d3dpp.BackBufferCount = 1;
d3dpp.SwapEffect = SwapEffect.Discard;
d3dpp.Windowed = true; // Выводим графику в окно
d3dpp.MultiSample = MultiSampleType.None; // Выключаем антиалиасинг
d3dpp.EnableAutoDepthStencil = true; // Разрешаем создание z-буфера
d3dpp.AutoDepthStencilFormat = DepthFormat.D16; // Z-буфер в 16 бит
d3d = new Device(0, // D3D_ADAPTER_DEFAULT - видеоадаптер по умолчанию
DeviceType.Hardware, // Тип устройства - аппаратный ускоритель
this, // Окно для вывода графики
CreateFlags.SoftwareVertexProcessing, // Геометрию обрабатывает CPU
d3dpp);
}
catch (Exception exc)
{
MessageBox.Show(this, exc.Message, "Ошибка инициализации");
Close(); // Закрываем окно
}
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
// Очищаем буфер глубины и дублирующий буфер
d3d.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Green, 1.0f, 0);
d3d.BeginScene();
d3d.EndScene();
d3d.Present();
}
}
}
Вот вывод на экран: