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!            |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
+------------------------------------------+

Tags:

Categories: .NET, C++/CLI, DirectX

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

WP-SpamFree by Pole Position Marketing