OpenGL中真实感图形的显示实现.doc_第1页
OpenGL中真实感图形的显示实现.doc_第2页
OpenGL中真实感图形的显示实现.doc_第3页
OpenGL中真实感图形的显示实现.doc_第4页
OpenGL中真实感图形的显示实现.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验名称 OpenGL 中真实感图形的显示实现 1、 实验目的学习基于OpenGL真实感图形显示的原理与实现方法。2、 实验内容利用向导生成应用程序框架,参考示例编写实现三维图形的应用程序,增加光照与材质效果实现真实感图形的显示。3、 实验步骤1.利用向导生成应用程序框架。2.添加相应的函数,绘制立方体(参照上课给的实例)。3.添加相应的函数,实现三维球体的绘制。4.增加光源,并设置光源参数与材质参数,观察显示效果。实验代码及程序运行结果截图如下:/ 2008cube.cpp : Defines the entry point for the console application./#include stdafx.h#include gl/glut.h#include math.hvoid myinit()glClearColor( 1.0, 1.0, 1.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity();glOrtho(-1.5, 1.5, -1.5, 1.5,-1.5,1.5); void draw_cube()glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0,0.0,0.0);glBegin(GL_POLYGON);glVertex3f(0.0,0.0,0.0);glVertex3f(0.0,1.0,0.0);glVertex3f(1.0,1.0,0.0);glVertex3f(1.0,0.0,0.0);glEnd();glColor3f(0.0,1.0,0.0);glBegin(GL_POLYGON);glVertex3f(0.0,0.0,0.0);glVertex3f(0.0,1.0,0.0);glVertex3f(0.0,1.0,1.0);glVertex3f(0.0,0.0,1.0);glEnd();glColor3f(0.0,0.0,1.0);glBegin(GL_POLYGON);glVertex3f(0.0,0.0,1.0);glVertex3f(0.0,1.0,1.0);glVertex3f(1.0,1.0,1.0);glVertex3f(1.0,0.0,1.0);glEnd();glColor3f(1.0,1.0,0.0);glBegin(GL_POLYGON);glVertex3f(1.0,0.0,0.0);glVertex3f(1.0,1.0,0.0);glVertex3f(1.0,1.0,1.0);glVertex3f(1.0,0.0,1.0);glEnd();glColor3f(1.0,0.0,1.0);glBegin(GL_POLYGON);glVertex3f(0.0,1.0,0.0);glVertex3f(1.0,1.0,0.0);glVertex3f(1.0,1.0,1.0);glVertex3f(0.0,1.0,1.0);glEnd();void display()glClear( GL_COLOR_BUFFER_BIT); glColor3f(1.0,0.0,0.0);gluLookAt(0.5,0.5,0.0,1.0,1.0,1.0,1.0,0.0,1.0);glutWireCube(0.5);draw_cube(); glFlush(); void main(int argc, char* argv)glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glutInitWindowSize(300,300);glutCreateWindow(立方体的绘制);glutDisplayFunc(display);myinit();glutMainLoop();/ 2008sphere.cpp : Defines the entry point for the console application./#include stdafx.h#include gl/glut.h#include math.h#define M_PI 3.1415926void draw_sphere()double c=M_PI/180.0;float phi,phir,theta,thetar,x,y,z,phir20;glColor3f(1.0,1.0,1.0);for(phi=-10.0;phi100.0;phi+=4.0)phir=c*phi;phir20=c*(phi+20);glBegin(GL_QUAD_STRIP);for(theta=-200.0;theta=200.0;theta+=1.0)thetar=c*theta;x=sin(thetar)*cos(phir);y=cos(thetar)*cos(phir);z=sin(phir);glVertex3d(x,y,z);x=sin(thetar)*cos(phir20);y=cos(thetar)*cos(phir20);z=sin(phir20);glVertex3d(x,y,z);glEnd();glBegin(GL_TRIANGLE_FAN);glVertex3d(0.0,0.0,0.0);c=M_PI/180;double c80=c*80;z=sin(c80);for(theta=-200;theta=200;theta+=1.0)thetar=c*theta;x=sin(thetar)*cos(c80);y=cos(thetar)*cos(c80);glVertex3d(x,y,z);glEnd();glBegin(GL_TRIANGLE_FAN);glVertex3d(0.0,0.0,-1.0);z=-sin(c80);for(theta=-200;theta=200;theta+=1.0)thetar=c*theta;x=sin(thetar)*cos(c80);y=cos(thetar)*cos(c80);glVertex3d(x,y,z);glEnd();void display()glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW);glLoadIdentity(); GLfloat ball_specular=1.0, 1.0, 1.0, 1.0; GLfloat ball_diffuse=1.0, 1.0, 1.0, 8.0; GLfloat ball_ambient=1.0, 1.0, 1.0, 2.0; GLfloat ball_shininess=100.0; GLfloat light_ambient=0.0, 0.0, 0.0, 1.0; GLfloat light_diffuse=1.0, 1.0, 1.0, 1.0; GLfloat light_specular=2.0, 1.0, 1.0, 0.0; GLfloat light_position=2.0, 2.0, 2.5, 2.5; glLightfv(GL_LIGHT0, GL_POSITION, light_position); glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); glMaterialfv(GL_FRONT, GL_SPECULAR, ball_specular); glMaterialfv(GL_FRONT, GL_AMBIENT, ball_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, ball_diffuse); glMaterialf(GL_FRONT, GL_SHININESS,ball_shininess); glShadeModel(GL_SMOOTH); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_DEPTH_TEST); glClearColor (0.0, 0.0, 0.0, 1.0); glColor3f (1.0, 1.0, 1.0); glEnable(GL_NORMALIZE); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); draw_sphere();glEnd(); glFlush();void init()glClearColor( 0.0, 0.0,0.0, 0.0); glColor3f(0.0,0.0,0.0); glOrtho(-5.0, 5.0, -5.0, 5.0,-5.0,5.0); void reshape(int w,int h)glViewport(0,0,w,h);glMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho(-1.5,1.5,-1.5,1.5,-1.5,1.5);int main(int argc, char* argv)glutInit(&argc,argv);glutInitDisplayMode(GLUT_SIN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论