2015-10-03 98 views
0

有关尺寸的考虑,我调整了OpenGL以2.0规模比原产地,这样的:OpenGL视图,图纸问题

NSInteger Dimension = 2; 
self.glView = [[WQPaintGLView alloc] initWithFrame:CGRectMake(0, 0, width*Dimension, height*Dimension)]; 

CGAffineTransform tScale  = CGAffineTransformMakeScale((float)1/Dimension, (float)1/Dimension); 
CGAffineTransform tTranslate = CGAffineTransformTranslate(tScale, -width, -height); 

self.glView.transform = tTranslate; 

[self.canvasContainerView addSubview:self.glView]; 

却得到了一个奇怪的问题,请参见:

enter image description here

我只能在左下1/4区域画东西。

我错了什么?

回答

1

UIView transform和openGL不是很兼容。此外,在openGL初始化之后重新调整视图可能会很麻烦,并且在大多数情况下,必须从视图创建一个新的渲染缓冲区。

反正既然你缩放视图有一个较大的表面应检查以下电话:

  • glViewport应该定义你是在写缓冲区的哪一部分。通常它被设置为(0,0,viewWidth,viewHeight)。在你的情况下,它也必须包含比例。
  • glOrtho(或glFrustum)定义了您的坐标系(如果使用的话)。无论视角大小,这些应该很可能是相同的。
  • 任何其他矩阵用法或剪刀,可能由视图的框架定义。

尽一切可能去除视图上的变换并尝试找到更好的解决方案。

+0

感谢您的回复。 – Allen