【问题标题】:N depth map texture in single shader单个着色器中的 N 个深度图纹理
【发布时间】:2020-06-24 17:49:21
【问题描述】:

我有一个着色器 1 深度贴图纹理附加到它。

glGenFramebuffers(1, &depthMapFrameBuffer);

glGenTextures(1, &depthMapTexture);
glBindTexture(GL_TEXTURE_2D, depthMapTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT,depthMapTextureSize, depthMapTextureSize, 0, GL_DEPTH_COMPONENT,  GL_FLOAT, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor);

glBindFramebuffer(GL_FRAMEBUFFER, depthMapFrameBuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depthMapTexture, 0);
glDrawBuffer(GL_NONE);
glReadBuffer(GL_NONE);
App::checkFrameBufferError(__FILE__,__LINE__);
glBindFramebuffer(GL_FRAMEBUFFER, 0);
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE){
    std::cerr << "Framebuffer not complete!" << std::endl;
}
Scene::debugTextures[5] = depthMapTexture;

#version 400 core
layout (location = 0) in vec3 ModelSpaceVertexPosition;

uniform mat4 LightSpaceMatrix;
uniform mat4 ModelMatrix;
uniform mat4 CameraSpaceTransformMatrix;
//uniform mat4 CameraSpaceScaleMatrix;

void main(){

    //todo bug here.. translate to sorun yok ama scale yara rotasyon olmussa camera space matrixi kayiyor. kameraya gore translate oluyorlar
    gl_Position =  LightSpaceMatrix  * CameraSpaceTransformMatrix *  ModelMatrix * vec4(ModelSpaceVertexPosition, 1.0);
}

是否可以在一个着色器中将超过 1 个深度纹理附加到不同的 LightSpaceMatrixes?

或者我应该在不同的帧缓冲区中进行吗?

【问题讨论】:

    标签: c++ opengl glsl depth-buffer depth-testing


    【解决方案1】:

    您可以将多个深度图作为颜色附件附加(使用显式类型的纹理格式),而不是使用固定函数深度管道,然后您可以从片段着色器中将各种值写入不同的附件。

    但是,如果您想渲染多个光源或例如一次级联,您需要多次转换同一个顶点......这需要更复杂的技术。

    【讨论】:

      猜你喜欢
      • 2017-04-27
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-04
      • 1970-01-01
      相关资源
      最近更新 更多