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;
}
OPenGL笔记--创建三维图形(立方体)相关推荐
- OPenGL笔记--创建一个3D场景
文章目录 一.前言 二.效果展示 三.详细流程 3.1.World.txt文件规则 3.2.加载World.txt 3.3.绘制场景 3.4.交互 四.详细代码 五.举一反三 一.前言 通过前面的学习 ...
- 【我的安卓进阶之旅】Opengl Es(5)三维图形绘制圆锥、圆柱和球体(附Github地址)
之前的博客中,我们绘制了三角形.正方形.圆形.立方体,今天我们将绘制圆锥.圆柱和球体.能够绘制这些基本的常规几何形体后,其他的常见几何形体的绘制对于我们来说就基本没问题了. 绘制圆锥 由之前的博客,我 ...
- Origin如何绘制三维图形?
文章目录 0.引言 1.使用矩阵簿窗口 2.三维数据转换 3.三维绘图 4.三维曲面图 5.三维XYY图 6.三维符号.条状.矢量图 7.等高线图 0.引言 因科研等多场景需要,绘制专业的图表,笔 ...
- Android开发笔记(一百五十三)OpenGL绘制三维图形的流程
从这篇文章开始,接下来会连载一系列的OpenGL相关博文,好好探讨如何在Android中进行OpenGL开发. OpenGL的全称是"Open Graphics Library", ...
- c++ opengl 三维图形中显示文字_3D图形 和 OpenGL 简介
一.走向3D 三维(3D)表示一个正在描述或显示的物体具有3个维度:宽度.高度和深度.例如,放在书桌上的一张画是一个二维物体,因为它没有可以令人感受得到的深度.而旁边的药瓶却能感受到它是3D,因为它具 ...
- OpenGL三维图形编程技术(转)
人们对三维图形技术的研究已经经历了一个很长的历程,而且涌现了许多三维图形开发工具,其中SGI公司推出的GL(Graphics Library)三维图形库表现尤为突出,它易于使用且功能强大.随着计算机技 ...
- 计算机图形学 学习笔记(八):三维图形变换:三维几何变换,投影变换(平行/ 透视 投影)
接上文 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等 通过三维图形变换,可由简单图形得到复杂图形,三维图形变化则分为三维几何变换和投影变换. 6.1 三维图形几何变换 三维 ...
- android绘制过程3d图形,Android开发之OpenGL绘制三维图形的流程
从这篇文章开始,接下来会连载一系列的OpenGL相关博文,好好探讨如何在Android中进行OpenGL开发. OpenGL的全称是"Open Graphics Library", ...
- OpenGL三维图形编程技术【转】
一.OpenGL 的发展历史 人们对三维图形技术的研究已经经历了一个很长的历程,而且涌现了许多三维图形开发工具,其中SGI公司推出的GL(Graphics Library)三维图形库表现尤为突出,它易 ...
最新文章
- Linux开机详细流程
- 浅谈HTTP事务的一个过程
- php 清空一个数组_php如何删除一个数组
- 由遍历集合所联想到的一些问题
- java打包带有外部jar,Eclipse使用总结——使用Eclipse打包带源码的jar包
- 一学就会之ado.net(一)
- 马哥教育20-2期27号学员的7.27上课笔记
- 【转】 Pro Android学习笔记(八一):服务(6):复杂数据Parcel
- 一文学会哈希法解题,助你事半功倍(leetcode哈希表面试高频题目总结)
- windows php redis扩展安装,怎么在Windows下安装PHP的Redis扩展服务
- 中断触发后无法进入服务程序_51单片机的中断系统及应用
- win10千万不要重置_小白不要再用“一键重装系统”了,后果很严重!
- erstudio连接mysql_ERStudio的使用
- 对12w条数据进行相关清理和数据迁移 (数据清理项目实战完整版)文章内有大量sql脚本
- PHP为什么是最好的编程语言?
- 创灵原始与鸿蒙,上古启示录
- 短暂的人生、脆弱的生命
- golang实现人民币小写转大写
- MYSQL 分组查询取最新时间的数据
- python离线安装第三方库whl_详细说明如何在pycharm不联网的情况下,离线安装第三方库及依赖包(如sklearn)...