SlimDX Tutorial 2 - 디바이스 생성

여기서부터는 실제로 SlimDX를 사용하여 디바이스를 생성하므로 SlimDX 세팅법 글을 참조하여 프로젝트에 SlimDX를 포함시켜야합니다.

#include <windows.h>

using namespace System;
using namespace System::Windows::Forms;
using namespace System::Drawing;
using namespace SlimDX;
using namespace SlimDX::Direct3D9;

public ref class WndForm : public Form
{
 Direct3D^ direct3D;
 Device^ device;
 PresentParameters^ presentParams;

public:
 WndForm()
 {   
  this->ClientSize = System::Drawing::Size(400, 300);
  this->StartPosition = FormStartPosition::CenterScreen;
  this->Text = "D3D Tutorial 2";
 }

 ~WndForm()
 {
  this->!WndForm();
 }

 !WndForm()
 {
  if (direct3D)
   delete direct3D;
  if (device)
   delete device;
 }

 bool InitD3D()
 {
  try {
   direct3D = gcnew Direct3D();
   presentParams = gcnew PresentParameters();
   presentParams->Windowed = true;
   presentParams->DeviceWindowHandle = this->Handle;
   presentParams->SwapEffect = SwapEffect::Discard;
   presentParams->BackBufferFormat = Format::X8R8G8B8;
   device = gcnew Device(direct3D, 0, DeviceType::Hardware, this->Handle, CreateFlags::SoftwareVertexProcessing | CreateFlags::Multithreaded, presentParams);

   return true;
  }
  catch (Direct3D9Exception^) {
   return false;
  }  
 }

 void Render()
 {
  if (!device)
   return;

  device->Clear(ClearFlags::Target, Color::DarkGray, 1.0f, 0);
  device->BeginScene();
  device->EndScene();
  device->Present();
 }
};

INT WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, INT)
{   
 WndForm^ frm = gcnew WndForm();

 if (!frm->InitD3D()) {
  MessageBox::Show("Initializing D3D Device Failed");
  return 0;
 }

 frm->Show();

 while (frm->Created) {
  frm->Render();
  Application::DoEvents();
 }

 delete frm;

 return 0;
}

0 개의 댓글:

댓글 쓰기