gpt4 book ai didi

iphone - 使用深度渲染缓冲区有什么问题? OpenGL ES 2.0

转载 作者:行者123 更新时间:2023-12-03 19:35:17 25 4
gpt4 key购买 nike

我使用这个代码:

context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];

if (!context || ![EAGLContext setCurrentContext:context] || ![self loadShaders])
{
[self release];
return nil;
}

glGenFramebuffers(1, &defaultFramebuffer);
glGenRenderbuffers(1, &colorRenderbuffer);
glGenRenderbuffers(1, &depthRenderbuffer);

glBindFramebuffer(GL_FRAMEBUFFER, defaultFramebuffer);
glBindRenderbuffer(GL_RENDERBUFFER, colorRenderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, depthRenderbuffer);

glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorRenderbuffer);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer);

glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

但是当我运行应用程序时,我看到紫色屏幕?这段代码有什么问题?

最佳答案

我没有看到您将颜色渲染缓冲区绑定(bind)到要显示的 CAEAGLLayer 的位置(尽管这可能会在稍后发生),而且我没有看到您启用深度测试。另外,如果我没有记错的话,您需要绑定(bind)颜色渲染缓冲区,请为此调用 glFramebufferRenderbuffer() ,然后绑定(bind)深度渲染缓冲区并再次调用它。

以下是我用来在 OpenGL ES 2.0 上设置类似显示的代码:

glEnable(GL_DEPTH_TEST);

glGenFramebuffers(1, &viewFramebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, viewFramebuffer);

glGenRenderbuffers(1, &viewRenderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, viewRenderbuffer);

[context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer*)self.layer];

glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &backingWidth);
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &backingHeight);

glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, viewRenderbuffer);

glGenRenderbuffers(1, &depthRenderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, depthRenderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, backingWidth, backingHeight);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer);

if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
{
NSLog(@"Failure with framebuffer generation");
return NO;
}

此应用程序的完整代码可用 here .

关于iphone - 使用深度渲染缓冲区有什么问题? OpenGL ES 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4378182/

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