プログラム」カテゴリーアーカイブ

friend指定

とあるクラス(仮にA)のプライベート(もしくはプロテクト)なメンバにアクセスしたい場合、
・インターフェースメソッド作成
・friendを使う
・public:に移動する(前提ぶち壊しだが)
辺りしか思いつきません。

やたらと公開範囲を広げたくない場合、対象クラスを特例的に追加していけるfriend指定も
いいのかなと思うのですが、クラス同士の関係が密になってしまうのが良くなさそう。
かといって、インターフェースを作成すると、チェックはかけられるものの、公開になってしまうし、
作るのが面倒くさい。

こういうときの定石ってどうするのかなぁ。

VisualC++6.0はSummer2004まで

タイトルの通りです。
自分は、Windows2000+VisualC++6.0という組み合わせなのですが、
この場合に利用できるDirectXSDKはSummer2004までのようです。
これ以降のバージョンをインストールすると、外部参照エラーが多発します。
(security_cookieとか。なんのことやら)
SDKの新しいバージョンは、Windows2000も対象外だし
マシンからすべて新しくしろということだろうか。

定義ファイルからの読み込み

テクスチャや、スプライトを定義ファイルから読み込む部分の作成。
文字列処理は、基本であるのだけれど、自分は苦手意識をもっている分野です。
もっと、効率よい、綺麗なコードが書けるのではないかと思ってしまい
なかなか、進みません。

常に出来上がるのは、泥臭いコードです。

テクスチャのロード2

テクスチャのロード続き。
昨日は、インターフェースだけ決めていた。
その時は、サーフェスメモリに自前で書き込む実装を考えていたが、
取り合えずは、D3DXのメモリから読み出す関数を使ってもいいかなと思う。

インターフェースさえあれば、後で差し替え効くしね。
問題は、αチャンネルをどう扱うかです。
2次元のスプライトの実現には必要だもんね。

テクスチャロード

テクスチャのロード(と管理)を行うクラス作成中
クラス名はT3DTextureMan
が、今日はロードするインターフェースを作成しただけで終了。
ファイルから読み込む、ファイルから作成する。
リストファイルから一気に作成する(実用はこれを使うのかな?)
の3つを予定。
いまは、ビットマップしか読めないけれど、
イメージローダを分離して、あとでいろいろ読み込めるようにする予定。

テクスチャクラス

テクスチャクラスを作成。
ポインタを持たせて、Createと、Releaseをするだけです。
次に,TextureManを作成して、ファイル名からのテクスチャへのロード
ファイル名から、テクスチャの作成
ファイル名リストからのテクスチャリスト作成(実装はmapで名前とテクスチャを対応付け)
に進む。

シーンクラスまで

CScene.cppをいじくって、シーンクラスが出来そう。
初期化クラスCInitSceneまでは、行った。
描画用のクラス(このクラスの責任範囲も不明確ですが)
がBDrawから継承しているので、ここで今日は終了。
なんで、継承しているのかが分からない。

とりあえずは、
・テクスチャロード
・スプライト準備
・キャラクタ(タスク?)の準備
か。

データの形式(スプライトとか)

イメージファイル(ビットマップ)等を読み込んでテクスチャオブジェクトとする。
スプライトは、テクスチャオブジェクトへのポインタと転送もとの座標を持つ。
オブジェクト(タスク等)は、スプライトを切り替えて表示する。

すると、テクスチャに通し番号(もしくはコストはかかるが名前)、
スプライトの設定ファイルにもスプライトの番号or名前を付けて
描画の際には、それで指定するのか?

要は進んでません。

テクスチャのロード

テクスチャクラスを考える
TextureからGetSurfaceLevelでSurfaceを得て、
それにGetDCをしてBitBltやStretchBltで描き込めそうな気がする。
ファイルからのロードはこれでいいのかな?

食卓でノートをいじると、頭がくらくらします。