【openGL基础系列】之画一个正方体玩玩吧

    大家好,我是Lampard~~

    欢迎来到openGL基础系列的博客

    今天讲的是如何在openGL中画一个正方体

    前言:大家都知道,一个正方体包括六个面 ,十二条线。所以我们创造一个正方体的时候既可以使用线的组合,也可以用面的组合来表示。为了让我们更加直观的看到这个正方体,我还在博客上参考了别人的算法,让整个正方体转起来。话不多说我们来看看代码和成品图吧:

 1. 构建正方体的坐标

typedef GLint vertex3[3];
vertex3 pt[8] = {{0, 0, 0},{0, 1, 0},{1, 0, 0},{1, 1, 0},{0, 0, 1},{0, 1, 1},{1, 0, 1},{1, 1, 1}
};

    2. 构建一个正方形

void quad(GLint n1, GLint n2, GLint n3, GLint n4){// 构建一个正方形glBegin(GL_QUADS);glVertex3iv(pt[n1]);glVertex3iv(pt[n2]);glVertex3iv(pt[n3]);glVertex3iv(pt[n4]);glEnd();
}

   3. 构建一个正方体

void cube(void) {// 构建六个面quad(6, 2, 3, 7);quad(5, 1, 0, 4);quad(7, 3, 1, 5);quad(4, 0, 2, 6);quad(2, 0, 1, 3);quad(7, 5, 4, 6);
}

   4. 让整个正方体旋转起来

static float rotate = 0;
static int times = 0;void renderScene(void)
{glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glMatrixMode(GL_MODELVIEW);       // 对模型视景进行操作glLoadIdentity();                 // 将当前矩阵设置为单位矩阵glPushMatrix();                   // 保存当前的位置times++;if (times > 100){times = 0;}if (times % 100 == 0){rotate += 0.3;}glRotatef(rotate, 0, 1, 0);glRotatef(rotate, 1, 0, 0);glColor3f(255, 255, 255);cube();glPopMatrix();                     // 返回之前的位置glutSwapBuffers();                 // 使用双缓冲模式存储
}void main(int argc, char **argv)
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);  // 使用双缓冲glutInitWindowPosition(100, 100);glutInitWindowSize(500, 500);glutCreateWindow("GLDemo");glutDisplayFunc(renderScene);glutIdleFunc(renderScene);          // 不断的执行回调直至下一个窗口事件的发生glutMainLoop();
}

    以上已经加上了我对代码的备注,对于旋转的算法我暂时也了解得不太清楚,我们就先知道他怎么用,之后再慢慢理解其原理。现在我们来看看我们的成品:

  

OK,本章内容到此结束,更多内容,敬请关注!!!

各位大佬记得点赞关注支持........

