2

ジオメトリシェーダーをOpenGL2.1(GLSL 1.2)頂点シェーダーに移植しようとしています。コンパイラが文句を言ったすべてのコードを置き換えた後、別のエラーが発生しました。

頂点シェーダーテクスチャサンプラーが多すぎます

だから私はGLに許可された最大値を尋ねました、そしてこれは私が得たものです:

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:0 GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:0

これはおそらく、頂点シェーダーで許可されているテクスチャがないことを意味します。

これは私のハードウェア/ドライバーの制限にすぎませんか、それともOpenGL2.1 / GLSL1.2で必要ですか?

4

1 に答える 1

5

OpenGL 2.1ハードウェアで頂点テクスチャリングを正常に使用したので、これが単なるハードウェア/ドライバーの制限であることを確認できます。OpenGL 2.1 / GLSL 1.20がそもそも頂点テクスチャの可能性を完全に禁止する場合、これらの定数はあまり意味がありません。

編集:上記のより客観的な証拠として、OpenGLシェーディング言語1.10仕様(OpenGL 2.0に対応)はセクション8.7テクスチャルックアップ関数で述べています:

テクスチャルックアップ関数は、頂点シェーダーとフラグメントシェーダーの両方で使用できます。

そして、OpenGL 2.0仕様自体は、セクション2.15.4 Vertex Shaders-Shader Executionで述べています:

頂点シェーダーには、GL実装でサポートされている場合、テクスチャマップをルックアップする機能があります。頂点シェーダーで使用できるテクスチャイメージユニットの最大数は MAX_VERTEX_TEXTURE_IMAGE_UNITS;です。ゼロの最大数は、GL実装が頂点シェーダーでのテクスチャアクセスをサポートしていないことを示します。

于 2012-11-28T13:18:47.267 に答える