2
그림자 맵을 작동 시키려고 노력했지만, 그 깊이 버퍼 부분을 지나칠 수도 있습니다. 나는 몇 시간 동안 인터넷을보고 있었는데, yadayadayada.(그림자 맵) 깊이 버퍼를 텍스처로 렌더링하고 그것을 확인하기 위해 그리기
GLuint framebuffer;
GLuint depth;
GLuint texture;
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 1280, 800, 0, GL_RGBA, GL_FLOAT, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glBindTexture(GL_TEXTURE_2D, 0);
glGenTextures(1, &depth);
glBindTexture(GL_TEXTURE_2D, depth);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 1280, 800, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glBindTexture(GL_TEXTURE_2D, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depth, 0);
//glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
glDrawBuffer(GL_NONE);
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
std::cout << "There was a problem with making the framebuffer\n";
glBindFramebuffer(GL_FRAMEBUFFER, 0);
return framebuffer;
보기 위해 쿼드로 '깊이'렌더링 : 모든
glBindFramebuffer(GL_FRAMEBUFFER, FBO);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
for (int i = 0; i < objects.size(); i++)
{
objects[i].renderObjectForDepth();
}
glBindFrameBuffer(GL_TEXTURE_2D,0);
glBindTexture2D(GL_TEXTURE_2D, texture)
drawQuad();
을 그리고 나에게
FBO과 깊이의 질감을 만들기 - 여기에 지금까지 내 코드입니다 괜찮아 보이지만 첨부 된 그림처럼 이미지를 생성합니다. 나는 며칠 동안 내 머리카락을 찢어 버렸고, 어떤 도움을 주시면 감사하겠습니다.
EDIT : 필자가 결코 작성하지 않은 텍스처 색을 빈 질감으로 렌더링했기 때문입니다. 깊이 텍스처를 그린 후 컬러 텍스처를 작성하면 잘 동작합니다. 하지만 색상 질감이 없으면 어떻게해야합니까? 당신의 깊이 전용 FBO에 렌더링 할 때 다음과 같은 두 가지 상태가 설정되어 있는지
FBO 만 깊이 텍스처와 완벽하게 유효합니다. – Grimmy
@Grimmy 깊이 텍스처만으로 렌더링 할 때 색상 텍스처가있을 때만 텍스처가 전혀 나타나지 않습니다. – BlueSpud
오. glColorMask를 확인하십시오 – Grimmy