好文档 - 专业文书写作范文服务资料分享网站

计算机图形学实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

反走样及五环的绘制 实验三 实验三 反走样及五环的绘制

一、【实验目的】

1.了解走样和反走样的内容,熟练掌握用opengl实现图形的反走样。 2.学会用反走样消除走样现象。 3.学会五环的绘制方法。

二、【实验内容】

1.通过学习反走样相关课程,用opengl实现光栅图形的反走样。 2.绘制五环。

三、【测试数据及其结果】

反走样及五环的绘制 实验三

四、【实验源代码】

反走样:

#include

#pragma comment(linker,\GLuint lineList; //指定显示列表 void Initial() { glClearColor(1.0f,1.0f,1.0f,0.0f); glLineWidth(12.0f); glColor4f(0.0,0.6,1.0,1.0); lineList=glGenLists(1); //获得一个显示列表标识 glNewList(lineList,GL_COMPILE); //定义显示列表 glBegin(GL_LINE_LOOP); glVertex2f(1.0f,1.0f); glVertex2f(4.0f,2.0f); glVertex2f(2.0f,5.0f); glEnd(); glEndList(); }

void ChangeSize(GLsizei w,GLsizei h)

反走样及五环的绘制 { if(h==0) h=1; glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); //指定设置投影参数 glLoadIdentity(); if(w<=h) gluOrtho2D(0.0,5.0,0.0,6.0*(GLfloat)h/(GLfloat)w); else gluOrtho2D(0.0,5.0*(GLfloat)w/(GLfloat)h,0.0,6.0); glMatrixMode(GL_MODELVIEW); //指定设置模型视图变换参数 glLoadIdentity(); }

void Displayt(void) { glClear(GL_COLOR_BUFFER_BIT); glCallList(lineList); //调用显示列表 glFlush(); }

void Displayw(void){ glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_LINE_SMOOTH); //使用反走样 glEnable(GL_BLEND); //启用混合函数 glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); //指定混合函数 glCallList(lineList); //调用显示列表 glFlush(); }

void main(void) { glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowSize(300,300); glutCreateWindow(\原始图形\ glutDisplayFunc(Displayt); glutReshapeFunc(ChangeSize); Initial(); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowPosition(300,300); glutInitWindowSize(300,300); glutCreateWindow(\反走样图形\ glutDisplayFunc(Displayw); glutReshapeFunc(ChangeSize); Initial(); glutMainLoop(); }

实验三 五环:

#include #include

#pragma comment(linker,\

const float PI=3.1415;

void DrawCircle(GLfloat radius) {

反走样及五环的绘制 GLfloat x,y,z; glBegin(GL_LINE_LOOP); for (int alpha=0;alpha<360;alpha++) { x=radius*cos(alpha*PI/180); y=radius*sin(alpha*PI/180); z=0; glVertex3f(x,y,z); } glEnd(); }

void Display() { glClearColor(1,1,1,1); glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); glTranslatef(0,0,-25); glColor3f(0,1,0); glLineWidth(3); DrawCircle(3.0); glPopMatrix(); glPushMatrix(); glTranslatef(7,0,0); glColor3f(1,0,0); DrawCircle(3.0); glPopMatrix(); glPushMatrix(); glTranslatef(-7,0,0); glColor3f(0,0,1); DrawCircle(3.0); glPopMatrix(); glPushMatrix(); glTranslatef(-3.5,-3.5,0); glColor3f(0.3,0.5,0.7); DrawCircle(3.0); glPopMatrix(); glPushMatrix(); glTranslatef(3.5,-3.5,0); glColor3f(0.7,0.0,0.3); DrawCircle(3.0); glPopMatrix(); glutSwapBuffers(); }

void reshape(int w,int h) { glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45,GLdouble(w)/h,1,100); glMatrixMode(GL_MODELVIEW); }

void main(int argc,char **argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE); glutInitWindowPosition(10,10);

实验三 反走样及五环的绘制 }

glutInitWindowSize(500,500); glutCreateWindow(\glutDisplayFunc(Display); glutReshapeFunc(reshape); glutMainLoop();

实验三

计算机图形学实验报告

反走样及五环的绘制实验三实验三反走样及五环的绘制一、【实验目的】1.了解走样和反走样的内容,熟练掌握用opengl实现图形的反走样。2.学会用反走样消除走样现象。3.学会五环的绘制方法。二、【实验内容】1.通过学习反走样相关课程,用opengl实现光栅图形的反走样。2.绘制五环。三、【测试数据及
推荐度:
点击下载文档文档为doc格式
30xid2saoe38gut0xsx29kcek7hlwh013zo
领取福利

微信扫码领取福利

微信扫码分享