OpenGLのすべての型フォーマットと本当に混同しています。基本的には、整数を書くことができるテクスチャを作成し、整数を読み込むことができます。私は以下を試しました:OpenGLのテクスチャバッファに整数を書き込む方法
glTexImage2D(GL_TEXTURE_2D, 0, GL_R32I, bufferRes.x, bufferRes.y, 0, GL_RED, GL_INT, NULL);
これは私に "INVALID OPERATION"エラーをもたらします。 GL_R32I
からGL_RED
に変更するとこのエラーは発生しません。しかし、GL_R32I
は正しい形式ではありませんか?そうでない場合、これは何のためですか?私はフロートとしてシェーダにこのテクスチャを読みたい場合も
は、私が知っている、私は私がやった16ビット整数に使用される別の場合:
glTexImage2D(GL_TEXTURE_2D, 0, GL_R16_SNORM, width, height, 0, GL_RED, GL_SHORT, NULL)
をそして、これはそれを行うための正しい方法でした。しかし、GL_R32_SNORM
はありません。私は実際にGL_R16I
が働いていることを覚えているので、これらのすべてと本当に混乱していますが、GL_R32I
ではありません。
ハードウェアは何ですか?おそらくあなたのハードウェアは内部フォーマット 'GL_R32I'をサポートしていません。 – Rabbid76
@Rabbidこれをサポートしていますが、7番目の引数に間違った形式があり、GL_REDではなくGL_RED_INTEGERになっているはずです。私はそれが誰にも助けになるならば答えを加えました。 – Zebrafish