3

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 ERROR が発生します。何かご意見は?

4

1 に答える 1

0

私はそれをES1.1コンテキストで(うまく!)動作させました。

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

私は新しいコードを書き、未来の波 (または少なくとも最近の過去) に乗って ES2.0 に飛び込もうとしています。2.0の世界では、私は中程度の成功を収めました

view.drawableMultisample = GLKViewDrawableMultisample4X;

myGLKViewController-viewDidLoadオーバーライドに設定し、 my に設定しますGLKView。YMMV。

于 2013-07-20T02:51:28.837 に答える