【openGL基础系列】之画一个正方体玩玩吧相关推荐

  1. 无聊画一个五角星玩玩

    无聊,画一个五角星玩玩 code      https://github.com/char0xface/five_pointed_star EXE 链接:https://pan.baidu.com/s ...

  2. OpenGL学习笔记(2) 画一个正方形

    画一个正方形 其实,画正方形就是画两个三角形,用四个顶点以及使用索引来实现 完整代码在Square项目的Application.cpp里 先贴上窗口初始化代码 void BaseInit() {glf ...

  3. OpenGL基础13:第一个正方体

    我们已经进入了3D世界了,想办法生成一个最简单的3D图形:正方体吧 一.生成一块箱子 接上一章的代码,其实如果前面12章都完全理解了,应该可以直接写出生成正方体的代码(不就是多5个面嘛) 为了简单化, ...

  4. Turtle系列之画一个简易的交通标志,安排安排【留作业】

    导语 哈喽!我是木木子!中秋过完大家想我了没? 之前给大家说过的嘛--最近练车断断续续更新,今天告诉大家一个好消息驾照拿到手了! 哈哈哈哈 !对我来说是蛮高兴的事情滴,这就要说起交通标志了: 这大家熟 ...

  5. 【Python基础系列】每天一个小程序-01

    文章目录 题目 参考代码 代码分析 题目 第0000题 将你的 QQ 头像(或者微博/信头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果. 参考代码 from PIL ...

  6. Jmeter基础系列4-创建一个HTTP请求实例

    在前面的章节我们介绍了软件的图形化界面的认识,还有元件的简单介绍,现在我们就可以开启创建第一个Jmeter测试用例吧. 1.新建一个Test Plan,保存之后左侧的测试计划的名称就会变成新的. 2. ...

  7. 用excel 调用solidworks 2018 画一个正方体,长在excel sheet1的A1位置,宽在excel sheet1的B1位置,高在excel sheet1的C1位置,写出代码...

    可以使用以下代码:Sub Create_Cube() Dim swApp As Object Dim swModel As Object Dim swDrawing As Object Dim swS ...

  8. OpenGL基础29:深度测试

    前置:OpenGL基础11:空间 一.深度测试 在 OpenGL基础13:第一个正方体 这一章中,就开始用深度测试了 深度缓冲就像颜色缓冲(Color Buffer)(储存所有的片段颜色:视觉输出)一 ...

  9. OpenGL基础22:贴图

    在 OpenGL基础13:第一个正方体 中给正方体加了箱子的纹理,但是在后面介绍光照的时候又把纹理属性给丢了,现在尝试在有纹理的基础之上增加光照 一.漫反射贴图 先把之前的纹理加回去 顶点着色器和主代 ...

  10. 怎样快速画出一个正方体_小学数学非常有效的“画图”解题法,快速解题的“金钥匙”...

    小学阶段的数学主要培养的是孩子的逻辑思维能力,是从形象思维逐步过度到抽象思维的过程,如果在小学阶段没有将基础打牢,那么等孩子上初中后面对更复杂的学习内容,就会变得更吃力. 在小学数学中,"画 ...

最新文章

  1. Python中的运算符
  2. python转盘抽奖概率_转盘指定概率抽奖
  3. unity3d模拟树叶飘动_Unity3D独立游戏开发日记(一):动态生成树木
  4. 数据库设计笔记——关系型数据库基础知识(三)
  5. 第13步 用户模块前端(Admin)
  6. 操作系统时间片轮换_《操作系统_时间片轮转RR进程调度算法》
  7. Taro+react开发(87):图片引入
  8. access vba在新建查询前查看查询名是否存在
  9. Kafka 与Spark的集成
  10. linux sed打印功能,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  11. web前端 html+css+javascript网页设计实例 企业网站制作
  12. 想查看实时卫星影像?最近一周就不错了
  13. Openstack 简单梳理,(自用 慎点)
  14. 认知世界(1)--学与思
  15. 记录解决问题--Linux服务器连接超时
  16. 优选法中的黄金分割法
  17. 爱因斯坦的题目:在你面前有一条长长的阶梯,如果每步跨2阶,那么最后剩1阶;如果每步跨3阶,那么最后剩2阶.....................
  18. 单选框,下拉框,复选框 的回显
  19. 计算机音乐凉凉6,凉凉(伴奏) MIDI File Download :: MidiShow
  20. python上网_西电免流量限制上网攻略!Python实现PPPOE攻击工具,秒杀拨号上网

热门文章

  1. 美国加拿大结婚证公证及使馆认证流程时间用于国内法院离婚
  2. 退欧令英国科技业措手不及,可能不再享受多项利好政策
  3. Hibernate - HQL对象检索详解
  4. The Witness - 美不胜收的解谜游戏
  5. 计算机二级excel设置宏,Excel2013中为宏指定快捷键的方法
  6. 继续教育计算机组成试卷,计算机继续教育考试模拟练习.doc
  7. 大二下-企业级信息系统设计与开发笔记18(Spring Boot整合Redis)
  8. 人工智能 2 级就来越塔来杀我,论文已被NeurIPS收录!
  9. 解决win10开启移动热点共享手机连上后无法上网的问题
  10. CAD创建以及自动加载脚本文件*scr