다음은 새로운 FBO를 생성하기위한 코드입니다. 지금 당장은 렌더링 버퍼를 사용하고 있습니다.렌더 버퍼에서 깊이 텍스처로 바꾸기
/**
* Creates a new FBO.
* @param width The width of the FBO to create.
* @param height The height of the FBO to create.
* @return an int[] array containing the buffer IDs in the
* following order: {frameBufferID, colorBufferID (texture), depthBufferID}.
*/
public static int[] newFBO(int width, int height) {
int[] out = new int[3];
out[0] = glGenFramebuffersEXT();
out[1] = glGenTextures();
out[2] = glGenRenderbuffersEXT();
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, out[0]);
glBindTexture(GL_TEXTURE_2D, out[1]);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, org.lwjgl.opengl.GL12.GL_TEXTURE_MAX_LEVEL,20);
glTexParameteri(GL_TEXTURE_2D, GL14.GL_GENERATE_MIPMAP,GL_TRUE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0,GL_RGBA, GL_INT, (java.nio.ByteBuffer) null);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_TEXTURE_2D, out[1], 0);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, out[2]);
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL14.GL_DEPTH_COMPONENT24, width, height);
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,GL_DEPTH_ATTACHMENT_EXT,GL_RENDERBUFFER_EXT, out[2]);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
return out;
}
render/depthbuffer를 깊이 텍스처로 전환하고 싶습니다. 이 일을하기 위해 나는 무엇을 바꿀 것인가? (대신 렌더링 버퍼) 그것의 저장소를 생성
out[2] = glGenTextures();
다음 :
out[2] = glGenRenderbuffersEXT();
가된다 :
우선
'GL_GENERATE_MIPMAP' 그 사용을 중지하십시오. 또한, 텍스처에 깊이 * 형식 *을 적용하는 데 도움이 될 것이라고 생각하는 것은 무엇입니까? –
원하는 깊이 형식으로 텍스처를 만들고'glFramebufferTexture2D'와 함께 첨부 파일'GL_DEPTH_ATTACHMENT'에 첨부 하시겠습니까? – Grimmy