シェーダーによるテクスチャ表示
なんかテクスチャが上手く出ないと思ったら入力レイアウトのオフセットを
間違っててテクスチャ座標がきちんと反映されとらんかった…。なんというアホさ…。
テクスチャのサイズは
Tex2D.GetDimensions( w, h );
で取得できる。
参考書のサンプルの使い方が間違ってて、ずっと騙されてた…。
この関数、引数によってオーバーロードされるようです。
とりあえず描画成功。今のところ
Tex2D.Load(Texcoord)
を使ってるので、サンプルとかも色々試したいところ。
マウス位置取得
System::Windows::Forms::PictureBox^ pictureBoxChart;
pictureBoxChart->PointToClient( pictureBoxChart->MousePosition );
こんな感じで取得しました。
マニュアル見るとPictureBoxのメンバにMousePositionはないけど、
System.Windows.Forms.Controlを継承してるので使えます。
フォームコントロールへのアクセス
DoEvents()によるイベントループ内で、DoEvents()以降にコントロールに
アクセスしようとすると、アプリケーション終了時に破棄されたオブジェクトに
アクセスすることになってしまうので注意。
現段階でのループ内の流れとしては
- プリミティブバッファのクリア
- コントロール処理とか
- オートメーションアプリのイベント処理
- アプリケーションのイベント処理
- DirectXによる描画
- 60fpsにあわせるためのウェイト
…となっている。いいのだろうか…?
いずれはプリミティブバッファはダブルバッファにしてフレームの最初に別スレッドで
描画処理できたらいいなと思っている。
2D座標
2D表示系のプリミティブ表示は一通り準備ができた。
- LineList
- LineListFlat
- LineStrip
- LineStripFlat
- TriangleList
- TriangleListFlat
- TriangleStrip
- TriangleStripFlat
- TriangleStripTex
- TriangleStripTexFlat
まぁここまで用意する必要もなかったかもしれんけど、性格的に我慢できんかった…。
ここにきて、左下座標が(0.0f, 0.0f)の原点であることに違和感を覚え、
左上を原点に変更。
最終更新:2008年10月31日 20:17