第讲二维基本图形及opengl最简单的框架_第1页
第讲二维基本图形及opengl最简单的框架_第2页
第讲二维基本图形及opengl最简单的框架_第3页
第讲二维基本图形及opengl最简单的框架_第4页
第讲二维基本图形及opengl最简单的框架_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

可视化仿真与虚拟现实第3章OpenGL各库的头文件、库文件和DLL文件OpenGL核心库(GL)头文件“GL.H”库文件“OPENGL32.LIB”动态链接库“OPENGL32.DLL”OpenGL实用库(GLU)头文件“GLU.H”库文件“GLU32.LIB”动态链接库“GLU32.DLL”OpenGL辅助库(GLAUX)头文件“GLAUX.H”库文件“GLAUX.LIB”动态链接库“GLAUX.DLL”OpenGL工具库(GLUT)头文件“GLUT.H”库文件“GLUT32.LIB”动态链接库“GLUT32.DLL”WGL库:OpenGL对窗口系统的扩展头文件、库文件和动态链接库都和WindowsGDI一样,由Windows底层提供,头文件是“WINGDI.H”只能在Windows平台上运行OpenGL编程环境的设置围绕着OpenGL库的.h文件、.lib文件和.dll进行注:vs2010的.h和.lib文件应分别放到C:\ProgramFiles\MicrosoftSDKs\Windows\v7.0A\目录下的include\gl和lib两个目录中。OpenGL示例程序#include<gl/glut.h>voiddisplay(){ glClear(GL_COLOR_BUFFER_BIT);//清除场景

…… glFlush();//更新场景}voidmain(intargc,char**argv){ glutInit(&argc,argv); glutCreateWindow("simple"); glutDisplayFunc(display); glutMainLoop();}程序框架,由四句glut函数构成二维场景的绘制主要内容直线与曲线的绘制第二个程序框架窗口的设置二维对象空间向图像空间的映射状态机颜色设置线型设置编程技巧函数的封装文件的封装VC工程的组织练习1.二维直线的绘制voiddisplay(){glClear(GL_COLOR_BUFFER_BIT);//清除场景 glBegin(GL_LINES);

glVertex2f(-0.5,0.5);glVertex2f(0.5,0.5);

glEnd();glFlush();//更新场景}例程a1直线绘制函数不闭合折线闭合折线glBegin(GL_xxxxxx);

glVertex2f(x1,y1);glVertex2f(x2,y2);glVertex2f(x3,y3);glVertex2f(x4,y4);glVertex2f(x5,y5);glVertex2f(x6,y6);glVertex2f(x7,y7);glEnd();多组线段坐标系例程a1曲线的绘制圆(例程a2)抛物线(例程a3)2.第二个程序框架#include<gl/glut.h>voiddisplay(){ glClear(GL_COLOR_BUFFER_BIT);//清除场景 ……

glFlush();//更新场景}voidmain(intargc,char**argv){ glutInit(&argc,argv);//1 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//2 glutInitWindowSize(400,300);//3 glutInitWindowPosition(200,100); glutCreateWindow("sample");glClearColor(0,0,0,0); gluOrtho2D(0.0,400.0,0.0,300.0);//4

glutDisplayFunc(display);//5 glutMainLoop();//6}决定了显存中对应的显示区域决定显示窗口的位置、大小和标题用黑色清空显示区域二维映射模式窗口设置显示器屏幕glutInitWindowSize(500,500);glutInitWindowPosition(20,50);20500pixels500pixels由GLUT生成的窗口sampleglutCreateWindow("sample");50pixels视区设置这里的W_L,W_R,W_B,W_TW_LW_RW_BW_TgluOrtho2D(0.0,400.0,0.0,300.0);二维对象空间向图像空间的映射4:3的视区放到1:1的窗口中,会发生什么?正常的圆与发生畸变的圆例程b1和b2心形线例程b3分形图案例程b43.OpenGL状态机OpenGL是一个状态机指的是:如果设置了某种状态(例如线宽、颜色等),在改变这种状态的函数调用之前,这种状态一直有效。3.1颜色的设置设置当前颜色属性glColor*(colorComponents)如:glColor3f(1.0,1.0,1.0);如:glColor3f(1.0,1.0,1.0,1.0);如:glcolor3i(0,255,255);任何格式指定的颜色值都要按比例转换成特定系统有效位所确定的范围中的整数为坐标系设置颜色例程c1用彩色表现的分形图案例程c23.2线型的设置设置线型:glLineStipple(GLint

