我正在尝试创建一个FBO来渲染到lwjgl中的纹理。该代码在Linux和Windows上运行良好,但在我的iMac上却没有问题。
相关行如下
System.out.println(GLContext.getCapabilities().GL_EXT_framebuffer_object);
framebuffers[0] = glGenFramebuffersEXT();
具有返回false的能力,并调用生成框架缓冲区抛出。
Exception: java.lang.IllegalStateException: Function is not supported
当我呈现给FBO和blit时,这个FBO被呈现到窗口,窗口最小化,Java抛出一个EXCEPTION_ACCESS_VIOLATION异常。
这是我在屏幕上闪动的代码,据我所知,它的作用是什么。
//Bind the draw framebuffer to the default (0)
GL30.glBindFramebuffer(GL30.GL_DRAW_FRAMEBUFFER, 0);
//Bind the read framebuffer to the fbo id
GL30.glBindFramebuffer(GL30.GL_READ_FRAMEBUFFER, frameBuff
我将呈现为屏幕外的OpenGL框架缓冲区对象,并希望将其保存为图像。请注意,FBO大于显示大小。我可以渲染到屏幕外的缓冲区,并使用它作为纹理,这是可行的。我可以使用偏移量“滚动”这个更大的纹理,这让我确信,我呈现到的上下文比窗口更大。
如果我将屏幕外的缓冲区保存到一个图像文件中,它总是会被裁剪。保存的代码片段是:
void ofFBOTexture::saveImage(string fileName) {
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
// get the raw buffer from ofImage
unsig
使用OpenGL FBO进行屏幕外呈现。下面列出了创建FBO的主要代码片段:
glGenFramebuffers(1, &fbo);
// Create new framebuffers with new size.
int maxSize; glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE, &maxSize);
glGenRenderbuffers(1,&clrRbo)
glBindRenderbuffer(GL_RENDERBUFFER,clrRbo);
glRenderbufferStorage(GL_RENDERBUFFER,