NeHe 系列教程之五: 绘制3D几何对象

英文教程地址:lesson05

本课在第四课的基础上, 绘制真实的3D 对象, 具体如下:

void MyGLWidget::paintGL()
{glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  // Clear The Screen And The Depth BufferglLoadIdentity();       // Reset The Current Modelview MatrixglTranslatef(-1.5f,0.0f,-6.0f);     // Move Left 1.5 Units And Into The Screen 6.0glRotatef(rtri,0.0f,1.0f,0.0f);                // Rotate The Pyramid On It's Y AxisglBegin(GL_TRIANGLES);                 // Start Drawing The PyramidglColor3f(1.0f,0.0f,0.0f);          // RedglVertex3f( 0.0f, 1.0f, 0.0f);            // Top Of Triangle (Front)glColor3f(0.0f,1.0f,0.0f);            // GreenglVertex3f(-1.0f,-1.0f, 1.0f);          // Left Of Triangle (Front)glColor3f(0.0f,0.0f,1.0f);           // BlueglVertex3f( 1.0f,-1.0f, 1.0f);           // Right Of Triangle (Front)glColor3f(1.0f,0.0f,0.0f);          // RedglVertex3f( 0.0f, 1.0f, 0.0f);            // Top Of Triangle (Right)glColor3f(0.0f,0.0f,1.0f);            // BlueglVertex3f( 1.0f,-1.0f, 1.0f);           // Left Of Triangle (Right)glColor3f(0.0f,1.0f,0.0f);           // GreenglVertex3f( 1.0f,-1.0f, -1.0f);         // Right Of Triangle (Right)glColor3f(1.0f,0.0f,0.0f);          // RedglVertex3f( 0.0f, 1.0f, 0.0f);            // Top Of Triangle (Back)glColor3f(0.0f,1.0f,0.0f);         // GreenglVertex3f( 1.0f,-1.0f, -1.0f);         // Left Of Triangle (Back)glColor3f(0.0f,0.0f,1.0f);            // BlueglVertex3f(-1.0f,-1.0f, -1.0f);          // Right Of Triangle (Back)glColor3f(1.0f,0.0f,0.0f);           // RedglVertex3f( 0.0f, 1.0f, 0.0f);            // Top Of Triangle (Left)glColor3f(0.0f,0.0f,1.0f);         // BlueglVertex3f(-1.0f,-1.0f,-1.0f);           // Left Of Triangle (Left)glColor3f(0.0f,1.0f,0.0f);            // GreenglVertex3f(-1.0f,-1.0f, 1.0f);          // Right Of Triangle (Left)glEnd();                        // Done Drawing The PyramidglLoadIdentity();glTranslatef(1.5f,0.0f,-7.0f);              // Move Right And Into The ScreenglRotatef(rquad,1.0f,1.0f,1.0f);            // Rotate The Cube On X, Y & ZglBegin(GL_QUADS);                  // Start Drawing The CubeglColor3f(0.0f,1.0f,0.0f);          // Set The Color To GreenglVertex3f( 1.0f, 1.0f,-1.0f);          // Top Right Of The Quad (Top)glVertex3f(-1.0f, 1.0f,-1.0f);          // Top Left Of The Quad (Top)glVertex3f(-1.0f, 1.0f, 1.0f);          // Bottom Left Of The Quad (Top)glVertex3f( 1.0f, 1.0f, 1.0f);          // Bottom Right Of The Quad (Top)glColor3f(1.0f,0.5f,0.0f);          // Set The Color To OrangeglVertex3f( 1.0f,-1.0f, 1.0f);          // Top Right Of The Quad (Bottom)glVertex3f(-1.0f,-1.0f, 1.0f);          // Top Left Of The Quad (Bottom)glVertex3f(-1.0f,-1.0f,-1.0f);          // Bottom Left Of The Quad (Bottom)glVertex3f( 1.0f,-1.0f,-1.0f);          // Bottom Right Of The Quad (Bottom)glColor3f(1.0f,0.0f,0.0f);          // Set The Color To RedglVertex3f( 1.0f, 1.0f, 1.0f);          // Top Right Of The Quad (Front)glVertex3f(-1.0f, 1.0f, 1.0f);          // Top Left Of The Quad (Front)glVertex3f(-1.0f,-1.0f, 1.0f);          // Bottom Left Of The Quad (Front)glVertex3f( 1.0f,-1.0f, 1.0f);          // Bottom Right Of The Quad (Front)glColor3f(1.0f,1.0f,0.0f);          // Set The Color To YellowglVertex3f( 1.0f,-1.0f,-1.0f);          // Bottom Left Of The Quad (Back)glVertex3f(-1.0f,-1.0f,-1.0f);          // Bottom Right Of The Quad (Back)glVertex3f(-1.0f, 1.0f,-1.0f);          // Top Right Of The Quad (Back)glVertex3f( 1.0f, 1.0f,-1.0f);          // Top Left Of The Quad (Back)glColor3f(0.0f,0.0f,1.0f);          // Set The Color To BlueglVertex3f(-1.0f, 1.0f, 1.0f);          // Top Right Of The Quad (Left)glVertex3f(-1.0f, 1.0f,-1.0f);          // Top Left Of The Quad (Left)glVertex3f(-1.0f,-1.0f,-1.0f);          // Bottom Left Of The Quad (Left)glVertex3f(-1.0f,-1.0f, 1.0f);          // Bottom Right Of The Quad (Left)glColor3f(1.0f,0.0f,1.0f);          // Set The Color To VioletglVertex3f( 1.0f, 1.0f,-1.0f);          // Top Right Of The Quad (Right)glVertex3f( 1.0f, 1.0f, 1.0f);          // Top Left Of The Quad (Right)glVertex3f( 1.0f,-1.0f, 1.0f);          // Bottom Left Of The Quad (Right)glVertex3f( 1.0f,-1.0f,-1.0f);          // Bottom Right Of The Quad (Right)glEnd();                     // Done Drawing The Quadrtri += 0.2f;                    // Increase The Rotation Variable For The Triangle ( NEW )rquad -= 0.15f;                  // Decrease The Rotation Variable For The Quad     ( NEW )
}

运行效果如下所示:

转载于:https://my.oschina.net/fuyajun1983cn/blog/263774

NeHe教程Qt实现——lesson05相关推荐

  1. NeHe教程Qt实现——lesson01

    NeHe 系列教程之一: 创建一个OpenGL 窗口 英文教程地址: lesson01 在Qt的实现中, 我们主要依赖QGLWidget类, 我们主要重载三个重要方法 :     void initi ...

  2. NeHe教程Qt实现——lesson10

    NeHe 系列教程之十:在3D空间中漫游 英文教程地址:lesson10 本课演示了从外部文件中加载数据构建3D模型的实例,代码基于第一课. 首先是3D模型的数据结构定义: namespace {bo ...

  3. NeHe教程Qt实现——lesson07

    NeHe 系列教程之七: 光照及纹理过滤 英文教程地址:lesson07 本课将以第一课的代码为基础, 实现光照效果. 首先是对象定义与纹理加载的代码: namespace { bool light; ...

  4. NeHe教程Qt实现——lesson08

    NeHe 系列教程之八: 混合 英文教程地址:lesson08 本课将在第七课的基础上添加颜色混合的代码: namespace { ... bool blend; // Blending OFF/ON ...

  5. NeHe教程Qt实现——lesson09

    NeHe 系列教程之九: 在3D空间中移动位图 英文教程地址:lesson09 本课基于第一课的代码, 利用颜色混合的方法,将一个黑白纹理与随机颜色进行混合,产生绚丽的效果. 首先是定义相关变量和数据 ...

  6. NeHe教程Qt实现——lesson16

    NeHe 系列教程之十四:雾 英文教程地址:lesson16 本课展示产生雾. 相关变量和函数定义: namespace { bool gp; GLuint fogMode[] = { GL_EXP, ...

  7. NeHe教程Qt实现——lesson06

    NeHe 系列教程之六: 纹理映射 英文教程地址:lesson06 本课以第一课的代码为基础,演示了加载纹理的过程. 首先给出的是绘制几何对象和加载纹理坐标的代码 namespace {GLfloat ...

  8. NeHe教程Qt实现——lesson15

    NeHe 系列教程之十四:纹理 轮廓字体 英文教程地址:lesson15 本课展示如何创建和显示纹理轮廓字体, 代码基于第一课. 首先是字体库的创建: namespace {#define USE_D ...

  9. NeHe教程Qt实现——lesson13

    NeHe 系列教程之十三: 位图字体 英文教程地址:lesson13 本课将展示位图字体的创建和显示, 代码基于第一课. 首先是字休库的创建,如下所示: namespace {#define USE_ ...

最新文章

  1. 【AJAX】Ajax学习总结
  2. 对抗神经网络,梦,潜意识
  3. b+树时间复杂度_阿里面试,问了B+树,这个回答让我通过了
  4. L1-011 A-B (20 分)(c语言实现)
  5. 【渝粤教育】 国家开放大学2020年春季 1259西方行政学说 参考试题
  6. mysql master status_show master status为空解决办法
  7. asp转php后数据库连接代码,ASP_asp 数据库连接函数代码,以下是SQL连接代码: 复制代码 - phpStudy...
  8. anaconda的使用
  9. 尺规作图切线的画法_基于尺规作图的新型公切线画法
  10. 什么叫嵌入式开发 嵌入式开发的要求
  11. 远程桌面蓝屏解决办法
  12. 二叉查找树,二叉平衡树
  13. 如何解决Vmware Ubuntu网络问题(适用于锐捷客户端用户)
  14. 重置计算机网络设置路由器,路由器登录不上怎么办 如何重新设置路由器
  15. 【深度学习】李沐的深度学习笔记来了!
  16. 如何找到本地区最新的中小学教材
  17. 《计算机网络管理》_Chap2
  18. GitFlow 代码管理模型实战
  19. 杉德支付php代码实现_杉德ecshop,thinkphp,shopnc在线支付接口,支付插件(payment plugin含源码)...
  20. 东北育才 DAY2组合数取mod (comb)

热门文章

  1. 091101 T IModel
  2. Ackerman 函数的解法
  3. Nginx的安装配置
  4. Struts2 method=get方法乱码
  5. MSN8.0?!O My God,it's so perfect!
  6. 淘宝内部分享:怎么跳出MySQL的10个大坑
  7. linux iptables 命令简介
  8. linux shell 字符串查找
  9. linux ps命令 格式 进程状态 各字段含义 简介
  10. LDAP 轻量级目录访问协议 介绍