前田稔(Maeda Minoru)の超初心者のプログラム入門
ファイル名 | 説明 |
---|---|
DXForm.cpp | Direct 3D Form |
#using <System.dll> #using <System.Windows.Forms.dll> #using <System.Drawing.dll> #using <Microsoft.DirectX.dll> #using <Microsoft.DirectX.Direct3D.dll> #using <Microsoft.DirectX.Direct3DX.dll> using namespace System; using namespace System::Windows::Forms; using namespace System::Drawing; using namespace Microsoft::DirectX; using namespace Microsoft::DirectX::Direct3D; |
ref class CreateDevice : public System::Windows::Forms::Form { Microsoft::DirectX::Direct3D::Device ^device; public: // Constructor CreateDevice() { device = nullptr; // Window のサイズを設定 this->ClientSize = System::Drawing::Size(400,300); // caption の設定 this->Text = "D3D CreateDevice"; } |
bool InitializeGraphics() { PresentParameters ^presentParams = gcnew PresentParameters(); presentParams->Windowed=true; presentParams->SwapEffect = SwapEffect::Discard; device = gcnew Device(0, DeviceType::Hardware, this, CreateFlags::SoftwareVertexProcessing, presentParams); if (device!=nullptr) return true; MessageBox::Show("Create Direct3D Device Error."); return false; } |
void Render() { if (device==nullptr) return; //Clear the backbuffer to a blue color device->Clear(ClearFlags::Target, System::Drawing::Color::Blue, 1.0f, 0); //Begin the scene device->BeginScene(); // Rendering of scene objects can happen here //End the scene device->EndScene(); device->Present(); } |
// Window の描画 OnPaint() を override virtual void OnPaint(PaintEventArgs ^e) override { this->Render(); // Render on painting } |
// OnKeyPress() を override virtual void OnKeyPress(System::Windows::Forms::KeyPressEventArgs ^e) override { if ((int)e->KeyChar == (int)System::Windows::Forms::Keys::Escape) this->Close(); // Esc was pressed } |
int main() { CreateDevice ^frm; frm = gcnew CreateDevice(); if (frm) { if (!frm->InitializeGraphics()) { MessageBox::Show("Could not initialize Direct3D."); return 0; } frm->Show(); // メッセージループ while(frm->Created) { frm->Render(); Application::DoEvents(); } } return 0; } |