Archive for 7月 30th, 2012
-
Hello, DirectX(C++/CLI) World!
Posted on 7月 30th, 2012 by cx20
Win32 DirectX(C++/CLI)
DirectX はマイクロソフトが Wnidows 用に開発したマルチメディア処理用 API である。
.NET Framework 用の DirectX ライブラリとしては、DirectX SDK より入手可能な Managed DirectX がある。
以下は C++/CLI における Managed DirectX アプリケーション の例となっている。ソースコード
#using <System.dll> #using <System.Drawing.dll> #using <System.Windows.Forms.dll> #using <Microsoft.DirectX.dll> #using <Microsoft.DirectX.Direct3D.dll> using namespace System; using namespace System::Drawing; using namespace System::Windows::Forms; using namespace Microsoft::DirectX; using namespace Microsoft::DirectX::Direct3D; public ref class HelloForm : public Form { public: HelloForm() { this->Size = System::Drawing::Size( 640, 480 ); this->Text = "Hello, World!"; } bool InitD3D() { presentParam_ = gcnew PresentParameters(); presentParam_->Windowed = true; presentParam_->SwapEffect = SwapEffect::Discard; device_ = gcnew Device(0, DeviceType::Hardware, this, CreateFlags::HardwareVertexProcessing, presentParam_); InitFont(); return true; } void InitFont() { FontDescription fd; fd.Height = 16; fd.FaceName = "MS ゴシック"; font_ = gcnew Microsoft::DirectX::Direct3D::Font(device_, fd); } void Render() { if (device_ == nullptr) { return; } device_->Clear(ClearFlags::Target, Color::Blue, 1.0f, 0); device_->BeginScene(); font_->DrawText(nullptr, "Hello, DirectX(C++/CLI) World!", 10, 10, Color::White); device_->EndScene(); device_->Present(); } private: Device^ device_; PresentParameters^ presentParam_; Microsoft::DirectX::Direct3D::Font^ font_; }; int main( array<System::String^>^ args ) { HelloForm^ form = gcnew HelloForm(); form->InitD3D(); form->Show(); while (form->Created) { form->Render(); Application::DoEvents(); } return 0; }
コンパイル方法
C:¥> cl Hello.cpp /clr ^ /AI "C:WindowsMicrosoft.NETDirectX for Managed Code1.0.2911.0" ^ /AI "C:WindowsMicrosoft.NETDirectX for Managed Code1.0.2902.0" ^ /FU "Microsoft.DirectX.dll" ^ /FU "Microsoft.DirectX.Direct3D.dll" ^ /FU "Microsoft.DirectX.Direct3DX.dll" ^ /link /SUBSYSTEM:WINDOWS /ENTRY:main
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, DirectX(C++/CLI) World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+