小编Avr*_*dan的帖子

通过着色器的OpenGL投影纹理映射

我试图通过在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)

c++ opengl mapping textures glsl

8
推荐指数
1
解决办法
5643
查看次数

标签 统计

c++ ×1

glsl ×1

mapping ×1

opengl ×1

textures ×1