プログラミング

OpenGL

OpenGLでD3DFMT_G16R16F形式などの再現

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

DirectX10 始めました -第2回-

前回は初期化およびクリア処理までだったので、 今回は最初の三角形をだす部分までをやってみます。 ■ 頂点バッファの準備 DirectX10では頂点およびインデックス格納には、バッファオブジェクトが必須です。 以前のDrawPrimitiveUPとかが消えてしまったので。 今回はインデックスを使わずに頂点バッファだけを準備します。 struct Vertex ...
OpenGL

OpenGLよしなし事

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

ATIドライバでのGLSL

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

ATIでのOpenGLの罠

NVIDIAカード(Geforce)ではうまく動いていたのに、 ATIカード(RADEON)でうまく動かなくなったというネタです。今回の使用APIはOpenGLです。 ■症状 ミップマップありのテクスチャで、ミップマップが使用されない。 ベースレベルの画像しか使われない(ことがある)、という現象が発生 ■原因および対処法 glTexImage2DとglTex...
DirectX

DirectX9のRenderStateからGL読替

DirectX9のRenderState設定がGLのどれにつながるかわからないって話を聞いた。 知っている範囲で書いてみます。 DirectX9 OpenGL D3DFILL_WIREFRAME glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ) D3DCULL_NONE glDisable( GL_CULL_FACE )...
DirectX

DirectX9でATIカードに振り回される

どうもATIのグラフィックボードおよびドライバは DirectXを正しく使わないと描画が不正になる模様。DrawIndexedPrimitiveでnMinVertex, nMaxVertexを正しく設定しないと、 それだけでポリゴンが壊れて描画されたりすることを確認できた。 ちなみにNVIDIAではこれらの情報を参考にしていないのか、 適当な値を放り込んでも...
OpenGL

ATIのドライバ

catalyst 10.7の挙動が不満だったので、以前の状態にしようとしてかなり大変だった。 結論として、バージョンをあげてしまったらもう後戻りできないということみたい。DriverSweeperとか使ってみてもだめだったのでどうしようもない。 この結論に至る前にはいろいろとありました。 発生した症状を書いてみます。 glTexImage2Dで、アクセス違反...
OpenGL

シェーダーのコンパイル失敗時挙動

どうもglGetShaderInfoLogの挙動がおかしい。 シェーダーのコンパイル失敗という挙動を示すようになったのも問題だったりするけど、 この関数の挙動が赤本のサンプルプログラムでは正常動作しない。 ■原因の推測 このおかしな挙動を始めた前後で変えたことはCatalystのバージョンを変えたこと。 現在は 10.7 を使っている。 そもそも以前の環境で...
OpenGL

OpenGLで座標系をいじる

よくある右手系、左手系の変換の話ではありません。DirectXとOpenGLではビューポートの原点位置が異なるのですが、 これがOpenGL拡張を使うと共通化できるのでは!と。 その対応をやってくれそうな拡張が GL_ARB_fragment_coord_conventions というやつです。 ドキュメントを読むと座標系の原点をどこに設定するか、 ピクセル...