OpenGLよしなし事

今日はOpenGLのメモ程度内容をつらつらと。

FBOのレンダーバッファ、レンダーテクスチャ

レンダーテクスチャはテクスチャとして利用可能なのはわかるが、
レンダーバッファの存在価値ってなんだろうか。

情報ソースはどこか忘れたけど、
レンダーバッファのほうはテクスチャとして使わない分、高速に動くように
ドライバ内で最適化の余地があるらしい。

テクスチャ

glGenTextures, glTexImage2Dだけではテクスチャは使えるようにならない。
glTexParameteriでアドレッシングモードとフィルタモードを設定しておく必要がある。

このあたり忘れるとテクスチャが張られないだけでなく、
FBOもincomplete状態となってしまうので気をつけよう。

gl○○Pointer,glEnableClientStateとか

GLSL前提のシェーダーありき環境だとこれら不要かとおもう。
頂点アトリビュートの設定やVBOつかってできるし。

OpenGL3系で廃止のマークもあるので、使わないにこしたことはないだろう。

GLSL

コンパイル

オフラインコンパイルできないのがつらいなぁ。
確かにソースコードは環境非依存で持って行けるけど。
GLSLソース内日本語の存在は確か禁止だったはず。

cgcでコンパイルしてという話も聞いたが、結局はARB規定されているアセンブリに落ちる程度。
結局のところその後ドライバ解釈が入ってシェーダーバイナリがGPUに送られる。

それでもソース解釈よりはいいだろうし、気付けばこれってDX9とやっていることはほぼ同じじゃんと気付いてしまった。
あとはARBで規定されている部分って最低限だったと思うので、
現時点でどのくらい使い物になるんだろうか。

ソース記述

頂点入力でfloat4の入力しか受け付けられない模様。
UVなど2要素でいいものでも float4すなわちvec4で受け取る必要がある。
この部分が、DirectXと違って理解に苦しむなぁ。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする