그림자 시스템이 제대로 작동하지 않습니다. 나는 나의 FBO를 생성하기 위해 다음 코드를 사용FBO 깊이 버퍼가 빨간색입니다.
int frameBuffer = GL30.glGenFramebuffers();
GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, frameBuffer);
GL11.glDrawBuffer(GL11.GL_NONE);
GL11.glReadBuffer(GL11.GL_NONE);
int texture = GL11.glGenTextures();
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture);
GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL14.GL_DEPTH_COMPONENT16, WIDTH, HEIGHT, 0,
GL11.GL_DEPTH_COMPONENT, GL11.GL_FLOAT, (ByteBuffer) null);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL12.GL_CLAMP_TO_EDGE);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL12.GL_CLAMP_TO_EDGE);
GL32.glFramebufferTexture(GL30.GL_FRAMEBUFFER, GL30.GL_DEPTH_ATTACHMENT, texture, 0);
GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, 0);
GL11.glViewport(0, 0, Display.getDisplayMode().getWidth(), Display.getDisplayMode().getHeight());
내 기관 내 기본 렌더러 (출력 vec4)에서 잘 표현된다. 내 그림자 쉐이더 코드는 정직 :
#version 430
layout(location = 0) out float fragmentdepth;
void main(void){
fragmentdepth = gl_FragCoord.z;
}
내가 어떤 식 코멘트를 사용하지 않고 출력에 vec4 (1.0)을 시도하고 모든 그래서 내 계산이 정확 내 쉐이더 코드는 잘 작동한다 괜찮 았는데.
내 그리기 호출은 다음과 같습니다
GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, frameBuffer);
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT|GL11.GL_DEPTH_BUFFER_BIT);
renderShadows();
GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, 0);
renderAllItems();
Display.sync(FPS_CAP);
Display.update();
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT|GL11.GL_DEPTH_BUFFER_BIT);
GL11.glClearColor(0.2f,0.1f,0.1f , 1f);
I 전화 "renderAllItems를();" 나는 또한 내 깊이 텍스처를 표시해야 오른쪽 상단 모서리에있는 쿼드 렌더링입니다. 하지만 내가 본 모든 것은 빨간 쿼드입니다. 검은 색/흰색으로 표시해야합니까?
"그림자 시스템이 제대로 작동하지 않습니다." - "나는 그림자 시스템을 제대로 작동시킬 수 없다." – Unknown
깊이 버퍼가 색상이 아니며 깊이를 저장합니다. 그것은 하나의 구성 요소지만 그게 당신이 원하는 어떤 색깔로 해석 될 수 있습니다 .. 일반적으로 붉은 채널이되는 경향이 있습니다. –
"* 흑백이 아니고 무엇인가 보여 주어야합니까? *" "흑백으로 렌더링합니까? –