我正在爲紋理映射編寫GLSL程序。我有一個奇怪的問題。在我的頂點着色器中,我嘗試將紋理座標vec2作爲變化片段着色器傳遞。在同一編程的差異着色器中,我做了同樣的工作。但對於這種紋理它不起作用。如果我評論這條線,那麼一切正常。我不知道爲什麼會發生這種情況。將屬性分配給頂點着色器中的變化時GLSL中的奇怪錯誤
這是頂點着色器:
attribute vec4 position;
attribute vec4 color1;
attribute vec4 normal;
attribute vec2 texCoord;
uniform mat4 model; //passed to shader
uniform mat4 projection; //passed to shader
uniform mat4 view; // passed to shader
uniform mat4 normalMatrix; //passed to shader
uniform mat4 worldNormalMatrix;
uniform vec3 eyePos;
varying vec4 pcolor;
varying vec3 fNormal;
varying vec3 v;
varying mat4 modelMat;
varying mat4 viewMat;
varying mat4 projectionMat;
varying vec2 texCoordinate;
varying vec3 reflector;
void main()
{
//texCoordinate = texCoord; // If I uncomment this, then I get wrong output. but the same thing works in a diff shader!!
mat4 projectionModelView;
vec4 N;
vec3 WorldCameraPosition = vec3(model*vec4(eyePos,1.0));
vec3 worldPos = vec3(model*position);
vec3 worldNorm = normalize(vec3(worldNormalMatrix*normal));
vec3 worldView = normalize(vec3(WorldCameraPosition-worldPos));
reflector = reflect(-worldView, worldNorm);
projectionMat = projection;
modelMat=model;
viewMat=view;
N=normalMatrix*normal;
fNormal = vec3(N); //need to multiply this with normal matrix
projectionModelView=projection*view*model;
v=vec3(view*model*position); // v is the position at eye space for each vertex passed to frag shader
gl_Position = projectionModelView * position; // calculate clip space position
}
你是什麼意思不工作?你檢查着色器編譯和鏈接的結果嗎?你檢查過glGetError嗎? – Tim
你好, 不工作意味着它給了我一個白色的大圓圈黑屏。我其實對調試沒有太多的想法。此外,我只是不明白爲什麼這不起作用,導致在同一編程的差異陰影,我做了,並且工作正常。目前我正試圖通過互聯網找到這類錯誤的相關信息。 – mindbender
那麼如果你對調試沒有太多的想法,那麼該學習了。可能有100種不同的事情可能會導致錯誤,從而導致無法正常工作。首先在整個代碼中插入一些glGetError,並在任何地方查看它是否爲非零。 – Tim