ISLe さんが書きました:目的は何でしょうか?
DirectX9を使って何かを作るのではなく、機能を詳しく知りたいということでしょうか?
ちゃんと”使える”ようになるためには詳しく機能を知りたいと思います。
ですが扱うためにはまず、基本的な流れのプログラムを知らなければなりません。
その後に機能を詳しく知る必要があると思います。
例)
テクスチャを描画する場合の自分が知っている(使用できる)基本的な流れ(一部割愛、他にも方法があるのかも知れませんが)
まず、オブジェクトの初期化
↓
テクスチャの取得、此処で二つに分岐
テクスチャに貼り付けて表示 SPRITEを利用する
↓ ↓
テクスチャ貼り付け用の(変換済み)ポリゴンを作成 SPRITEの初期化
↓ ↓
ポリゴンにテクスチャを貼り付け SPRITE使用の為必要なし
↓ ↓
バックバッファをクリア
↓
バックバッファに描画
↓
表画面に描画
いくつか段階を省いてますがこんな感じでしょうか。
テクスチャバージョンだと更に細分化します(変換無しなら、ワールド変換、射影変換等、他描画方法等、またDrawPrimitiveUPかDrawPrimitiveによっても違いますし、DrawIndexedPrimitive(UP)なら更にインデックスが付きます)。
この細分化の部分も含めて一編に全部詰め込むのはさすがに無理です。
なので、頂点変換済みの場合で言うなら複数の方法一度にでは無くて
まずこれは覚えろ(DirectXでの描画の仕組みを学ぶためDrawPrimitiveに等、簡単だからDrawPrimitiveUPに等、DrawPrimitiveUPでは一々書き直されているの遅い等)と言うような事を書いてあるような書籍は無いかと質問させていただきました。
個人的に一つの方法から分岐して覚えていくほうが覚えやすいと思いますし、何より多すぎるとどこから手をつけてよいのか分からなくなります。
ISLe さんが書きました:
テクスチャを書き換えるにしても、ロックして書き換えるのはシステムメモリを消費しませんが速度低下のペナルティが大きいと思います。
システムメモリに用意したイメージを書き換えて一気に転送したほうがメモリを大量消費しますが速度低下は少ないかもしれません。
複数のやり方にそれぞれメリット・デメリットがありますから、状況に応じて選択できるように知っておく必要があります。
解説有難う御座います。
ですが、何故なるかその説明はmsdnにのっていますか?
(ロックする処理、また、ロックして書き換えを行う際にVRAMに何度もアクセスする必要があるから(VRAMにアクセスする速度のほうが遅い、メインメモリはバーストやCPUキャッシュが有る為)、ロックする処理も減る、が逆にアクセス数を減らせばその分システムメモリを使用しなくてはならない。だと思いますが、あってますか?)
探し方が悪いのか見つかりません。(考えの確証が得られないので正しいかどうか不明、あいまいな知識は大きなバグの元です)
自分で考えたら分かるだろといわれても知識が足りずに無理です。
知識が無いならなら調べろといってもどこから手をつけたら良いのか、何を調べたら良いのか分からない状態では調べようがありません。
(もちろん、さすがにmsdnにあるチュートリアル程度は理解できています)
例えばSetRenderStateやSetTextureStageStateなど、こんなの全部把握しろって言うのは無理です。
この中で覚えて置くべきものは~普段使用するようなものは~、というような解説があるようなものを求めています。(別なもの(その範囲外)を使用しなくてはならない時はmsdnやヘルプを見る)
ISLe さんが書きました:
MSDN以上に詳しい資料は無いと思いますけど。
テクニカルな解説文書も揃ってますし。
英語版なら内容に間違いも無いのでは?
だから、テクニカルではなく基本的なことを学びたいのですが。(用語とか内部構造とか(例えばD3DCOLORの中がDWORDで、左ビットからα,R,G,B(普通はマクロ使いますけど))。前提知識は基礎だと思うので)
なるほど英語版ですか、英語は其処まで得意ではありませんが、読んでみます。(でも、コードの間違いは修正されてませんよね。’)’付け忘れとか。こぴぺして弄ろうと思った時にエラーが出てきてあせります)