今までのものは GL_transform_feedback_NVのやつでやっていた。
しかし、今回AMDのRadeon 5450環境を手に入れられたのでこちらについても
ちょっと試してみた。GL_transform_feedback_EXT をサポートしているようなのでこちらを使うことになりそう。
しかし、今回AMDのRadeon 5450環境を手に入れられたのでこちらについても
ちょっと試してみた。GL_transform_feedback_EXT をサポートしているようなのでこちらを使うことになりそう。
■APIの置き換え(その1)
NVIDIA | AMD |
---|---|
glBeginTransformFeedbackNV | glBeginTransformFeedbackEXT |
glEndTransformFeedbackNV | glEndTransformFeedbackEXT |
こんな感じで単純に置き換えておけば、NV->EXT使用になる
■APIの置き換え(その2)
glTransformFeedbackVaryingsNV は glTransformFeedbackVaryingsEXT を使用することに。
中身が違うので単純に置き換えてはいけない。
以前 ”GLchar**を受け取る!?ヘッダ正しいですか?”と書いていた部分が間違っていたことに気づいた。
- EXT版ではGLchar**を受け取る。
- NV版ではGLintを受け取るべき
という差異があった。これが仕様。
EXT版では、varying変数名を設定できるが、
NV版ではvarying変数のロケーションIdを受け取る
という仕様の違いがあったためであった。
NVIDIAとAMDと両方のデバイスをさわってみて初めて納得がいった。
■感想
やっぱりOpenGLのTransform Feedback(StreamOut機能相当)は情報が少ない。
使っている人が少ないのかもしれないので、これからがんばる人のために
ここに情報を書いておきます。
近いうちにNVIDIAとAMDと両方で動くtransform_feedbackのサンプルを作って公開する予定です。