2
我嘗試在opengl中使用FBO創建2 pass效果。 在第一遍中,我將深度寫入顏色緩衝區(圖像1)。使用在其頂點着色器下面 :opengl中的2 pass效果
gl_Position = projection * view * gl_Vertex;
vec4 position = gl_Position/gl_Position.w;
position = position/2.0 + 0.5;
float temp_depth = position.z;
gl_FrontColor = vec4(temp_depth,temp_depth,temp_depth,1);
在第二遍我嘗試從先前通使用紋理和色彩的場景(圖像2)。 這裏是頂點着色器代碼:
vec4 shadow_coord = projection * view * gl_Vertex;
shadow_coord = shadow_coord/shadow_coord.w;
shadow_coord = shadow_coord/2.0 + 0.5;
gl_FrontColor = texture2D(light_depth_texture, shadow_coord.xy);
的場景是在一個錐形的前部由一個四邊形。 在這兩種情況下,片段着色器都是gl_FragColor = gl_Color; 兩種情況下的視圖和投影矩陣在開始時都完全相同。 問題是shadow_coord.xy中存在偏差。
只要視圖和投影值完全相同,我不應該得到相同的結果嗎? 我能做些什麼來解決它?
(圖像1)
(圖像2)
你的'#版本'指令在哪裏? – genpfault
您是否使用浮點紋理作爲深度緩衝區? – Unick
你好。 我不寫入深度緩衝區。我寫入顏色緩衝區。 內部格式:GL_RGBA 源格式:GL_RGBA 類型:GL_UNSIGNED_BYTE 日Thnx – user1176476