OpenGL

OpenGL

OpenGLでVRAM情報を得る – AMD編

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

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

今までのものは GL_transform_feedback_NVのやつでやっていた。 しかし、今回AMDのRadeon 5450環境を手に入れられたのでこちらについても ちょっと試してみた。GL_transform_feedback_EXT をサポートしているようなのでこちらを使うことになりそう。 ■APIの置き換え(その1) NVIDIA AMD glBe...
OpenGL

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

ようやく動作自体は出来たのでメモしておきたいと思います。 サンプルプログラムはまた後日に。 ■ 準備 GLSLシェーダーをコンパイル シェーダープログラムをリンク処理 glTransformFeedbackVaryingsNV でストリームアウトとして書き込むデータの設定 格納先のバッファオブジェクトを生成 ■ 描画フェーズ ラスタライズ処理の無効化(GL_...
OpenGL

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

■GL_NV_transformfeedbackのspecテキスト こう書いてあった。 Two methods exist to specify which transformed vertex attributes are streamed to one, or more, buffer objects in transform feedback mode...
OpenGL

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

OpenGLを用いてもDirectX10のストリームアウト相当の機能を使うことが出来ます。この機能のためにまず最初に拡張されたのが GL_NV_transform_feedback というエクステンションです。 最近ではこれがEXTになったようですが、単純にNVから格が上がっただけとはいえないようです。 APIが変更されているからです。 EXT版で試行錯誤し...
DirectX

Scissorによる挙動違い(DX vs GL)

DirectXとOpenGLとで、シザーの設定時のクリア挙動が異なるようです。座標系がそれぞれ異なるってのもあるけど、 そこは上下を逆転して対処したとしても、それだけでは互換動作は不可能。 フレームバッファの縦横と、ビューポートの縦横と、シザー設定の縦横 それぞれ違う設定にしてみて、双方のAPIで実行してみるとわかりやすいかと。 DirectXではビューポー...
OpenGL

GLSLスキニング

■GLSLでスキニングシェーダー書いてみた わりとGLSLでスキニングシェーダーをやったという記事を見かけないので ここで書いてみます。 大変だった点はGLSLでは、Cのようなキャストを受け付けない点。 そのためブレンドインデックスをどうやってint型にするかで悩みました。 実際には、下記のソースコードに示すように int( )で囲ってやる程度で済む話なので...