private static void setupShadowFrameBuffer() { if (shadowPassInterval <= 0) { return; } setupShadowRenderTexture(); glDeleteFramebuffersEXT(sfb); sfb = glGenFramebuffersEXT(); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, sfb); glDrawBuffer(GL_NONE); glReadBuffer(GL_NONE); glDeleteRenderbuffersEXT(sfbDepthBuffer); sfbDepthBuffer = glGenRenderbuffersEXT(); glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, sfbDepthBuffer); glRenderbufferStorageEXT( GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, shadowMapWidth, shadowMapHeight); glFramebufferRenderbufferEXT( GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, sfbDepthBuffer); glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, sfbDepthTexture, 0); int status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); if (status != GL_FRAMEBUFFER_COMPLETE_EXT) { System.out.println("Failed creating shadow framebuffer! (Status " + status + ")"); } }