gpt4 book ai didi

iphone - 在 OpenGL ES (iPhone) 中绘制到离屏渲染缓冲区

转载 作者:行者123 更新时间:2023-12-03 18:27:29 25 4
gpt4 key购买 nike

我正在尝试在 iPhone 上的 OpenGL ES 中创建离屏渲染缓冲区。我创建了这样的缓冲区:

        glGenFramebuffersOES(1, &offscreenFramebuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, offscreenFramebuffer);

glGenRenderbuffersOES(1, &offscreenRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, offscreenRenderbuffer);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, offscreenRenderbuffer);

但我对如何渲染存储感到困惑。苹果的文档说要使用 EAGLContext renderBufferStorage:fromDrawable: 方法,但这似乎只适用于一个渲染缓冲区(正在显示的主要缓冲区)。如果我使用普通的OpenGL函数glRenderBufferStorageOES,那么我似乎无法让它显示。代码如下:

        // this is in the initialization section:
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_RGB8_OES, backingWidth, backingHeight);

// and this is when I'm trying to draw to it and display it:
glBindFramebufferOES(GL_FRAMEBUFFER_OES, offscreenFramebuffer);
GLfloat vc[] = {
0.0f, 0.0f, 0.0f,
10.0f, 10.0f, 10.0f,
0.0f, 0.0f, 0.0f,
-10.0f, -10.0f, -10.0f,
};

glLoadIdentity();
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, vc);
glDrawArrays(GL_LINES, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);

glBindRenderbufferOES(GL_RENDERBUFFER_OES, offscreenRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];

这样做,屏幕上就不会显示任何内容。但是,如果我将对“offscreen...Buffer”的引用切换到使用 renderBufferStorage 方法创建的缓冲区,则它可以正常工作。

有什么建议吗?

最佳答案

由于您无法将 presentRenderbuffer 与离屏 FBO 一起使用,因此您应该使用 glFramebufferTexture2DOES 将其与纹理对象关联,然后渲染带纹理的全屏四边形。

关于iphone - 在 OpenGL ES (iPhone) 中绘制到离屏渲染缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1853551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com