#include <windows.h>
#include <gl\glut.h>
#include <math.h>static float rotAngle=0.0;
int angle;
float width = 1.0f;
float PI = 3.1415926;
void displayA(void)
{ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity(); //加载单位矩阵
glTranslatef(0.0f, 0.0f, -1.0f);
//黑色直线
glClearColor(0.0,0.0,0.0,0.0);
glColor3f(0.0f, 1.0f, 0.0f);
//禁用反走样
glDisable(GL_BLEND);
glDisable(GL_LINE_SMOOTH);
for(angle=0; angle<180; angle+=10)
{
//设置直线宽度
glLineWidth(width);
//绘制直线
glBegin(GL_LINES);
glVertex2f(5*cos(angle*PI/180), 5*sin(angle*PI/180));
glVertex2f(10*cos(angle*PI/180), 10*sin(angle*PI/180));
glEnd();
//直线宽度增加0.5
width+=0.5;
} //启用反走样
glEnable(GL_BLEND);
glEnable(GL_LINE_SMOOTH); //初始化直线宽度
width=1.0; //绘制的直线将在下半区域
glRotatef(180, 0.0, 0.0, 1.0);
for(angle=0; angle<180; angle+=10)
{
//设置直线宽度
glLineWidth(width);
glBegin(GL_LINES);
glVertex2f(5*cos(angle*PI/180), 5*sin(angle*PI/180));
glVertex2f(10*cos(angle*PI/180), 10*sin(angle*PI/180));
glEnd();
//宽度累加
width+=1.0;
}
SwapBuffers(wglGetCurrentDC());//交换前后缓冲区}
void reshape(int w,int h)
{
glViewport(0,0,(GLint)w,(GLint)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
gluOrtho2D(-1.0,1.0,-1.0*(GLfloat)h/(GLfloat)w,1.0*(GLfloat)h/(GLfloat)w);
else
gluOrtho2D(-1.0*(GLfloat)w/(GLfloat)h,1.0*(GLfloat)w/(GLfloat)h,-1.0,1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(400,400);
glutCreateWindow("反走样直线");
glutReshapeFunc(reshape);
glutDisplayFunc(displayA);
glutMainLoop();
return 0;
}
#include <gl\glut.h>
#include <math.h>static float rotAngle=0.0;
int angle;
float width = 1.0f;
float PI = 3.1415926;
void displayA(void)
{ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity(); //加载单位矩阵
glTranslatef(0.0f, 0.0f, -1.0f);
//黑色直线
glClearColor(0.0,0.0,0.0,0.0);
glColor3f(0.0f, 1.0f, 0.0f);
//禁用反走样
glDisable(GL_BLEND);
glDisable(GL_LINE_SMOOTH);
for(angle=0; angle<180; angle+=10)
{
//设置直线宽度
glLineWidth(width);
//绘制直线
glBegin(GL_LINES);
glVertex2f(5*cos(angle*PI/180), 5*sin(angle*PI/180));
glVertex2f(10*cos(angle*PI/180), 10*sin(angle*PI/180));
glEnd();
//直线宽度增加0.5
width+=0.5;
} //启用反走样
glEnable(GL_BLEND);
glEnable(GL_LINE_SMOOTH); //初始化直线宽度
width=1.0; //绘制的直线将在下半区域
glRotatef(180, 0.0, 0.0, 1.0);
for(angle=0; angle<180; angle+=10)
{
//设置直线宽度
glLineWidth(width);
glBegin(GL_LINES);
glVertex2f(5*cos(angle*PI/180), 5*sin(angle*PI/180));
glVertex2f(10*cos(angle*PI/180), 10*sin(angle*PI/180));
glEnd();
//宽度累加
width+=1.0;
}
SwapBuffers(wglGetCurrentDC());//交换前后缓冲区}
void reshape(int w,int h)
{
glViewport(0,0,(GLint)w,(GLint)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
gluOrtho2D(-1.0,1.0,-1.0*(GLfloat)h/(GLfloat)w,1.0*(GLfloat)h/(GLfloat)w);
else
gluOrtho2D(-1.0*(GLfloat)w/(GLfloat)h,1.0*(GLfloat)w/(GLfloat)h,-1.0,1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(400,400);
glutCreateWindow("反走样直线");
glutReshapeFunc(reshape);
glutDisplayFunc(displayA);
glutMainLoop();
return 0;
}
glFlush();
SwapBuffers(wglGetCurrentDC());//交换前后缓冲区 还有就是所有的glVertex2f得地方,你的里面的计算的值超出了你屏幕显示的范围,把里面的值都除以10就可以了