DirectX

色々と触ってはいるものの

とりわけ何か記事にできるレベルのものはまだない。勉強しているWebサイトからXファイルのサンプルをDLしてきて表示させたりしてる。しかし、まだまだ良く分かっていない。ゲーム3D数学の本と合わせて読み進めていく。

フレーム制御

フレームの制御部分の実装をクラス化してみた。 // -- FrameControl.h -- #pragma once #include <windows.h> namespace ddp { class FrameControl { private: int m_fps; int m_frameCount; int m_fpsCount; TCHAR m_fpsStr[64]; // ここちょっと微妙 DWORD m_beforeTi</windows.h>…

DirectX用のスマートポインタの作成

DirectX関連のオブジェクトを使用する場合に便利なスマートポインタを自作しました。 // -- smart_ptr.h -- #include <memory> namespace ddp { template<class T> class com_ptr { private: T* m_pComObj; public: explicit com_ptr (T* comObj = NULL) { m_pComObj = comObj</class></memory>…

現状の見直し

やはり基礎の基礎をしっかりやらないと何も作れそうに無いので地盤固めに専念します。まずはスマートポインタを用いたライブラリ設計へ。またDirectXのCOM用のスマートポインタも実装しないといけません。何をやるにも基礎が重要。あらためて良く分かりまし…

D3DXFontによる文字描画

文字の描画を実装してみます。http://www.c3.club.kyutech.ac.jp/gamewiki/index.php?%CA%B8%BB%FA%CE%F3%C9%C1%B2%E8 // フォントの設定 SPDXFont DXClass::CreateFont (int height) { D3DXFONT_DESC lf; lf.Height = height; lf.Width = 0; lf.Weight = 0;…

画像の回転

画像の回転にチャレンジしてみました。座標の求め方がかなり難しかったので色々なサイトで数学やアルゴリズムの勉強をしました。7割くらいは理解できましたが、やっぱ難しいですね。ちょっと数学そのものの勉強を再開しないといけません。座標の求め方はこん…

現状のライブラリ構成 その2

現状のライブラリ構成 - (void*)Pないとの続きです。テクスチャ描画周りの部分をライブラリにまとめました。 // -- dxclass.h -- #pragma once #include <d3d9.h> #include <d3dx9.h> #define FVF_CUSTOM ( D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1 ) // 頂点バッファ s</d3dx9.h></d3d9.h>…

現状のライブラリ構成

とりあえず現段階でのまとめとして自作ライブラリを作ります。継ぎ足し継ぎ足しで醜いコードになってるのでそろそろ一旦整理しとかないとわけがわからなくなりそうです。まずDirect3Dの初期化等を行うDXClassクラスを作ってみました // -- dxclass.h -- #pra…

ある座標に向かって移動させる処理

前回の記事で「画面の中央に向かって移動する処理も追加してみました。」とさらりと言いましたが、実はこれが結構難しい処理だったりします。ある座標に向かって移動させるということは、今いる座標と目標となる座標の角度を求めて、その方向にX座標とY座標…

テクスチャを読み込んでUV座標を指定して表示

その3 テクスチャ作成あれこれ板ポリゴンの表示はできました。今度はテクスチャ(画像)を読み込んで表示させてみたいと思います。たかだかテクスチャ表示させるだけなのにこれまた凄い時間がかかりました。。ゲームプログラミングってめちゃくちゃ勉強し辛い…

長方形をランダムで表示

板ポリゴンの表示 - (void*)Pないとの続き。折角正方形が表示できたので色々といじってみた。50×50が最小サイズのランダムな大きさと色の長方形をランダムな位置に表示する。また長方形はアルファブレンドを使って半透明表示させる。半透明度度合いもランダ…

板ポリゴンの表示

その2 座標変換済み頂点で2D板ポリゴンを描画板ポリゴン表示するだけなのに長かった・・・とりあえずほぼサンプルの通り書いてみて動かした。 struct CUSTOMVERTEX{ float x, y, z; // 頂点座標 float rhw; // 除算数 DWORD dwColor; // 頂点の色 float u, …

ジオメトリパイプライン

その2 座標変換済み頂点で2D板ポリゴンを描画そもそも3D空間内で2Dを表現するというのは本来難しい作業であり、3D空間における奥行きや遠近感を2Dとして見たときに違和感無く変換する処理のことをジオメトリパイプラインと言うらしい。

IDirect3DDevice9オブジェクトの生成のリトライ

HRESULT hr; hr = lpd3d->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, // ハードウェア処理 hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING // HW頂点処理 &d3dpp, &lpD3ddev ); その1 初期化なんて怖くないぜ! これでデバイスの作成ができます。ただ…

基本的に初めにZeroMemory等で初期化した方が無難?

その1 初期化なんて怖くないぜ!ここを見ながら色々試してるのですが D3DPRESENT_PARAMETERS d3dpp; d3dpp.BackBufferWidth = 640; d3dpp.BackBufferHeight = 480; d3dpp.BackBufferCount = 1; d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; d3dpp.MultiSa…

DirectXのReleaseメソッド

DirectX関連のクラスには大抵Releaseメソッドなるものが存在していて、オブジェクトの破棄をする際に呼ばないといけないようです。そこで処理を簡略化するためによくSAFE_RELEASEというような名前のマクロを用意すると便利らしいです。 #define SAFE_RELEASE…

ライブラリの追加

さてインストールも終わって色々サイトとか見ながら触ってたんですがDirectX3Dの初期化でいきなり躓く。 error LNK2019: 未解決の外部シンボル _Direct3DCreate9@4 が関数 "public: bool __thiscall DXClass::Init(void)" (?Init@DXClass@@QAE_NXZ) で参照さ…

DirectXのインストール

まずはインストールしないことには始まらない。Download DirectX Software Development Kit from Official Microsoft Download Center http://www.microsoft.com/downloads/details.aspx?FamilyId=4B9B1752-6F6C-440E-816C-35D247570AE4&displaylang=ja ここ…

とりあえず参考サイト

0からのゲームプログラミング ~ ゲームプログラマーへの第一歩を踏み出そう ~ マルペケつくろーどっとコム このあたりで勉強していこうかな。あと数学の勉強もそろそろ再開しないといけないですね。

DirectXとOpenGL

C++の勉強も順調に進んできたのでそろそろ手を出していこうかなと思います。これらのライブラリは今までの勉強の仕方のように頭から順に勉強していくスタイルでは無理があります。大量の型やクラスてんこもりなのでいちいち全部覚えてられないです。なのでま…