出于尺寸考虑,我将opengl视图的大小调整为原点的2.0比例,如下所示:
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];
但遇到一个奇怪的问题,请参阅:
我只能在左下1/4区域画东西。
我怎么了
最佳答案
UIView
转换和openGL不太兼容。同样,在openGL初始化之后调整视图大小可能会很麻烦,并且在大多数情况下,必须从该视图创建新的渲染缓冲区。
无论如何,由于将视图缩放到更大的表面,您应该检查以下调用:glViewport
应该定义您要写入缓冲区的哪一部分。通常将其设置为(0,0,viewWidth,viewHeight)。在您的情况下,还必须包括比例尺。glOrtho
(或glFrustum
)定义坐标系(如果使用)。无论视图大小如何,这些值都应该相同。
视图框架可能定义的任何其他矩阵用法或剪刀。
如果可能的话,请尽量删除视图上的转换并尝试找到更好的解决方案。