シェーダにテクスチャを渡そうとしていますが、sampler2Dのユニフォームをテクスチャに設定するときに、OpenGLによって提供される現在のテクスチャを保持するu_sampler2Dと同じコンテンツがあります。LibGDXテクスチャをシェーダに渡す際の問題
precision mediump float;
varying vec4 v_color;
varying vec2 v_texCoord0;
uniform vec4 gl_FragCoord;
uniform sampler2D u_sampler2D;
uniform sampler2D u_LightMap;
uniform vec3 u_cam;
uniform vec2 resolution;
void main() {
vec4 lightColor = texture2D(u_LightMap, gl_FragCoord);
gl_FragColor = lightColor;
}
は次のとおりです。
texture.bind();
this.getShader().begin();
this.getShader().setUniformi("u_LightMap",0);
this.getShader().setUniformf("u_camOffset", new Vector3(inputMethod.getCameraOffsetX(), inputMethod.getCameraOffsetY(), inputMethod.getZoom()));
this.getShader().end();
これは私のテストシェーダである:ここで
は、私が制服セット(これは私のSpriteBatch年代にあるのにsuper.begin()を呼び出す前にメソッドを開始)する方法であります問題? 〜BeefEX
SpriteBatchにシェーダを設定することはありません。しかし、もしあなたがそうするなら、あなたはテクスチャユニットに衝突するでしょう。しかし、これはちょうど推測ですが、実際のコードを見ることなく、確かに言うことは不可能です。 – Xoppa
はいメインクラスのstartメソッドでシェーダを設定しています。そして、テクスチャ番号については、OpenGLラッパーの定数を含む多くの数字を試しました。 – BeefEX
あなたは何がうまくいかなかったと言っていませんでした。黒いテクスチャ?シェイダーがコンパイルされていますか? ShaderProgram.pedanticがtrueの場合、使用されていない制服のためシェーダがコンパイルに失敗することがあります。 – Tenfour04