factor,GLshort

pattern)设置线宽:glLineWidth(GLfloatwidth)glEnalbe(GL_LINE_STIPPLE);glLineStipple(1,0x00FF);glBegin(GL_LINES);\

glVertex2f((x1),(y1));glVertex2f((x2),(y2));glEnd()OpenGL部分状态机 GL_CURRENT_COLOR GL_EDGE_FLAG_ARRAY_POINTER GL_MODELVIEW_MATRIX GL_PROJECTION_MATRIX GL_TEXTURE_MATRIX GL_VIEWPORT GL_DEPTH_RANGE GL_MODELVIEW_STACK_DEPTH GL_PROJECTION_STACK_DEPTH GL_TEXTURE_STACK_DEPTH GL_MATRIX_MODE GL_NORMALIZE GL_CLIP_PLANE GL_FOG_COLOR GL_FOG_INDEX GL_FOG_DENSITY GL_FOG_START GL_FOG_END GL_FOG_MODE GL_FOG GL_SHADE_MODEL GL_LIGHTING GL_COLOR_MATERIAL GL_COLOR_MATERIAL_PARAMETER GL_COLOR_MATERIAL_FACE GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_EMISSION GL_SHININESS GL_LIGHT_MODEL_AMBIENT GL_LIGHT_MODEL_LOCAL_VIEWER GL_LIGHT_MODEL_TWO_SIDE GL_CURRENT_INDEX GL_CURRENT_TEXTURE_COORDS GL_CURRENT_NORMAL GL_CURRENT_RASTER_POSITION GL_CURRENT_RASTER_DISTANCE GL_CURRENT_RASTER_COLOR GL_CURRENT_RASTER_INDEX GL_CURRENT_RASTER_TEXTURE_COORDS GL_CURRENT_RASTER_POSITION_VALID GL_EDGE_FLAG GL_VERTEX_ARRAY GL_VERTEX_ARRAY_SIZE GL_VERTEX_ARRAY_TYPE GL_VERTEX_ARRAY_STRIDE GL_VERTEX_ARRAY_POINTER GL_NORMAL_ARRAY GL_NORMAL_ARRAY_TYPE GL_NORMAL_ARRAY_STRIDE GL_NORMAL_ARRAY_POINTER GL_COLOR_ARRAY GL_COLOR_ARRAY_SIZE GL_COLOR_ARRAY_TYPE GL_COLOR_ARRAY_STRIDE GL_COLOR_ARRAY_POINTER GL_INDEX_ARRAY GL_INDEX_ARRAY_TYPE GL_INDEX_ARRAY_STRIDEGL_INDEX_ARRAY_POINTER GL_TEXTURE_COORD_ARRAY GL_TEXTURE_COORD_ARRAY_SIZE GL_TEXTURE_COORD_ARRAY_TYPE GL_TEXTURE_COORD_ARRAY_STRIDE GL_TEXTURE_COORD_ARRAY_POINTER GL_EDGE_FLAG_ARRAY GL_EDGE_FLAG_ARRAY_STRIDE

4.1函数的封装例程c34.2文件的封装例程c44.3VC工程的组织格式类型格式名称存储方式作用描述.dsw文件工作区文件文本描述工程间的关联信息,本课程不涉及多工程.dsp文件项目文件文本描述工程中的文件组织情况,文本文件.c文件程序c语言实现文件文本函数代码的实现部分,面向程序员.cpp文件程序C/C++实现文件文本函数和类的实现部分,面向程序员.h文件头文件文本变量、函数和类的定义部分,面向程序员.lib文件静态链接库二进制函数和类的实现部分,面向机器。程序运行时就被放到内存中.dll文件动态链接库二进制函数和类的实现部分,面向机器。函数被调用时才放到内存中工程目录下debug目录下其它格式工程目录下:ncb文件,无编译浏览文件。通常较大,文件共享时可删除。plg文件,编译的出错和警告信息,文件共享时可删除。readme.txt工程中文件信息,程序员自行修改添加,可删除Debug目录下:exe文件,执行文件。交作业时可删除除exe、lib、dll之外

温馨提示

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

评论

0/150

提交评论