使用 OpenGL ES 平滑更改线条粗细



我正在使用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);   
}

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

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

所以很遗憾,你不能"顺利"地改变线条粗细。

相关内容

  • 没有找到相关文章

最新更新