なんとなくSampleFlameworkの力を借りるのは駄目だと思ったので無謀にも1からいじる事に。
とはいえ、ウィンドウを表示するだけなら↓程度のソースでウィンドウが表示されます。
using System;
using System.Drawing;
using System.Windows.Forms;
using SlimDX;
using SlimDX.Direct3D9;
using SlimDX.Direct2D;
using SlimDX.Windows;
namespace test
{
static class Program
{
[STAThread]
static void Main()
{
//描画するウィンドウ。タイトルは「SlimDX - MiniTri Direct3D9 Sample」
var form = new RenderForm("SlimDX - MiniTri Direct3D9 Sample");
//サイズを640×480に設定
form.ClientSize = new System.Drawing.Size(640, 480);
//ウィンドウサイズを変更できないようにする
form.FormBorderStyle = FormBorderStyle.FixedSingle;
//最大化ボタンの消去
form.MaximizeBox = !form.MaximizeBox;
//最小化ボタンの消去
form.MinimizeBox = !form.MinimizeBox;
//デバイスの初期化
var device = new Device(new Direct3D(), 0, DeviceType.Hardware, form.Handle, CreateFlags.MixedVertexProcessing, new PresentParameters()
{
BackBufferWidth = form.ClientSize.Width,
BackBufferHeight = form.ClientSize.Height
});
//メインループの設定
MessagePump.Run(form, () =>
{
device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
device.BeginScene();
/*
ここにループを書く
*/
device.EndScene();
device.Present();
});
//メッセージループから脱出したときの処理?
foreach (var item in ObjectTable.Objects)
item.Dispose();
}
}
}
クラスリファレンス見ただけで分かるほどその辺の知識に卓越しているわけではないんじゃーい(T□T)
でもある程度のレベルのものを作ろうと思ったら、ソース直接読んで理解するくらいの事はしなければいけないんですかねぇ。
まぁ、そんな言い訳はともかく、一番最後だけわかりきってないんですよね…。
ObjectTable.Objectsの中入っているリソースをすべて開放する、という処理であることはわかったんですけど…。
そして四角形を書こうとしたらそのためのメソッドがなまら複雑だというオチ。
ググってたらサンプルとはまた違うクラスで画面を描画をしていらっしゃる方がいて、もう本当に何がなにやらという感じw
でもいろいろ知れて楽しいので、もうちょっと頑張ってみますよ。2012年までに1つゲームを作る勢いで勉強していきたいですね。