あなたが何を達成しようとしているのか完全にはわかりませんが、ここにいくつかの考えがあります:
sampler2D
名前が示すように、2D テクスチャをサンプリングする必要があります。0
これは特別な GLSL 変数であるため、コンパイラは、 の最初のパラメーターに渡されたときに有効な型ではないことについて不平を言うのは正しいことですtexture2D
。
複数のテクスチャを使用していない限り、2 番目のパラメータglUniform1i
は常に0
(デフォルト) にする必要があります。テクスチャを 1 つだけ使用している場合は、この呼び出しをスキップできますが、そのままにしておくことをお勧めします。
値 0 を渡したいだけなのに、なぜ texture2D を呼び出す必要があるのでしょうか? 確かにあなたはできるgl_FragColor = destinationColor
。これにより、 からの頂点シェーダ出力に基づいてフラグメントに色が付けられますgl_Position
。テクスチャを使用する予定がない場合 (またはそう思われる場合)、なぜテクスチャを実装しているのかわかりません。
編集: 2 つのテクスチャをフラグメント シェーダーに正しく送信するコード。
//glClear();
// Attach Texture 0
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, _texture0);
glUniform1i(_uSampler0, 0);
// Attach Texture 1
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, _texture1);
glUniform1i(_uSampler1, 1);
//glDrawArrays();