2016-03-07 66 views

回答

1

由于这个API的工作原理,它可能会在调整大小时创建一个新的帧缓冲区。这可以通过自定义视图来实现,因此“不要使用GLKView”将会是一个答案。缩放自定义视图绑定到OpenGL时,缩放显示缩放时会产生错误的分辨率。

你对自己在做什么的信息太少了,但总的来说,这看起来像是在openGL中使用滚动视图。我已经通过在绘制视图的顶部添加滚动视图并且然后监听其交互(滚动,缩放)来实现这样的系统。然后我计算了滚动视图内容视图的可见矩形,并在openGL投影矩阵中使用了相同的矩形。这只是简单地呼叫ortho带有可见的帧参数。

因此,一般来说,您不应该简单地尝试缩放,缩放您渲染的视图,因为您需要更大的缓冲区。当从视图创建缓冲区时,它将与视图本身相同,并乘以您设置的内容比例(@ 2x,@ 3x)。因此,缩放时实际缩放视图,然后应调整大小以适应需要时间的新大小。但是如果你不调整它,你会失去决议。所以从我看到的改变投影矩阵的方式来说,它很可能从滚动视图传输数据,所以你得到所有的弹跳效果等。

如果您已经在使用显示链接(不管交互作用如何重绘视图),那么就不需要监听滚动视图事件。您只需在您绘制的每个帧上获取滚动视图的可见矩形。这将剥离一些代码。