700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > OPenGL笔记--创建三维图形(立方体)

OPenGL笔记--创建三维图形(立方体)

时间:2024-05-27 06:16:20

相关推荐

OPenGL笔记--创建三维图形(立方体)

文章目录

一、前置知识二、运行效果三、具体代码

一、前置知识

通过之前的学习,我们已经知道了如何创建多边形,立方体实际就是多边形围起来的三维图形,例如:

椎体是4个三角形围起来的三维图形;正方体是6个正方形围起来的三维图形;

注意事项:

要让您的对象绕自身的轴旋转,您必须让对象的中心坐标总是( 0.0, 0,0, 0,0 );在绘制时多边形时,要么都逆时针,要么都顺时针,但永远不要将两种次序混在一起;在绘制三角形时,开始-结束中有多余的点,OPenGL会理解为要绘制新的三角形,不会绘制成多边形;

二、运行效果

三、具体代码

完整代码可参考:OPenGL笔记–创建一个OPenGL窗口

void GL_Test::paintGL(){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清除屏幕和深度缓存//-----------------------------------------glLoadIdentity(); //重置当前的模型观察矩阵glTranslatef(-1.5, 0.0, -6.0);glRotatef(rTri, 0.0, 1.0, 0.0); //绕Y轴旋转rTri度//开始绘制三角形glBegin(GL_TRIANGLES);//前侧面glColor3f(1.0, 0.0, 0.0);glVertex3f(0.0, 1.0, 0.0);//上顶点glColor3f(0.0, 1.0, 0.0);glVertex3f(-1.0, -1.0, 1.0); //左下顶点glColor3f(0.0, 0.0, 1.0);glVertex3f(1.0, -1.0, 1.0);//右下顶点//右侧面glColor3f(1.0, 0.0, 0.0);glVertex3f(0.0, 1.0, 0.0);//上顶点glColor3f(0.0, 0.0, 1.0);glVertex3f(1.0, -1.0, 1.0);//左下顶点glColor3f(0.0, 1.0, 0.0);glVertex3f(1.0, -1.0, -1.0); //右下顶点//后侧面glColor3f(1.0, 0.0, 0.0);glVertex3f(0.0, 1.0, 0.0);//上顶点glColor3f(0.0, 1.0, 0.0);glVertex3f(1.0, -1.0, -1.0); //左下顶点glColor3f(0.0, 0.0, 1.0);glVertex3f(-1.0, -1.0, -1.0); //右下顶点//左侧面glColor3f(1.0, 0.0, 0.0);glVertex3f(0.0, 1.0, 0.0);//上顶点glColor3f(0.0, 0.0, 1.0);glVertex3f(-1.0, -1.0, -1.0); //左下顶点glColor3f(0.0, 1.0, 0.0);glVertex3f(-1.0, -1.0, 1.0); //右下顶点glEnd();//绘制三角形结束//-----------------------------------------glLoadIdentity(); //重置当前的模型观察矩阵glTranslatef(-1.5, 0.0, -7.0);//越远的对象看起来越小glRotatef(rQuad, 1.0, 1.0, 0.0); //绕X轴旋转rQuad度//开始绘制正方形glTranslatef(3.0, 0.0, 0.0);glBegin(GL_QUADS);//顶面glColor3f(0.0, 1.0, 0.0);glVertex3f(1.0, 1.0, -1.0);//右上顶点glVertex3f(-1.0, 1.0, -1.0); //左上顶点glVertex3f(-1.0, 1.0, 1.0);//左下顶点glVertex3f(1.0, 1.0, 1.0);//右下顶点//底面glColor3f(1.0, 0.5, 0.0);glVertex3f(1.0, -1.0, 1.0);//右上顶点glVertex3f(-1.0, -1.0, 1.0); //左上顶点glVertex3f(-1.0, -1.0, -1.0); //左下顶点glVertex3f(1.0, -1.0, -1.0); //右下顶点//前面glColor3f(1.0, 0.0, 0.0);glVertex3f(1.0, 1.0, 1.0);//右上顶点glVertex3f(-1.0, 1.0, 1.0);//左上顶点glVertex3f(-1.0, -1.0, 1.0); //左下顶点glVertex3f(1.0, -1.0, 1.0);//右下顶点//后面glColor3f(1.0, 1.0, 0.0);glVertex3f(1.0, -1.0, -1.0); //右上顶点glVertex3f(-1.0, -1.0, -1.0); //左上顶点glVertex3f(-1.0, 1.0, -1.0); //左下顶点glVertex3f(1.0, 1.0, -1.0);//右下顶点//左侧面glColor3f(0.0, 0.0, 1.0);glVertex3f(-1.0, 1.0, 1.0);//右上顶点glVertex3f(-1.0, 1.0, -1.0); //左上顶点glVertex3f(-1.0, -1.0, -1.0); //左下顶点glVertex3f(-1.0, -1.0, 1.0);//右下顶点//右侧面glColor3f(1.0, 0.0, 1.0);glVertex3f(1.0, 1.0, -1.0);//右上顶点glVertex3f(1.0, 1.0, 1.0);//左上顶点glVertex3f(1.0, -1.0, 1.0);//左下顶点glVertex3f(1.0, -1.0, -1.0); //右下顶点glEnd();//绘制正方形结束//-----------------------------------------rTri += 5;rQuad += 5;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。