OpenGL

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

OpenGLでVRAM情報を得る – AMD編

最近気づいたけど、AMD(ATI)用のエクステンションで GL_ATI_meminfo というものがある。 これを用いれば、OpenGL環境のアプリでもどのくらいVRAMを使っているかがわかる。使い方は簡単で、以下のようにして値をとってくる。 int value = { 0 }; glGetIntegerv( GL_VBO_FREE_MEMORY_ATI, ...