我已经尝试用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();
}
Run Code Online (Sandbox Code Playgroud)
放大时,生成的磁盘显示尖峰,而不是边缘,但指示出尖峰.
此函数也不会仅绘制一个磁盘,但总是多于一个 - 这意味着如果启用了alpha,则结果看起来不对.
dat*_*olf 12
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();
}
Run Code Online (Sandbox Code Playgroud)
这应该让你摆脱透支.关于尖峰......一张图片可以说出千言万语.
| 归档时间: |
|
| 查看次数: |
22144 次 |
| 最近记录: |