[英]iPhone: Layering a transparent openGL view on top of a UIView?
我正在開發iPhone應用程序,我在常規UIView上有一個openGL視圖渲染。 它正在工作,但我似乎無法讓openGL視圖具有透明背景,顯示下面的UIView。 相反,我得到一個大黑盒子。
我嘗試將背景顏色設置為UIColor clearColor,我將opaque設置為NO,我將glClearColor設置為0.0,0.0,0.0,0.0。
我想我誤解/誤用了與混合模式相關的東西,但我不確定。 任何人都可以給我一些示例代碼,說明如何做到這一點?
提前致謝。
以下是我必須做的才能讓它發揮作用:
eaglLayer.opaque = NO;
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
如果你正在做我正在做的事情,並試圖用GLGravity演示測試它,還有另一個調用glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
每次調用drawView
- 請確保將其更改為glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
太! :)
在EAGLView.m中添加它們
-(id)initWithCoder:(NSCoder*)coder
self.opaque = NO;
self.backgroundColor = [UIColor clearColor];
CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
eaglLayer.opaque = NO;
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
const CGFloat myColor[] = {0.0, 0.0, 0.0, 0.0};
eaglLayer.backgroundColor = CGColorCreate(rgb, myColor);
CGColorSpaceRelease(rgb);
檢查視圖的顏色格式。 如果您通過drawableProperties
字典將其設置為kEAGLColorFormatRGB565
,則視圖內容的Alpha通道將被隱式視為1.0,無論您將其繪制到何處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.