この日記でコメントつけてくれましたしゅんぼーさんとご飯に行ってきました。
ご飯を食べながら、ライブラリの設計やその思想を語り合えたのは有意義でした。
ご飯を食べながら、ライブラリの設計やその思想を語り合えたのは有意義でした。
- パフォーマンス優先マルチプラットフォーム
- 単一プラットフォームマルチAPI
という思想の違いでそれぞれの意見を交わせました。
DirectX10,11などで存在する機能(GS,DS,HS)に対するアクセスを、
DirectX9モードで使用するというような場合には、どうしようもないのですが、
後者の思想ではどのようにこれに対する結論を出すかがやはり難しいですね。
一定水準以上の機能を使った場合、同一コードでAPIを切り替えるのはやはり無理だ…
* 案
Device::getSpecificDevice10(); => DirectX10以上で使える機能はここからアクセス.
Device::getSpecificDevice11(); => DirectX11以上で使える機能はここからアクセス.
今のところこんな感じで想定してみました。
* その他
話をしていて、参考になった項目の記録です。
- ShaderResourceViewのビューの概念は意外と使えそう。
- デバイスとかシェーダーにセットするのは、このビュー
- テクスチャ配列の概念
- ある単位の形状描画で使う(マルチ)テクスチャは、ほぼ一意に定まり、特定の要素のみ入れ替えるというのはほとんど無い。
- そのためにこれらの集合を1つの単位で扱えると都合がいい
- という解釈を聞いて、なるほど!と思いました。
コメント
コメント遅くなりましたが、こちらこそありがとうございます!!
人のソースコードを見ると、設計思想の違いを見れて勉強になります!! やはりShaderSetとかは用意しようと思いました。
ちなみに、Device::getSpecificDevice10(); という方向性は、DirectX9モードだと、そもそもそこでポインターならNULLなり不正値が取得されるという意味ですか? その場合、OpenGL3.2はDevice::getSpecificDevice10()だと適切なポインターが帰ってくる感じになるんですかね?
しかしやはり、それに関しての妙案はすぐには浮かびませんねや・・・(汗