如果你想繪製OpenGL下面的圖像,你不能添加一個UIImageView
作爲子視圖,它會繪製在你的渲染之上。 將其繪製爲矩形上的紋理將起作用(我實際上在應用程序中使用它),但您必須調整圖像大小。 配售UIImageView
你的OpenGL視圖下面也將工作,但你必須先調整幾個參數:
確保kEAGLDrawablePropertyColorFormat
是kEAGLColorFormatRGBA8
。這必須在你的CAEAGLLayer
進行設置,通過設置屬性drawableProperties
:
CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES],
kEAGLDrawablePropertyRetainedBacking,
kEAGLColorFormatRGBA8,
kEAGLDrawablePropertyColorFormat,
nil];
我認爲,正確的地方就是你- (void)setupLayer
方法。
- 確保您的
CAEAGLLayer.opaque
屬性設置爲NO
(再次在setupLayer
中)。
當你明確你的緩衝區,以0%Alpha顏色清除它,在這樣一種方式,GLView後面的內容是可見的:
glClearColor(0.f, 0.f, 0.f, 0.f);
glClear(GL_COLOR_BUFFER_BIT);
- 考慮啓用alpha混合,如果你打算使用多重採樣或繪製對象與阿爾法< 1.
在我的經驗,無論如何,保持GLView不透明和繪製與紋理背景顯着更快。 iPhone 5的用戶可能不會注意到,但在舊iPhone 3G上,每秒幀數顯着增加。
把圖像視圖放在OpenGL視圖頂部 – 2012-07-10 17:44:42
從我知道你不能在openGL視圖或其下面有一個UIKit元素(openGL視圖不透明),你必須在頂部繪製它。 – KDaker 2012-07-10 18:03:49
@KDaker - 不,你確實可以將UIView作爲顯示OpenGL ES內容的UIView的子視圖。我一直這樣做。在這種情況下還有其他一些問題,因爲這應該工作得很好。 – 2012-07-10 22:01:50