OpenGLでVRAM情報を得る – AMD編

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

int value[4] = { 0 };
glGetIntegerv( GL_VBO_FREE_MEMORY_ATI, value );
// value[0] にデータが格納

ここで GL_VBO_FREE_MEMORY_ATIの代わりに以下のものを使うこともできる。

  • GL_TEXTURE_FREE_MEMORY_ATI
  • GL_RENDERBUFFER_FREE_MEMORY_ATI

種別に応じて使用可能な領域サイズを KB単位で知ることができる。
しかしながら、手元で試してみたところどの種別にしても同じサイズが返ってきた。
多くの場合、VBOかTEXTUREで返ってくる値のみをみていればいいのかもしれない。

その一方で、搭載メモリを取得する方法も発見した。
こちらは定義されていないので自分でdefineなどをしてあげる必要がある。
なおこれもKB単位で返ってくる。

#define GL_TOTAL_PHYSICAL_MEMORY_ATI    0x87FE
glGetIntegerv( GL_TOTAL_PHYSICAL_MEMORY_ATI, value );

これらの結果を利用すれば、搭載メモリ、使用メモリ、空きメモリを
OpenGLの環境であっても計測することができる。

OpenGLプログラミング
すらりんをフォローする
すらりん日記

コメント

タイトルとURLをコピーしました