Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS、iPhone、iPad(OpenGL ES)是否支持PBuffer?_Iphone_Ios_Ipad_Opengl Es_Opengl Es 2.0 - Fatal编程技术网

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

iOS、iPhone、iPad(OpenGL ES)是否支持PBuffer?,iphone,ios,ipad,opengl-es,opengl-es-2.0,Iphone,Ios,Ipad,Opengl Es,Opengl Es 2.0,iPhone OpenGL ES实现是否支持PBuffer 我在文档中四处查看,找不到类似“eglCreatePbufferSurface”的内容 如果有,是否有人可以发布其使用的示例代码 谢谢像素缓冲区是OpenGL的平台特定扩展。在ES中没有这样的扩展,因为帧缓冲区对象是核心API的一部分。帧缓冲区对象可用于完成屏幕外渲染,通常是纹理,然后用于渲染管道中的其他任务。这就是在OpenGL ES中实现深度缓冲区阴影和延迟渲染等效果的方式 例如,要生成一个帧缓冲区对象,该对象的颜色和深度缓冲区链接

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
绑定该帧缓冲区。如果要渲染实际看到的内容,则应重新绑定链接到显示的帧缓冲区。您将在某处使用
EAGLContext-renderbufferStorage:fromDrawable:
创建一个帧缓冲区对象,该对象使用CaeAglayer作为颜色缓冲区的存储


链接到帧缓冲区的每个单独对象(例如颜色缓冲区的存储或深度缓冲区的存储)称为渲染缓冲区。您可以要求驱动程序在其喜欢的任何区域中构建它们,而无需通过
glGenRenderbuffers
glRenderbufferStorage
链接到纹理。因此,例如,您可以让颜色缓冲区在纹理中结束,并让GPU自行确定深度缓冲区的存储空间(如果您愿意)。

回答得好,但不要忘记在代码示例中附加纹理之前绑定帧缓冲区。哦,是的,否则您将干扰当前绑定的任何帧缓冲区。我会修正我的代码。