小编prp*_*aze的帖子

具有透明背景的OpenGL ES 2.0 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); …
Run Code Online (Sandbox Code Playgroud)

iphone opengl-es ios glkit

13
推荐指数
2
解决办法
8416
查看次数

OpenGL ES 2.0 GLKit画一条线

我试图用OpenGL ES 2.0 GLKit绘制一条线.当我运行以下代码并使用OpenGL ES Analyzer时,我收到以下错误:

"使用不存在的程序"glDrawArrays(GL_LINE_STRIP,0,4)

"GL错误:无效操作"GL_INVALID_OPERATION < - glVertexPointer(2,GL_FLOAT,0,NULL)GL_INVALID_OPERATION < - glEnableClientState(GL_VERTEX_ARRAY)

这是我的代码:

#import "GLDrawingView.h"


const float data[] = {0.0f, 1.0f, 0.0f, 0.0f, 1.0f, -0.0f, 0.0f, 1.0f};



@interface GLDrawingView () {
    GLuint lineVBO;
}

@end

@implementation GLDrawingView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [EAGLContext setCurrentContext:self.context];           
        glGenBuffers(1, &lineVBO);
        glBindBuffer(GL_ARRAY_BUFFER, lineVBO);
        glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
    }
    return self;
}

- (void)drawRect:(CGRect)rect
{
    glVertexPointer(2, GL_FLOAT, 0, NULL);   
    glEnableClientState(GL_VERTEX_ARRAY);
    glDrawArrays(GL_LINE_STRIP, 0, sizeof(data) / sizeof(float) / 2);
}

@end
Run Code Online (Sandbox Code Playgroud)

vertex-buffer ios opengl-es-2.0 glkit

1
推荐指数
1
解决办法
2556
查看次数

标签 统计

glkit ×2

ios ×2

iphone ×1

opengl-es ×1

opengl-es-2.0 ×1

vertex-buffer ×1