gpt4 book ai didi

opengl - 在 OpenGL 中绘制 2D 形状的轮廓,同时更改线条粗细

转载 作者:行者123 更新时间:2023-12-02 06:32:30 24 4
gpt4 key购买 nike

所以我正在尝试(我认为很简单)使用 OpenGL 绘制许多 2D 形状的轮廓。这一切似乎都有效,直到我尝试使用 glLineWidth(w); 更改轮廓的线条粗细我的第一个问题是 w = 10 或 w = 3000 (或任何更大的数字)显示相同线条粗细,但像 w=3 这样较小的值会产生更细的线条。

我认为这与它有关。我的Max好像是7,我可以增加它还是什么?我只想画一条粗线!!

float lineWidth[2];
glGetFloatv(GL_LINE_WIDTH_RANGE, lineWidth);
std::cout<<"min: "<< lineWidth[0]<<" max: "<<lineWidth[1]<<"------\n";

我的第二个问题是,我的线条相交的点似乎没有对齐或其他什么东西,这使得我的所有形状(矩形、圆形、三角形)看起来都缺少一点点。这是这里提到的行为 Draw percentage of circle outline但我似乎无法根据帖子所说的内容修复它。

这是我用来绘制矩形的代码:

glLineWidth(20);
glBegin(GL_LINE_LOOP);
glVertex2f(x1, y1);//1
glVertex2f(a1, a2);//2
glVertex2f(x2, y2);//3
glVertex2f(b1, b2);//4
glEnd();

从上面提到的帖子中,这是我用于圆圈的代码:

glEnable(GL_LINE_SMOOTH);
glLineWidth(10);
glBegin(GL_LINE_STRIP);
for (int i=0; i < (360/10*100/10); i++) {
float degInRad = i*DEG2RAD;
glVertex2f(x1+cos(degInRad)*r,y1+sin(degInRad)*r); }
glEnd();

“丢失的位”看起来像这样:

enter image description here

我也看过这篇文章How to render perfect wireframed rectangle in 2D mode with OpenGL?但遵循那里的线索并没有真正的帮助。

最佳答案

My first issue is that w = 10 or w = 3000 (or any larger number) shows the same line thickness, but something smaller like w=3 produces a thinner line.

通过 glGet()GL_LINE_WIDTH_RANGE 检查您的 OpenGL 实现实际支持的内容。如果它达到 10.0 的顶峰,我不会感到惊讶。

I just want to draw a think line!!

对于大线宽,您必须 do that yourself使用三角形/四边形。

The "bits missing" looks something like this:

OpenGL 没有指定宽度为 > 1.0GL_LINES 应该如何连接/结束。 It's up to the implementation .

关于opengl - 在 OpenGL 中绘制 2D 形状的轮廓,同时更改线条粗细,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16474613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com