使用OpenGL ES平滑地改变线条粗细

时间:2015-01-16 12:28:17

标签: ios graphics opengl-es opengl-es-2.0 glkit

我使用OpenGL ES绘制几行,我需要将其厚度从1 pixel平滑地更改为3 pixels,但glLineWidth不会允许在1.02.0之间设置线条粗细。 有可能吗?

这是我的代码

- (void)setupGL
{
    [EAGLContext setCurrentContext:self.context];

    self.effect = [[GLKBaseEffect alloc] init];

    glEnable(GL_DEPTH_TEST);

    glGenBuffers(1, &_vertexBuffer);
    glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(thinLines), thinLines, GL_STATIC_DRAW);

    glEnableVertexAttribArray(GLKVertexAttribPosition);
    glVertexAttribPointer(GLKVertexAttribPosition, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));

    glBindVertexArrayOES(0);
}

- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glBindVertexArrayOES(_vertexArray);

    self.effect.constantColor = GLKVector4Make(lineR, lineG, lineB, 1.0f);
    [self.effect prepareToDraw];

    glLineWidth(1 + scaleQ);
    glDrawArrays(GL_LINES, 0, thinLinesCount*2);   
}

1 个答案:

答案 0 :(得分:1)

OpenGL ES(包括3.0)不支持抗锯齿线。从文档到glLineWidth

  

实际宽度是通过将提供的宽度四舍五入到   最接近的整数。

所以不幸的是,你不能顺利地"改变线条厚度。