在iPhone上创建屏幕外OpenGL ES曲面:无法附加

在iPhone上创建屏幕外OpenGL ES曲面:无法附加,iphone,opengl-es,Iphone,Opengl Es,我正在使用EAGL上下文和视图进行应用程序的正常屏幕渲染。这包括(如预期的)创建渲染缓冲区和帧缓冲区,并将其绑定到视图的CaeAglayer。这正如预期的那样有效 但是,有时,我希望使用OpenGL完全在屏幕外渲染某些几何体(以获得生成的原始像素) 我设置了一个屏幕外表面的方式。我不会发布我正在使用的代码(除非有人问我),因为它是在“屏幕外帧缓冲区对象”下的页面上逐字给出的 但是在最后一步中,glCheckFramebufferStatusOES总是返回失败GL\u FRAMEBUFFER\u

我正在使用EAGL上下文和视图进行应用程序的正常屏幕渲染。这包括(如预期的)创建渲染缓冲区和帧缓冲区,并将其绑定到视图的
CaeAglayer
。这正如预期的那样有效

但是,有时,我希望使用OpenGL完全在屏幕外渲染某些几何体(以获得生成的原始像素)

我设置了一个屏幕外表面的方式。我不会发布我正在使用的代码(除非有人问我),因为它是在“屏幕外帧缓冲区对象”下的页面上逐字给出的

但是在最后一步中,
glCheckFramebufferStatusOES
总是返回失败
GL\u FRAMEBUFFER\u complete\u ATTACHMENT\u OES
,而不是预期的成功。我最初认为这是因为已经绑定了一个帧缓冲区(CaeAglayer 1),但问题仍然存在,即使我在创建屏幕外的帧缓冲区之前销毁了该帧缓冲区

有没有人能给我指出正确的方向,告诉我如何使这项工作顺利进行?也许我误解了德国劳埃德船级社管道的一些基本问题(这不是第一次)

谢谢

(非常感谢加文布对这个问题的有益的引导性评论。)

调用
glRenderbufferStorageOES
失败
glGetError()
返回的
GL\u无效值
。这些常数都是合法的,所以我把宽度和高度参数调低到非常小,并在这里成功了。我可以创建的曲面大小似乎有一个上限——我不确定这个错误是指“分配期间内存不足”还是“无论环境可用内存如何,维度都有一个硬限制”(有人能告诉我吗?)

是否存在OpenGL API参考(例如来自苹果)这样的东西,其中包含iPhone特有的信息?许多行为/限制都是特定于实现的,如果能够提前查找这些内容,而不是在使用谷歌时获取一般性的内容,那将是非常棒的…

(非常感谢GavinB对这个问题的有益引导评论。)

调用
glRenderbufferStorageOES
失败
glGetError()
返回的
GL\u无效值
。这些常数都是合法的,所以我把宽度和高度参数调低到非常小,并在这里成功了。我可以创建的曲面大小似乎有一个上限——我不确定这个错误是指“分配期间内存不足”还是“无论环境可用内存如何,维度都有一个硬限制”(有人能告诉我吗?)


是否存在OpenGL API参考(例如来自苹果)这样的东西,其中包含iPhone特有的信息?许多行为/限制都是特定于实现的,如果能够提前查找这些内容,而不是在使用Google时获取一般的内容,那将是非常棒的…

您是否确定要将至少一个颜色渲染缓冲区附加到帧缓冲区?这就是错误所暗示的。尝试在每次调用后添加
glGetError()
,以查看哪一步可能失败。加文:感谢您提供了正确方向的指针。作为一个相对的GL新手,我没有想到要先尝试添加
glGetError
调用!是否确实要将至少一个颜色渲染缓冲区附加到帧缓冲区?这就是错误所暗示的。尝试在每次调用后添加
glGetError()
,以查看哪一步可能失败。加文:感谢您提供了正确方向的指针。作为一个相对的GL新手,我没有想到要先尝试添加
glGetError
调用!最大的宽度和高度是多少?所有iPhone型号应支持1024x1024的最小尺寸。你可以通过调用glGetInteger(MAX_RENDERBUFFER_SIZE_OES)来查询这个问题。我没有经历过不同的尺寸——最初的h/w很大(每边约2000px),并且工作的都在1000以下。我遇到了同样的问题,谢谢你的回答。我投票感谢你。最大的宽度和高度是多少?所有iPhone型号应支持1024x1024的最小尺寸。你可以通过调用glGetInteger(MAX_RENDERBUFFER_SIZE_OES)来查询这个问题。我没有经历过不同的尺寸——最初的h/w很大(每边约2000px),并且工作的都在1000以下。我遇到了同样的问题,谢谢你的回答。我投票赞成感谢你。