我试图通过在OpenGL 3+中使用着色器来实现简单的投影纹理映射方法.虽然网上有一些例子,但我在使用着色器创建一个工作示例时遇到了麻烦.
我实际上计划使用两个着色器,一个用于绘制正常的场景,另一个用于投影纹理贴图.我有绘制场景的功能 void ProjTextureMappingScene::renderScene(GLFWwindow *window),我使用glUseProgram()在着色器之间切换.正常的绘图工作正常.但是,我不清楚我应该如何在已经纹理化的立方体上渲染投影纹理.我是否必须使用模板缓冲区或帧缓冲区对象(场景的其余部分应该不受影响)?
我也不认为我的投影纹理贴图着色器是正确的,因为我第二次渲染立方体时显示黑色.此外,我尝试使用颜色进行调试,只有t着色器的组件似乎不为零(因此立方体显示为绿色).我正在重写texColor下面的片段着色器,仅用于调试目的.
VertexShader
#version 330
uniform mat4 TexGenMat;
uniform mat4 InvViewMat;
uniform mat4 P;
uniform mat4 MV;
uniform mat4 N;
layout (location = 0) in vec3 inPosition;
//layout (location = 1) in vec2 inCoord;
layout (location = 2) in vec3 inNormal;
out vec3 vNormal, eyeVec;
out vec2 texCoord;
out vec4 projCoords;
void main()
{
vNormal = (N * vec4(inNormal, 0.0)).xyz;
vec4 posEye = MV * vec4(inPosition, 1.0);
vec4 posWorld = …Run Code Online (Sandbox Code Playgroud)