Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL中刷新显示的最佳方法_Opengl_Graphics_3d_Refresh - Fatal编程技术网

OpenGL中刷新显示的最佳方法

OpenGL中刷新显示的最佳方法,opengl,graphics,3d,refresh,Opengl,Graphics,3d,Refresh,我有一个简单的带有对象的OpenGl场景,还有一个计时器每1/30秒调用一次的函数来移动场景中的对象。 告诉OpenGl刷新屏幕的最佳方法是什么? 我没有使用双缓冲。您肯定应该使用双缓冲(也是出于性能原因)。在OpenGL中刷新场景的标准方法是重新绘制整个场景。您肯定应该使用双缓冲(也是出于性能原因)。在OpenGL中刷新场景的标准方法是重新绘制整个场景。谢谢。我应该使用setNeedsDisplay方法还是使用lockFocus方法来指示OpenGl刷新?因为如果我不使用这些方法并直接启动刷新

我有一个简单的带有对象的OpenGl场景,还有一个计时器每1/30秒调用一次的函数来移动场景中的对象。 告诉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组合,它似乎效果更好。