OpenGL

OpenGL

VRAM情報の取得(NVIDIA編)

前回AMDのドライバでVRAM情報取得が出来なくなった状態だったのと、Vista以降でVRAM情報が正しくとれなくなったのとのコンボで再度ちょっと実験してみました。 NVIDIAのドライバでは、GL_NVX_gpu_memory_info という拡張がOpenGLで使える可能性があります。 これを用いてみて、どのような挙動になるか確かめてみたいと思います。A...
OpenGL

OpenGLでVRAM使用状況を取得…出来なくなった?!

VRAMの使用状況を取得するのに、OpenGLのAMD拡張であるGL_ATI_meminfo を以前は使用していたのですが、 最近試してみたところ、この拡張がエクステンションリストに入っていないという状況になっていました。 今の環境は、Catalyst 13.1 (RADEON 6850) 以前は使えていただけに残念です。 ちなみに拡張の情報はこちらに: 前...
OpenGL

(OpenGLの)シェーダーバイナリ(GLSL Binary)

そういえばOpenGL 4.xでシェーダーのコンパイル結果をバイナリとして取得、ロードできる機能が追加されたのですが、当時ドライバがまだ対応していなくて見送っていました。ようやくこれについて調べてみることが出来たので、ここに書いておこうと思います。 まず、DirectXではシェーダーをコンパイルすると各ベンダで共通なシェーダーアセンブリ状態になります。このア...
OpenGL

DirectXとOpenGLのテクスチャ圧縮対応付け

最近のDirectXはDXT1,DXT3,DXT5 という言い方をしなくなりました。 これらはそれぞれBC1, BC2, BC3 と呼ぶようです。 そして、このBCのナンバリングは続いて BC7まであります。 このBC4からBC7までOpenGLではどのような拡張が対応付くのかを調べてみました。 BC4GL_EXT_texture_compression_l...
OpenGL

GL_INTEL_map_texture 拡張

久々にIntelがOpenGL拡張を出していました。 それは、GL_INTEL_map_texture というもので、内容を読むと GPUが読んでいるメモリ領域を直接CPUからアクセス可能にする拡張のようです。 確かに最近のIntel CPUはGPU統合してしまっており、グラフィックスメモリはすなわちメインメモリなわけで、CPUから直接扱うことが出来るように...
OpenGL

NVIDIA GeForce GTX 650 TiのOpenGL 4.3

Geforce GTX650Tiを装着して現行のドライバを入れて発覚したのですが、公式ドライバ 306.97では OpenGL 4.3 はまだ使えないようです! glGetString( GL_VERSION ) で取得してバージョン表示では、 4.2 となっていました。 カタログ上は以下のように OpenGL 4.3 へ対応をうたっているのですが、もうしば...
DirectX

透明ウィンドウ(半透明ウィンドウ)の話 その3

透明なウィンドウということで、このシリーズも第3回。今回が最後となりそうです。 ようやく Windows7,Windows8両方ともで動かせるやり方が発見できました。 なお、Windows7のAeroGlassOFF状態でも動くので、注意して実装すればWindowsXPでもこの方法でいけるのではないかと思います。 その方法は、レイヤードウィンドウを使う方法で...
DirectX

透明ウィンドウとWindows8

ようやくWindows8が発売されていろいろと話題になっているようですが、Aeroがなくなってしまった点は個人的に残念に思います。また、このAeroがなくなったことで、透明なウィンドウの扱いがちょっと困ったことになっているように見受けられます。 参考:  Windows Vista/Windows7 では、DWMの機能をつかってうまく実現できていたようですが...
OpenGL

OpenGL 4.3とOpenGL ES 3.0が出た!

つい先日にOpenGL 4.3とOpenGL ES 3.0の仕様が公開となりました。 ES3の仕様書はこちら ざっとES3について目を通してみたところ、DirectX9からDirectX10へ切り替わったときのような印象を受けました。それは、テクスチャ配列やtransform feedback, 定数バッファなどのDX10の機能が入ってきたからだと思います。...
OpenGL

NVIDIAのシェーダー言語とか その2

前回の続きです。 結局、NVIDIAの配布するライブラリ(Cg Toolkit)に依存してしまうけど、DirectX/OpenGLで共通のシェーダーソースコードを使用することが可能になります。Cg言語は HLSL と大分似ているのでコードは書きやすいと思われます。 OpenGLに純粋に従うのであれば、 GLSL にてシェーダーを記述することになりますが、Di...