gpt4 book ai didi

iphone - iOS、iPhone、iPad (OpenGL ES) 是否支持 PBuffer?

转载 作者:行者123 更新时间:2023-11-29 11:20:48 26 4
gpt4 key购买 nike

iPhone OpenGL ES 实现是否支持 PBuffer?

我查看了文档,找不到类似“eglCreatePbufferSurface”的内容

如果是这样,有人可以发布示例代码以供使用吗?

谢谢

最佳答案

像素缓冲区是特定于平台的 OpenGL 扩展。在 ES 中没有这样的扩展,因为帧缓冲区对象是核心 API 的一部分。帧缓冲区对象可用于完整的离屏渲染,通常是纹理,然后用于渲染管道中的其他任务。这就是在 OpenGL ES 中实现深度缓冲阴影和延迟渲染等效果的方式。

例如,要生成一个帧缓冲区对象,其中颜色和深度缓冲区链接到您已经在其他地方生成的纹理,您可以这样做:

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

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colourTextureID, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depthTextureID, 0);

if((status = glCheckFramebufferStatus(GL_FRAMEBUFFER)) != GL_FRAMEBUFFER_COMPLETE)
{
// there was some sort of problem
}

稍后您将使用 glBindFramebuffer 绑定(bind)该帧缓冲区。如果你想渲染实际看到的东西,你应该重新绑定(bind)链接到显示器的帧缓冲区。您将在某处使用 EAGLContext -renderbufferStorage:fromDrawable: 创建帧缓冲区对象,该对象使用 CAEAGLLayer 作为颜色缓冲区的存储。

链接到帧缓冲区的每个单独的东西,例如颜色缓冲区的存储或深度缓冲区的存储,都称为渲染缓冲区。您可以要求驱动程序在它喜欢的任何区域构建它们,而无需通过 glGenRenderbuffersglRenderbufferStorage 链接到纹理。因此,例如,您可以只让颜色缓冲区最终出现在纹理中,并让 GPU 根据需要自行计算深度缓冲区的存储空间。

关于iphone - iOS、iPhone、iPad (OpenGL ES) 是否支持 PBuffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7292261/

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