计算机图形学课程设计(5)

2020-02-20 20:59

计算机图形学课程设计报告

glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); //打开环境光 glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); //打开漫反射光 glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); //镜面反射光

glShadeModel(GL_SMOOTH); //明使用哪种着色技术,可以取值GL_FLAT和GL_SMOOTH。默认取值是GL_SMOOTH。

glEnable(GL_LIGHTING); //启用灯源

glEnable(GL_LIGHT0); //启用光源,必须启用,否则光照模型无效

glClearColor(1.0, 1.0,1.0,1.0); //glClear利用glClearColor函数设置好的当前清除颜色设置窗口颜色 glMatrixMode (GL_PROJECTION); glLoadIdentity ();

glOrtho(-10.0, 10.0, -10.0, 10.0, -10.0, 10.0);

glMatrixMode (GL_MODELVIEW); glLoadIdentity ();

glMatrixMode (GL_MODELVIEW); glGetFloatv(GL_MODELVIEW_MATRIX, M); glMatrixMode (GL_MODELVIEW); }

int main(intargc, char** argv) {

intbody_menu,wheel_menu,main_menu;

//cout<<\操作规则:(上下左右键控制汽车运动方向,a/k控制加速减速)\ glutInit(&argc,argv); glEnable(GL_TEXTURE_2D);

glEnable(GL_DEPTH_TEST); //启用深度测试。

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH); glutInitWindowSize(500,500); glutInitWindowPosition(150,150); glutCreateWindow(\); init();

glColorMaterial(GL_FRONT,GL_DIFFUSE); glEnable(GL_COLOR_MATERIAL); glutSpecialFunc(specialKeyBoard); glutReshapeFunc(myReshape); glutDisplayFunc(mydisplay);

body_menu=glutCreateMenu(color_car_body_menu); glutAddMenuEntry(\,1); glutAddMenuEntry(\,2); glutAddMenuEntry(\,3);

计算机图形学课程设计报告

glutAddMenuEntry(\,4); glutAddMenuEntry(\,5);

wheel_menu=glutCreateMenu(color_car_wheel_menu); glutAddMenuEntry(\,1); glutAddMenuEntry(\,2); glutAddMenuEntry(\,3); glutAddMenuEntry(\,4); glutAddMenuEntry(\,5);

main_menu=glutCreateMenu(menu);

glutAddSubMenu(\,body_menu); glutAddSubMenu(\,wheel_menu);

glutAttachMenu(GLUT_RIGHT_BUTTON); }

glutMainLoop();//程序运行函数,glutMainLoop()。 return 0;

glutAddMenuEntry(\,3);

2. 帆船模型

#include #include #include #include #include #include

#pragmacomment(lib, \) #pragmacomment(lib, \) #pragmacomment(lib, \)

staticint shoulder1 = 0; staticint shoulder2 = 0; staticint hand=0; staticint turn1=0; staticint tag=0;

staticint turn=0 ; //转弯 staticfloat forward=0;//前进

计算机图形学课程设计报告

staticfloat elbow = 0 ,z=0; int w; int h;

int font=(int)GLUT_BITMAP_8_BY_13; char s[30];

intframe,timeOwn,timebase=0;

staticGLfloatxRot = 0.0f; staticGLfloatyRot = 0.0f; //是否停止转动

boolIsStop = false; //光照使用光源

GLfloatlightPos[] = { 1.0f, 0.0f, -1.0f, 0.0f };

GLfloat specular[] = { 1.0f, 1.0f, 1.0f, -1.0f};//反射光 GLfloatspecref[] = { 1.0f, 1.0f, 1.0f, 1.0f };//

GLfloatambientLight[] = { 0.5f, 0.5f, 0.5f, 1.0f};//环绕光 GLfloatspotDir[] = { 0.0f, 0.0f, -1.0f }; GLbooleanbEdgeFlag = true;

GLfloatfogcolor[]={0.5f,0.7f,0.5f,1.0f};

voidshowText(void);

voidresetPerspectiveProjection() ; voidsetOrthographicProjection() ; void Something();

voidrenderBitmapString(float x, float y, void *font,char *string); //设置背景

