【发布时间】:2017-12-20 02:48:12
【问题描述】:
我正在开发一个应用程序,该应用程序使用 OpenGL for Mac 中的颜色深度进行选择。选择效果很好,但我观察到 OpenGL 没有画出完美的圆(circunferences)。我使用 GL_LINE_LOOP 来渲染 360 段以完成一个紧密的循环。但是,如果我在 SELECTION 模式下看到渲染,我会在圆周上观察到某种咬痕(白色三角形),每个圆圈总共有 4 个咬痕。
是 OpenGL 问题还是我做错了什么?
这是绘制每个圆的代码。
glLineWidth(10.0f); // Exaggerated for image.
glBegin(GL_LINE_LOOP);
for (int i = 0; i <= 360; i++) {
calcX = radio * cos((i * M_PI) / 180) + offset_x;
calcY = radio * sin((i * M_PI) / 180) + offset_y;
glVertex3f(calcX, calcY, offset_z);
}
glEnd();
【问题讨论】:
-
看起来线条的末端几乎是这样倾斜的......
-
图形硬件可以(并且确实)在渲染线条的方式上有所不同,尤其是宽线条。根据您的硬件,它可能会通过移动线的坐标来渲染多条一像素宽的线来绘制宽线。您展示的最佳方法可能是呈现椭圆形状的三角形条带,使其宽度与您所需的线宽相匹配。它也可能比宽线渲染得更快(现代硬件更喜欢渲染三角形)。
标签: objective-c macos opengl