我有一个子类的CAOpenGLLayer class重写了drawInCGLContext,在那里我用OpenGL绘制了一个矩形。将CAOpenGLLayer添加到CALayer并显示。

因此,当我想绘制某种东西时,我需要使用这种体系结构在drawInCGLContext中进行绘制。

我想要的是一种其他class用于绘制,设置动画或渲染的上下文,但是每次drawInCGLContext出现时都会显示该上下文。

因此,基本上我的子类唯一要做的就是显示一个远程(OpenGL)context,实现此目的的最佳方法是什么?还是我应该考虑使用其他方法?

*不使用CALayer是不可行的。

最佳答案

您是否考虑过使用帧缓冲对象(FBO)?您可以创建一个由纹理支持的对象。您的“远程”工程图类可以绘制到FBO中,这将导致工程图转到支持它的纹理。然后,您可以在其他地方使用该纹理,例如将其拖到CAOpenGLLayer子类的屏幕上。有关如何使用FBO的详细信息,请参见this link

10-01 20:07