voidSetupRC(void) {

glEnable(GL_CULL_FACE); glEnable(GL_LIGHTING);

glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight); glLightfv(GL_LIGHT0,GL_DIFFUSE,ambientLight); glLightfv(GL_LIGHT0,GL_SPECULAR,specular); glLightfv(GL_LIGHT0,GL_POSITION,lightPos);

glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,30.0f); glLightf(GL_LIGHT0,GL_SPOT_EXPONENT,20.0f); glEnable(GL_LIGHT0);

glEnable(GL_COLOR_MATERIAL);

glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);

glMaterialfv(GL_FRONT, GL_SPECULAR,specref); glMateriali(GL_FRONT, GL_SHININESS,8);

计算机图形学课程设计报告

glClearColor(1.0f, 1.0f, 1.0f, 1.0f ); }

GLuint texture[2]; // 存储一个纹理 AUX_RGBImageRec *LoadBMP(CHAR *Filename) // 载入位图图象 {

FILE *File=NULL; // 文件句柄

if (!Filename) // 确保文件名已提供 {

returnNULL; // 如果没提供,返回 NULL }

File=fopen(Filename,\); // 尝试打开文件 if (File) // 文件存在么? {

fclose(File); // 关闭句柄

returnauxDIBImageLoadA(Filename); // 载入位图并返回指针 }

returnNULL; // 如果载入失败,返回 NULL }

intLoadGLTextures() // 载入位图(调用上面的代码)并转换成纹理 {

int Status=FALSE; // 状态指示器 AUX_RGBImageRec *TextureImage[2]; // 创建纹理的存储空间 memset(TextureImage,0,sizeof(void *)*1); // 将指针设为 NULL // 载入位图,检查有无错误,如果位图没找到则退出 if

((TextureImage[0]=LoadBMP(\))&&(TextureImage[1]=LoadBMP(\\))) {

Status=TRUE; // 将 Status 设为 TRUE glGenTextures(2, &texture[0]); // 创建纹理

for(int loop=0;loop<2;loop++) {

glBindTexture(GL_TEXTURE_2D,texture[loop]);//绑定纹理

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);//设置滤波glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[loop]->sizeX,

模式

TextureImage[loop]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[loop]->data);//生成纹理

}

计算机图形学课程设计报告

} }

voidDrawCube(void) // 从这里开始进行所有的绘制 {

glLoadIdentity(); // 重置当前的模型观察矩阵 glRotatef(xRot,1.0f,0.0f,0.0f); // 绕X轴旋转 glRotatef(yRot,0.0f,1.0f,0.0f); // 绕Y轴旋转 glTranslatef(0.0f,0.0f,-10.0f); // 移入屏幕 5 个单位 glColor3f(1.0,1.0,0.0); glPushMatrix();

glTranslatef (forward,0.0,z);

glRotatef ((GLfloat) turn, 0.0, 1.0, 0.0);

glBindTexture(GL_TEXTURE_2D, texture[0]); // 选择纹理 glBegin(GL_QUADS); // 右面

glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.0f, 1.5f, 0.0f); // 纹理和四边形的右下 glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.0f, 2.5f, 0.0f); // 纹理和四边形的右上 glTexCoord2f(0.0f, 1.0f); glVertex3f( 0.0f, 2.5f, 1.0f); // 纹理和四边形的左上 glTexCoord2f(0.0f, 0.0f); glVertex3f( 0.0f, 1.5f, 1.0f); // 纹理和四边形的左下

glEnd();

glBindTexture(GL_TEXTURE_2D, texture[1]); // 选择纹理 glBegin(GL_QUADS); // 左面

glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.0f, 1.5f, 0.0f); // 纹理和四边形的左下 glTexCoord2f(1.0f, 0.0f); glVertex3f(-0.0f, 1.5f, 1.0f); // 纹理和四边形的右下 glTexCoord2f(1.0f, 1.0f); glVertex3f(-0.0f, 2.5f, 1.0f); // 纹理和四边形的右上

for (int loop=0; loop<2; loop++) { }

if (TextureImage[loop]!=NULL) { }

if (TextureImage[loop]->data!=NULL) { }

free(TextureImage[loop]);

free(TextureImage[loop]->data);

return Status; // 返回 Status


计算机图形学课程设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:全新版大学英语(第二版)综合教程2课文及翻译

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: