0
こんにちは私はC++を使ってOpenGLで影を実装しようとしています。 FrameBufferとDepthTextureを作成しました。すべてのフレームI m rendering my entities to the FrameBuffer. For now I
は他のGUIのように画面上にテクスチャを表示していますが、テクスチャは完全に白で、カメラを動かすと変化しません。あなたが私が問題を見つけるのを助けることができれば幸いです。FrameBufferからDepthTextureをレンダリングする
マイコード:レンダラで
//Creating FrameBuffer + Texture
glGenFramebuffers(1, &depthMapFBO);
glGenTextures(1, &depthMap);
glBindTexture(GL_TEXTURE_2D, depthMap);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32, m_width, m_height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glBindFramebuffer(GL_FRAMEBUFFER, depthMapFBO);
glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, depthMap, 0);
glDrawBuffer(GL_NONE);
glReadBuffer(GL_NONE);
glBindFramebuffer(GL_FRAMEBUFFER, 0);
:
glm::mat4 lightSpaceMatrix = glm::ortho(-10.0f, 10.0f, -10.0f, 10.0f, Camera::ZNEAR, Camera::ZFAR) * glm::lookAt(m_position, m_position + m_forward, m_up);
m_shader.Bind();
m_shader.loadMat4("lightSpaceMatrix", lightSpaceMatrix);
//Bind the FrameBuffer
glViewport(0, 0, m_width, m_height);
glBindFramebuffer(GL_FRAMEBUFFER, depthMapFBO);
glClear(GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
//Render all Entitys
for (auto entity : m_entitys) {
m_shader.loadMat4("model", entity->getTransform()->getModel());
entity->getTexturedModel()->getMesh()->Draw();
}
//Unbind the FrameBuffer
glBindFramebuffer(GL_FRAMEBUFFER, 0);
glViewport(0, 0, Setting::width, Setting::height);
m_shader.unbind();
マイバーテックスシェーダ:
#version 430
in layout(location=0) vec3 position;
uniform mat4 lightSpaceMatrix;
uniform mat4 model;
void main()
{
gl_Position = lightSpaceMatrix * model * vec4(position, 1.0f);
}
マイ・フラグメントシェーダ:
#version 430
void main()
{
gl_FragColor = vec4(1);
}
'gl_FragColor = vec4(1);'で表示される色は? – mlkn
私はカラーアタッチメントを持っていないので、フラグメントシェーダーで何が起こっているのかは関係ないと思ったので、gl_FragColorをvec4(1)に設定しました。 – Philipp98
シーンを通常その投影マトリックスでレンダリングしようとしましたか?たぶん何も書かれておらず、深度のバッファーですべて白くクリアされます。また、正しいglDepthFuncを持っていますか? – mlkn