OpenGL中刷新显示的最佳方法
我有一个简单的带有对象的OpenGl场景,还有一个计时器每1/30秒调用一次的函数来移动场景中的对象。 告诉OpenGl刷新屏幕的最佳方法是什么?OpenGL中刷新显示的最佳方法,opengl,graphics,3d,refresh,Opengl,Graphics,3d,Refresh,我有一个简单的带有对象的OpenGl场景,还有一个计时器每1/30秒调用一次的函数来移动场景中的对象。 告诉OpenGl刷新屏幕的最佳方法是什么? 我没有使用双缓冲。您肯定应该使用双缓冲(也是出于性能原因)。在OpenGL中刷新场景的标准方法是重新绘制整个场景。您肯定应该使用双缓冲(也是出于性能原因)。在OpenGL中刷新场景的标准方法是重新绘制整个场景。谢谢。我应该使用setNeedsDisplay方法还是使用lockFocus方法来指示OpenGl刷新?因为如果我不使用这些方法并直接启动刷新
我没有使用双缓冲。您肯定应该使用双缓冲(也是出于性能原因)。在OpenGL中刷新场景的标准方法是重新绘制整个场景。您肯定应该使用双缓冲(也是出于性能原因)。在OpenGL中刷新场景的标准方法是重新绘制整个场景。谢谢。我应该使用setNeedsDisplay方法还是使用lockFocus方法来指示OpenGl刷新?因为如果我不使用这些方法并直接启动刷新功能,视图就不会重新绘制…@Laurent Crivello:您不会指示OpenGL刷新。OpenGL只提供了绘图命令。所有其他东西都是操作系统的一部分(顺便说一句,你没有指定,但我猜它是iOS)。我不是iOS专家,但在阅读文档时,我会说setNeedsDisplay非常适合。我实际上是在Xcode上为Mac开发的。为什么我对setNeedsDisplay有问题,是因为我的函数每1/30秒执行一次,并且它在结束时执行setNeedsDisplay。但是,在drawRect真正执行之前,函数最多执行10次。这正常吗?@Laurent Crivello:据我所知,setNeedDisplay只是设置了一些标志,指示要发出重画的主事件循环。多次调用setNeedDisplay没有实际效果。谢谢,但我的观点是重画操作只在设置setNeedsDisplay后“长时间”执行。在某些情况下,在1/3秒之后,当我期待它之后。不过,我尝试了lockFocus/drawRect/unlockFocus组合,似乎效果更好。谢谢。我应该使用setNeedsDisplay方法还是使用lockFocus方法来指示OpenGl刷新?因为如果我不使用这些方法并直接启动刷新功能,视图就不会重新绘制…@Laurent Crivello:您不会指示OpenGL刷新。OpenGL只提供了绘图命令。所有其他东西都是操作系统的一部分(顺便说一句,你没有指定,但我猜它是iOS)。我不是iOS专家,但在阅读文档时,我会说setNeedsDisplay非常适合。我实际上是在Xcode上为Mac开发的。为什么我对setNeedsDisplay有问题,是因为我的函数每1/30秒执行一次,并且它在结束时执行setNeedsDisplay。但是,在drawRect真正执行之前,函数最多执行10次。这正常吗?@Laurent Crivello:据我所知,setNeedDisplay只是设置了一些标志,指示要发出重画的主事件循环。多次调用setNeedDisplay没有实际效果。谢谢,但我的观点是重画操作只在设置setNeedsDisplay后“长时间”执行。在某些情况下,在1/3秒之后,当我期待它之后。不过,我尝试了lockFocus/drawRect/unlockFocus组合,它似乎效果更好。