奇妙な問題。私のGLSLプログラムは、ロジックや仕様が示唆するものとは異なる動作をしているようです。頂点シェーダーは次のとおりです。
#version 120
uniform mat4 q;
varying vec2 TextureCoord;
void main()
{
gl_FrontColor = gl_Color;
gl_TexCoord[0] = gl_MultiTexCoord0;
vec4 p = q*gl_Vertex;
TextureCoord = vec2(.01f,.01f);
gl_Position= gl_ModelViewProjectionMatrix*p;
gl_PointSize = gl_Normal.x / -p.z;
}
そして、これがフラグ シェーダです。
#version 120
uniform sampler2D theTex;
varying vec2 TextureCoord;
void main()
{
vec2 realTexCoord = ( gl_TexCoord[0].st*vec2(0.024f,0.024f)) + TextureCoord;
gl_FragColor = gl_Color*texture2D(theTex, realTexCoord);
}
シワはこれです。+ TextureCoord をフラグ シェーダにドロップし、(.1f,.1f) のような一定の vec2 に置き換えると、テクスチャが表示されます。しかし、このように、奇妙なガベージカラーノイズが発生します。これは、スムーズ ポイントとテクスチャ座標がオンに置き換えられた GL_POINTS です。gl_PointCoord は常にゼロなので、TexCoord[0].st を使用しています...
何が起こっているように見えますか? しかし、これはどのように起こるでしょうか?また、これらの値が頂点シェーダーとフラグメント シェーダーの間で何らかの形で「補間」されている場合、どのようなロジックが適用されるのでしょうか?
値をユニフォームに送信しようとしましたが、それも常にゼロです。
私はLWJGLを使用しています。