出于尺寸考虑,我将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];


但遇到一个奇怪的问题,请参阅:

ios - OpenGL查看绘图问题-LMLPHP

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

我怎么了

最佳答案

UIView转换和openGL不太兼容。同样,在openGL初始化之后调整视图大小可能会很麻烦,并且在大多数情况下,必须从该视图创建新的渲染缓冲区。

无论如何,由于将视图缩放到更大的表面,您应该检查以下调用:


glViewport应该定义您要写入缓冲区的哪一部分。通常将其设置为(0,0,viewWidth,viewHeight)。在您的情况下,还必须包括比例尺。
glOrtho(或glFrustum)定义坐标系(如果使用)。无论视图大小如何,这些值都应该相同。
视图框架可能定义的任何其他矩阵用法或剪刀。


如果可能的话,请尽量删除视图上的转换并尝试找到更好的解决方案。

10-08 14:23