gpt4 book ai didi

C++:在 OpenGL 中绘制 2D 磁盘

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:06 26 4
gpt4 key购买 nike

几天来,我一直在尝试使用 OpenGL 编写一个适当的函数来在屏幕上绘制一个 2D 磁盘,但我似乎无法正确完成:(

这是我当前的代码:

void Disk( Float x, Float y, Float r, const Color& vColor )
{
glBegin( GL_TRIANGLE_FAN );
glVertex2f( x, y );
for( Float i = 0; i <= 2 * PI + 0.1; i += 0.1 )
{
glVertex2f( x + sin( i ) * r, y + cos( i ) * r );
}
glEnd();
}

放大时,生成的圆盘显示尖峰,不是像边缘那样,而是真正指向外面的尖峰。

此外,该函数并不只绘制一个圆盘,而是总是多于一个 - 这意味着如果启用了 alpha,结果看起来是错误的。

  • 我需要在函数中更改什么才能正确绘制圆盘?

最佳答案

void circle(float x, float y, float r, int segments)
{
glBegin( GL_TRIANGLE_FAN );
glVertex2f(x, y);
for( int n = 0; n <= segments; ++n ) {
float const t = 2 * M_PI * (float)n / (float)segments;
glVertex2f(x + sin(t) * r, y + cos(t) * r);
}
glEnd();
}

这应该可以让您摆脱 overdraw 。关于尖峰……一张图片可以说一千个单词。

关于C++:在 OpenGL 中绘制 2D 磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5094992/

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