簡體   English   中英

iPhone:在UIView上面分層透明的openGL視圖?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM