• 概要
  • 效果图
  • 主要代码
  • 代码解析

概要

前面几篇博客,已经从基本的绘图, 上色到旋转都已经讲完了, 但它们都只是限于平面图形,而对于立体图形并没有讲到。 本篇主要来讲opengl绘制立体图形。 我们在小学就知道, 线是由点构成, 点构成面, 面构成立体图形。 所以,立体图形的绘制,就是绘制多个有对应关系的平面。 而平面的绘制,就是由多个点的坐标组成。前面几篇博客已经讲过了。


效果图


主要代码

void OpenglWidget::paintGL()
{glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glLoadIdentity();glTranslatef( -1.5,  0.0, -6.0 );glRotatef( m_rotateRectangle,  0.0,  1.0,  0.0 );glBegin( GL_QUADS );glColor3f(1, 0, 0);glVertex3f(-1,1,1);glVertex3f(-1,1,-1);glVertex3f(-1,-1,-1);glVertex3f(-1,-1,1);glColor3f(0, 0, 1);glVertex3f(-1,1,-1);glVertex3f(-1,-1,-1);glVertex3f(1,-1,-1);glVertex3f(1,1,-1);glColor3f(0, 1, 0);glVertex3f(1,1,-1);glVertex3f(1,-1,-1);glVertex3f(1,-1,1);glVertex3f(1,1,1);glColor3f(0, 0, 1);glVertex3f(1,-1,1);glVertex3f(1,1,1);glVertex3f(-1,1,1);glVertex3f(-1,-1,1);glColor3f(0, 1, 0);glVertex3f(-1,1,1);glVertex3f(1,1,1);glVertex3f(1,1,-1);glVertex3f(-1,1,-1);glColor3f(0, 0, 1);glVertex3f(-1,-1,1);glVertex3f(-1,-1,-1);glVertex3f(1,-1,-1);glVertex3f(1,-1,1);glEnd();glLoadIdentity();glTranslatef(  1.5,  0.0, -6.0 );glRotatef( m_rotateTriangle,  0.0,  1.0,  0.0 );glBegin( GL_TRIANGLES );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, 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, 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 );glEnd();m_rotateRectangle += 20;m_rotateTriangle += 20;
}

代码解析

在本实例中, 主要绘制了三棱柱和立方体。 总结的方法主要有:

1.在绘制立体图形时,在我们的思维空间里, 应该把这种规则的立体图形的中心为原点。以横向为X轴, 左为负,右为正, 以纵向为Y 轴, 上为正,下为负, 以我们面对的目光直射方面为Z轴, 胸前方向为正, 背后方向为负。 这样就容易形成一个容易理解的立体空间。

2.当我们以规则立体图形的中心为坐标原点时, 每个立体图形的各个顶点的x,y,z坐标,此时都不为0

3.对于有些面为三角形的立体图形,在绘制三角形面时, 点的顺序,和面的顺序不限定方向。

4.对于面为四边形或多边形的立体图形, 在绘制四边形,或多边形时,应该以逆时针方向绘制, 至于每个面的起点,不受限制, 从那个面开始不受限制。

QT5 OpenGL (四, 绘制立体图形)相关推荐

  1. 开始绘制立体图形立方体正四面体

    刚刚学会绘制B曲线和曲面,突然想学习绘制立体图形了,说干就干,百度了一下,从立方体开始 做了好好长时间终于完成了..实现的代码如下 #include<GL/GLUT.H> #include ...

  2. VS2012下基于Glut OpenGL显示一些立体图形示例程序:

    Glut下提供了一些现成的绘制立体的API,如glutWireSphere绘制球,glutWireCone绘制椎体,glutWireCube绘制立体,glutWireTorus绘制甜圈,glutWir ...

  3. cdr软件怎么绘制立体图?cdr绘制立体图形的教程

    CorelDRAW的简称是cdr,是一款专业的矢量图绘制软件,一般都是用来绘制二维图形的,但是也可以绘制三维图形,下面内容就来用cdr软件演示绘制三维图形的教程 cdr软件绘制三维图形的教程: 进入C ...

  4. python做一个立体相册_python使用库绘制立体图形方法

    不同于往日,这次实现3D图形,小编给大家带来了一个新的库,这里用到的VisPy库,比起matplot更高级,非常容易上手,虽然知道了解的人可能不是很多,但是这丝毫不影响它是非常简单实用的,好啦,回归本 ...

  5. OpenGL与3D开发-绘制3D图形

    绘制3D图形 文章目录 绘制3D图形 1.立方体 2.圆形 3.球形 3.1.球面顶点坐标计算 使用OpenGL ES绘制3D图形的方法与绘制2D图形的步骤大致相同,只是绘制3D图形需要定义更多的顶点 ...

  6. Win32 OpenGL编程(4) 2D图形基础(颜色及坐标体系进阶知识)

    Win32 OpenGL 编程 (4) 2D 图形基础(颜色及坐标体系进阶知识) write by 九天雁翎 (JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 ...

  7. 使用OpenGL,在窗口中绘制两个立体图形,位置分别为窗口的左侧和右侧,添加光照,两个图形分别绕x轴和y轴旋转。

    总体思路: 第一步,使用viewpoint函数来建立两个分割的窗口 第二步,在两个视口分别绘制带光照效果的立体图形 第三步,使用进栈出栈函数和Rotatef函数实现两图像各自的旋转 关于glPushM ...

  8. 【愚公系列】2022年09月 微信小程序-WebGL立体图形的绘制

    文章目录 前言 一.webgl的使用 1.立体图形的绘制 二.相关包源码 三.总结 前言 WebGL(全写Web Graphics Library)是一种3D绘图协议,这种绘图技术标准允许把JavaS ...

  9. Android开发笔记(一百五十三)OpenGL绘制三维图形的流程

    从这篇文章开始,接下来会连载一系列的OpenGL相关博文,好好探讨如何在Android中进行OpenGL开发. OpenGL的全称是"Open Graphics Library", ...

最新文章

  1. 2022-2028年中国电力行业节能减排投资分析及前景预测报告
  2. 《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析...
  3. Wamp与IIS同时在Windows7下运行解决方法
  4. c语言ascw,Asc/AscB/AscW和Chr/ChrB/ChrW函数之间的区别
  5. java remove removeat_2016.3.12 Java中ArrayList类详解(转)
  6. 如何看Cortex-M系列处理器差异与共性?技术老司机Joseph带你飞
  7. 在sublime text里阅读ABAP源代码的一些例子
  8. LaunchScreen原理
  9. linux 内核 锐龙,AMDGPU内核驱动程序在Linux 5.0上运行良好
  10. 百度回应李彦宏卸任百度云执行董事;甲骨文拟增聘 2000 员工拓展云服务;PostgreSQL 12 正式发布 | 极客头条...
  11. kiban可视化入门
  12. Mac m1搭建python深度学习环境+pycharm
  13. 工具分享:易读文档下载器(同时支持百度/豆丁)
  14. 叉乘点乘混合运算公式_《3D数学基础》提炼总结(四)向量运算(后)
  15. 计算机excel保留一位小数,excel表格数据取一位小数-excel保留一位小数
  16. 小米AI魔法万花筒解密
  17. 凤凰网科技频道定位和主要内容
  18. 一次阿里巴巴的电话面试
  19. xshell突然连接不上
  20. 【转】用天文方法计算二十四节气(下)

热门文章

  1. 海龟交易法则(中译文)
  2. kali中steghide命令工具教程;7z命令详解;kali中base64命令详解
  3. 垃圾邮件识别-朴素贝叶斯算法
  4. python比赛积分类算法题_python几道简单的算法题
  5. 5种常见的重复形式,平面设计手法进阶学习
  6. 一种云化busybox demolets的设想和一种根本降低编程实践难度的设想:免部署无语法编程
  7. 记录机器学习练习中不懂的函数
  8. iOS 开发笔记-获取某个APP素材
  9. Nim 游戏和 SG 函数
  10. Django REST framework学习笔记