iOS、iPhone、iPad(OpenGL ES)是否支持PBuffer?
iPhone OpenGL ES实现是否支持PBuffer 我在文档中四处查看,找不到类似“eglCreatePbufferSurface”的内容 如果有,是否有人可以发布其使用的示例代码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中实现深度缓冲区阴影和延迟渲染等效果的方式 例如,要生成一个帧缓冲区对象,该对象的颜色和深度缓冲区链接
谢谢像素缓冲区是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自行确定深度缓冲区的存储空间(如果您愿意)。回答得好,但不要忘记在代码示例中附加纹理之前绑定帧缓冲区。哦,是的,否则您将干扰当前绑定的任何帧缓冲区。我会修正我的代码。