我試圖做到:我的繪畫場景的深度地圖上我的場景的頂部(使物體越接近暗,漸行漸遠更輕)GLSL質地傳遞從頂點着色器座標
問題:我似乎無法理解如何從我的頂點着色器向我的片段着色器傳遞正確的紋理座標。
因此,我創建了我的FBO,深度圖得到的紋理......並不是我完全確定我在做什麼,但是無論如何,它都可以工作。我測試了使用固定功能流水線繪製紋理,它看起來就像它應該(深度圖)。
但是,試圖在我的着色器只是工作不使用它...
下面是部分從我的渲染方法結合紋理:
glActiveTexture(GL_TEXTURE7);
glBindTexture(GL_TEXTURE_2D, depthTextureId);
glUniform1i(depthMapUniform, 7);
glUseProgram(shaderProgram);
look(); //updates my viewing matrix
box.render(); //renders box VBO
所以...我認爲這是對嗎?也許?不知道爲什麼質地7,那只是一些在教程我檢查......
下面是從我的頂點着色器重要的東西:
out vec4 ShadowCoord;
void main() {
gl_Position = PMatrix * (VMatrix * MMatrix) * gl_Vertex; //projection, view and model matrices
ShadowCoord = gl_MultiTexCoord0; //something I kept seeing in examples, was hoping it would work.
}
AAAND,片段着色器:
in vec4 ShadowCoord;
in vec3 Color; //passed from vertex shader, didn't include the code for it though. Just the vertex color.
out vec4 FragColor;
void main(
FragColor = vec4(texture2D(ShadowMap,shadowCoord.st).x * vec3(Color), 1.0);
現在的問題是,片段着色器接收紋理的座標總是(0,0)或左下角。我試着將它改爲ShadowCoord = gl_MultiTexCoord7,因爲我認爲它可能與我把紋理放在7號插槽中有關......但是,問題依然存在。當(0,0)的顏色改變時,整個場景的顏色也會改變,而不是僅適用於相應的像素/片段的顏色改變。
這就是我希望得到的一些見解......如何傳遞正確的座標(我希望紋理的角落與屏幕的角落座標相同)。是的,這是一個初學者的問題......但我一直在尋找橙皮書,其問題在於它在GLSL方面很棒,但OpenGL方面的例子嚴重缺乏我真的可以使用...