DirectX9のRenderStateからGL読替


DirectX9のRenderState設定がGLのどれにつながるかわからないって話を聞いた。
知っている範囲で書いてみます。

DirectX9 OpenGL
D3DFILL_WIREFRAME glPolygonMode( GL_FRONT_AND_BACK, GL_LINE )
D3DCULL_NONE glDisable( GL_CULL_FACE )
D3DCULL_CW,CCW GL_CULL_FACE有効化してGL_CW,GL_CCWらも設定
D3DRS_SCISSORTESTENABLE GL_SCISSOR_TEST
D3DRS_STENCILENABLE GL_STENCIL_TEST
D3DRS_ZENABLE GL_DEPTH_TEST
D3DRS_ZWRITEENABLE glDepthMaskで設定
D3DRS_STENCILREF glStencilFuncで設定

各種比較関数、ブレンド設定の列挙値は大変なので除外で。
調べてみるとすぐにわかりそうな感じですし。

感想

OpenGL側はDirectXとちがって、必要要素を一括に設定する気配を感じる。
このほうがデバイスに値を流すのには適しているんだろう。

○○さんへ

他にこれは?というのがあれば、コメントにでも~。
知ってる範囲で追記しようかと思います。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする


コメント

  1. しゅんぼー より:

    とりあげてくれてありがとうございます!!
    こちらでも一通り調べて、Excelにまとめ中です!! こちらでもある程度まとまったら共有しようと思います。 調べればいろいろわかってきますが、なんせ数が数なので(汗
     
    しかし気づいたんですけど、DirectX 10 以降って SetRenderStateって無くなったんですね。アルファテストも実装されてないんですね( 固定シェーダが無くなった影響が大きいと思いますが )
    深度とステンシル用パラメータはレンダーステートとは違う概念で設定するんですね(汗
    描画エンジンラッパーの道はまだまだ考えることは多そうです(汗

  2. slash より:

    現在、すべてをラップする描画APIの設計をしています。
    そのうちプライベートベータだそうと思っていますので、よかったら協力してもらえないでしょうか?
    ExcelにまとめるってGoodですね。こちらは頭の中にしかないので…。
    DX10以降のレンダーステート関連は一応あるものの、以前の日記で書いたとおりセットのみです。
    現在設定されているものの一部変更とかできないのでDX9の感性でいくと苦労します。
    固定シェーダーなくなったからではなく、コマンドバッファの圧迫によるCPU使用率の上昇、GPUの効率的動作のためにこのような変更が行われた、と推測しています。

  3. しゅんぼー より:

    返信遅くなりましたすみません(汗
    プライベートベータへの協力は是非やらせてください!!
    Excelにまとめてたのですが、改めて見ると普段使うことあるの?っていうのもありますね(汗
    固定シェーダ向けのレンダーステートがたくさんあったので、DX10以降はそれがごっそりなくなったからなのかな、と安易に考えてしまいました(汗