OpenGL ES 2.0 GLKit GL_LINE_SMOOTH error



我正在使用绘制glDrawArrays来绘制GL_LINE_STRIP并希望使它们平滑。 我在这里看到过几个问题,人们建议使用 glEnable(GL_LINE_SMOOTH( 和 glHint(GL_LINE_SMOOTH_HINT,GL_NICEST(,但是当我这样做时,我遇到了一个错误。 这是我的代码:

- (void)setupGL
{
    [EAGLContext setCurrentContext:self.context];
    self.effect = [[[GLKBaseEffect alloc] init] autorelease];
    self.effect.light0.enabled = GL_FALSE;
    self.effect.light1.enabled = GL_FALSE;
    self.effect.light2.enabled = GL_FALSE;
    self.effect.lightModelAmbientColor = GLKVector4Make(0.0f, 0.0f, 0.0f, 1.0f);
    glDisable(GL_DEPTH_TEST);
//    glEnable(GL_LINE_SMOOTH);
//    glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    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);
}

如果我取消注释这些行中的任何一行(或两行(,则会出现 GL 错误。 有什么想法吗?

我在 ES1.1 上下文中工作(很好!

self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];

我正在编写新代码,并试图驾驭未来的浪潮(或者至少是最近的过去(并跳到 ES2.0。在2.0宇宙中,我取得了一定的成功

view.drawableMultisample = GLKViewDrawableMultisample4X;

设置在我的GLKViewController-viewDidLoad覆盖,设置在我的GLKView上。扬子晚报.

最新更新