OpenGL

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 )...
OpenGL

ATIのドライバ

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

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

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

OpenGLで座標系をいじる

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

GL拡張のリスト(2)

ドライバを更新して取得してみた。 catalyst 10.7 GL_AMDX_debug_output GL_AMDX_vertex_shader_tessellator GL_AMD_conservative_depth GL_AMD_debug_output GL_AMD_draw_buffers_blend GL_AMD_name_gen_delete...
OpenGL

テクスチャオブジェクトとサンプラ設定

いつのまにか、OpenGLのテクスチャ挙動もDirectXに合わせる方向になっているようだ。OpenGL 3.0では、glTexParameteriで GL_TEXTURE_BORDER_COLOR を設定することが非推奨となっている。 他にも テクスチャラッピングモードで GL_CLAMP_TO_BORDER を指定することは推奨されていないとなっている。...
OpenGL

GL拡張のリスト

うちのRADEON 5450のGL extensionのリスト GL_AMDX_name_gen_delete GL_AMDX_random_access_target GL_AMDX_vertex_shader_tessellator GL_AMD_draw_buffers_blend GL_AMD_performance_monitor GL_AMD_s...
OpenGL

OpenGLでのストリームアウト その5

AMD(ATI)で動くOpenGLのストリームアウト(transform_feedback拡張)が一応できました。GL_EXT_transform_feedback のエクステンションを利用します。 ■準備するもの 頂点データのためにVBOを使えるようにすること GLSLによるシェーダーを使えるようにすること クエリー発行できること ■シェーダーの準備 GL...