openGL绘制场地

来源:互联网 发布:阿里云 机房级别 编辑:程序博客网 时间:2024/04/29 04:19

简述:

这里记录一下openGL在绘制场地时候几个函数(不包括纹理bmp加载给一个GLuint的方法)


函数:

1)glBegin(GL_QUADS)

为了绘制场地,那么首先就是要用glBegin函数,后面的参数表示绘制的方式,GL_QUADS表示多组独立填充四边形

又如以下,不同参数表示不同的绘制方式

GL_POINTS 单个顶点集
GL_LINES 多组双顶点线段
GL_POLYGON 单个简单填充凸多边形
GL_TRAINGLES 多组独立填充三角形
GL_QUADS 多组独立填充四边形
GL_LINE_STRIP 不闭合折线
GL_LINE_LOOP 闭合折线
GL_TRAINGLE_STRIP 线型连续填充三角形串
GL_TRAINGLE_FAN 扇形连续填充三角形串
GL_QUAD_STRIP 连续填充四边形串


2)glEnable(GL_TEXTURE_2D);

打开纹理映射,否则纹理无法显示(具体载入纹理这里先忽略,之后再研究)


3)glColor3f(1.0f, 1.0f, 1.0f);

相同的三个参数表示R、G、B三个色彩都有


4) glTexCoord2f(GLfloat a, GLfloat b);

用于定位纹理的(a,b)坐标,例如标定一个长方形纹理就需要四个坐标

如:

glTexCoord2f(0.0f, 0.0f);glTexCoord2f(4.0f, 0.0f);glTexCoord2f(4.0f, 4.0f);glTexCoord2f(0.0f, 4.0f);

定位了纹理长方形的四个角的坐标


5)glVertex3f(GLfloat x,   GLfloat y,  GLfloat z)

在三维世界的三个坐标,在程序中x是宽度量,y是高度量,z是深度量

结合上面的纹理函数glTexCoord2f(GLfloat a, GLfloat b),这里铺设一块场地,位于xOz面上,也就是高度y为零

glTexCoord2f(0.0f, 0.0f); glVertex3f(0.0f, 0.0f, 0.0f);glTexCoord2f(4.0f, 0.0f); glVertex3f( 52.0f, 0.0f, 0.0f);glTexCoord2f(4.0f, 4.0f); glVertex3f( 52.0f, 0.0f,28.0f);glTexCoord2f(0.0f, 4.0f); glVertex3f(0.0f, 0.0f,28.0f);


6)gluLookAt(26.0f, 40.0f, -30.0f,26.0f,0.0f,14.0f,0.0f, 1.732f, 1.0f);

gluLookAt (    GLdouble eyex,     GLdouble eyey,     GLdouble eyez,     GLdouble centerx,     GLdouble centery,     GLdouble centerz,     GLdouble upx,     GLdouble upy,     GLdouble upz);
这个函数是用来设定视角的,引用百科解释

第一组eyex, eyey,eyez 相机在世界坐标的位置  

第二组centerx,centery,centerz 相机镜头对准的物体在世界坐标的位置  

第三组upx,upy,upz 相机向上的方向在世界坐标中的方向  

你把相机想象成为你自己的脑袋:  

第一组数据就是脑袋的位置   

第二组数据就是眼睛看的物体的位置  

第三组就是头顶朝向的方向(因为你可以歪着头看同一个物体)



效果图:


原创粉丝点击