如何在后台运行的OpenGL动画之上实现“常规”绘图(通常在drawRect方法中完成)?我的应用程序是OpenGL应用程序,它是默认的Xcode游戏应用程序模板。 GLKViewController没有drawRect方法,当我添加一个时,它永远不会被调用。我试图在drawInRect方法中实现绘图代码(确实存在),但是我遇到了运行时错误。
总结一下:我想绘制不使用OpenGL的东西(线条,路径等),但是使用常规的石英图元并在现有的3d渲染上显示它。
答案 0 :(得分:0)
为了确保调用drawRect
,你应该走另一条路:创建一个标准的Cocoa Touch项目,改变主视图的+ (Class)layerClass
方法返回[CAEAGLLayer class]
,然后开始绘图。请注意,CAEAGLLayer
documentation特别警告不要执行您想要执行的操作:
避免在CAEAGLLayer对象的顶部绘制其他图层。如果您必须绘制其他非OpenGL内容,则可能会发现如果将透明2D内容置于GL内容之上并且还确保OpenGL内容不透明且未进行转换,则可接受的性能成本。
查看GLPaint
项目,查看显示layerClass
覆盖的简单OpenGL ES项目(在PaintingView.m
中)。他们使用layoutSubviews
和touchesBegan/Moved/Ended
进行绘图。