2015-10-03 100 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