OpenGL

OpenGL

glGetActiveUniformの挙動 -その2-

先日の日記に書いたglGetActiveUniformの件についての続報です。早速辞書順に並ばない結果を取得できてしまったので、 やはり名前アクセスしたいときには辞書順ソートを自前でいれておくべきです。 (ユーザーの勝手な)思いこみは危険。
DirectX

テクスチャとサンプラーステートの関係

テクスチャとひとことで言った場合、この中には2つの要素が含まれていると思います。 1つは、ポリゴン表面に貼りたい画像のデータ。 そしてもう1つは、その画像に適用するフィルタ設定やUV設定といったの各設定情報。このうち後者はテクスチャフィルタやラッピングモード(アドレッシングモード)とも言われるため テクスチャの情報としてまとめられてしまうことが多いと感じます...
OpenGL

レンダーバッファとレンダーテクスチャ

Framebuffer Objectで設定するレンダーバッファとレンダーテクスチャについて。どこかの記載で、レンダーバッファのほうがレンダーテクスチャよりも 高速に動く余地があるということが書いてあった。 これは以前の日記でも書いたとおり。ここでFBOにはレンダーテクスチャとレンダーバッファとそれぞれ設定するための関数が用意されているが、 同時に設定したらど...
OpenGL

FramebufferObject挙動違い -その3-

今回は今までの総合しての解決編になります。 デプスとステンシルを1つのテクスチャでOKとし、 さらにNVIDIAとAMDと双方で問題なく動く、という解法になります。 ■実装コード やはりテクスチャの作成がポイントでした。 glTexImage2D( GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8_EXT, TEXTURE_WIDT...
OpenGL

FramebufferObject挙動違い -その2-

AMD製グラフィックボード時でも正常動作できる組み合わせを発見しました。テクスチャの生成時がポイントです。 ■解決方法(AMDオンリー) glTexImage2D( GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, TEXTURE_WIDTH, TEXTURE_HEIGHT, 0, GL_DEPTH_COMPONENT, GL_...
OpenGL

FramebufferObject挙動違い

NVIDIAとAMD*1でFramebufferObject使用時に若干動作が異なる模様です。 *1 : ATIブランドを廃止して、AMDになっていくとのことなので、今後AMD製RADEONと表記したりすることにします ■発生現象 NVIDIA製グラフィックボード時は、デプステクスチャをセット時にでも デプス判定を行って描画することができる。 しかしながら、...
DirectX

DirectX vs OpenGL テクスチャ編

DirectXとOpenGLとでテクスチャに関していろいろと違うので ここでそれらについて書いてみたいと思います。 ■用語 DirectXでは、テクスチャアドレッシングモードとテクスチャラッピングモードがあります。 OpenGLでは、テクスチャラッピングモード だけです。 しかも両者でそれぞれの言葉が意味しているものがずれており、 DirectX::アドレッ...
OpenGL

OpenGLでD3DFMT_G16R16F形式などの再現

OpenGLでD3DFMT_G16R16Fの形式テクスチャを作る方法について説明します。 これをマスターすれば、32bit float形式も、R16F, R32F形式にも対応できます。 ■必要なもの GL_RGBA16F, GL_RGBA32F などフォーマットを使えること OpenGL拡張の GL_ARB_texture_rg OpenGL拡張の GL_A...
OpenGL

OpenGLよしなし事

今日はOpenGLのメモ程度内容をつらつらと。 ■FBOのレンダーバッファ、レンダーテクスチャ レンダーテクスチャはテクスチャとして利用可能なのはわかるが、 レンダーバッファの存在価値ってなんだろうか。 情報ソースはどこか忘れたけど、 レンダーバッファのほうはテクスチャとして使わない分、高速に動くように ドライバ内で最適化の余地があるらしい。 ■テクスチャ ...
OpenGL

ATIドライバでのGLSL

GLSLの記述について、ATIは結構シビア。 ドライバのバージョンによってはシェーダーのコンパイルが通ったり通らなかったりする。しかし、通らないのは厳密には正しく、そのようなシェーダーを書いていない開発者のほうが悪いのはわかっているんだけど、なんとも開発しづらい。 以前は警告が出ていたのものが、警告が出なくなったりして、 チェックが緩くなったものもあれば、逆...