簡體   English   中英

OpenGL ES 2.0 GLKit GL_LINE_SMOOTH錯誤

[英]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上設置。 因人而異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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