prp*_*aze 13 iphone opengl-es ios glkit
有没有办法让GLKView的背景透明?我在这里尝试了解决方案,但这对我不起作用.
*编辑:我需要帮助使它完全透明.背景主要是白色和灰色,但我只是用更鲜艳的色彩测试它,当然你可以模糊地看到背景.任何想法为什么它将部分透明但不完全使用以下代码?
这是我的视图控制器中的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
self.context = [[[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2] autorelease];
CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.view.layer;
eaglLayer.opaque = NO;
if (!self.context) {
NSLog(@"Failed to create ES context");
}
GLKView *view = (GLKView *)self.view;
view.context = self.context;
view.backgroundColor = [UIColor clearColor];
view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
[self setupGL];
}
- (void)setupGL
{
[EAGLContext setCurrentContext:self.context];
self.effect = [[[GLKBaseEffect alloc] init] autorelease];
self.effect.light0.enabled = GL_FALSE;
self.effect.light0.diffuseColor = GLKVector4Make(1.0f, 0.4f, 0.4f, 0.0f);
self.effect.light0.ambientColor = GLKVector4Make(1.0f, 0.4f, 0.4f, 0.0f);
glDisable(GL_DEPTH_TEST);
glGenVertexArraysOES(1, &_vertexArray);
glBindVertexArrayOES(_vertexArray);
glGenBuffers(1, &_vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertexData), vertexData, GL_DYNAMIC_DRAW);
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, VERTEX_POS_DATA_SIZE, GL_FLOAT, GL_FALSE, VERTEX_DATA_SIZE * sizeof(GLfloat), BUFFER_OFFSET(0));
glEnableVertexAttribArray(GLKVertexAttribColor);
glVertexAttribPointer(GLKVertexAttribColor, VERTEX_COLOR_DATA_SIZE, GL_FLOAT, GL_FLOAT, VERTEX_DATA_SIZE * sizeof(GLfloat), BUFFER_OFFSET(VERTEX_POS_DATA_SIZE * sizeof(GLfloat)));
glLineWidth(10.0);
}
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
if (!needsRedraw) return;
needsRedraw = NO;
glClearColor(0.65f, 0.65f, 0.65f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
[self.effect prepareToDraw];
glDrawArrays(GL_LINE_STRIP, 0, vertexCount);
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试将backgroundColor设置为[UIColor clearColor]并将eaglLayer设置为不透明.哎呀,我甚至尝试将eaglLayer的backgroundColor设置为具有0不透明度的CGColorRef.
prp*_*aze 17
嗯,我不认为这很重要,因为alpha已经是0.0f,但是当我改变时
glClearColor(0.65f, 0.65f, 0.65f, 0.0f);
Run Code Online (Sandbox Code Playgroud)
至
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
Run Code Online (Sandbox Code Playgroud)
它使背景完全透明.
感谢大家的建议和帮助!
对我来说,它有助于使视图不透明:
view.opaque = NO
Run Code Online (Sandbox Code Playgroud)
除了glClearColor调用当然还有透明度.
0.5f的透明度将背景与另一个具有半透明度的UIImageview完美地融合在一起.
| 归档时间: |
|
| 查看次数: |
8416 次 |
| 最近记录: |