有关我零基础入门Opengl并想开发七巧板小程序交作业这档子事

  • 隔壁笔记链接:入手OpenGL
  • 隔壁技术实现链接:部分思路实现

背景故事

  • c++课程老师给布置作业,“小作业”,使用c++开发七巧板小游戏,要求图形颜色不同,能拖动,放大缩小旋转,进行拼图。
  • 一看题目,我直接把有手就行打在了屏幕上,然后叫嚣我必能做完,事实上后台逻辑也确实不难,但是假期过后我没写完,交了半成品代码坐在教室瑟瑟发抖,究其原因,我发现我不会图形库开发。临时上手了Opengl被锤了一顿。

为什么用Opengl

  • 在同学们都根据老师推荐使用了ege的时候,我一个人倔的不听学长劝阻去入手了Opengl,事实证明,确实费劲,入手都费劲,更不用说往后学。我只学到了“LearnOpengl”的第三节课,你好三角形。
  • 究其原因,还是感觉ege对我来说,除了交作业没有任何作用,不如借此机会逼练自己,入手Opengl,让技术栈更圆满一些(虽然之前学的东西也都没有很圆满的水准)。

结果如何

  • 如最开始所说,我只交了半成品上去,老师对班里表现并不满意,又给了一周时间让我们完成交回去。这我能忍他?开搓开搓。
  • 好的,现在搓完了,虽然效果很一般,但起码要求全都实现了。也算是入手了Opengl(没入门,没入门,大佬们别锤)。
  • 最后开始页面截图如下(我甚至连个菜单目录都懒得做,直接上鼠标和键盘操作的东西)
  • 码量的话大概也就是个小一千吧,没仔细数。(源码是屎山,就先不放了,丢人)

大概思路

  • 走个设计思路,懒得画图,就直接口述了:

    1. 一个test.cpp脚本作为程序入口。
    2. 一个DrawingBoard.h+DrawingBoard.cpp作为画板类。统御管理画在其上面的图形对象。包括点击事件背后的图形绑定操作,放大缩小旋转移动的响应,每一帧更新绘制图像等都在这个类里做了管理,由于项目很小,只需要一个画板,为了写起来方便,我给画板写成了单例。
    3. 一个Graph.h+Graph.cpp脚本作为图形基类支持参数定义图形对象。其中什么都定义了,真的是定义了一大堆,属性大致有边长,顶点vector,旋转,颜色,shader相关对象内容,VAO,VBO等内容。然后方法的话,各种getset就不说了。要设计一手怎么给每个对象有自己独立的shader对象来用,还要有渲染自己的方法,之后画板直接调用每个对象的方法方便渲染。总之屎山,想到啥写啥,乱的很菜得很。有些有必要提一嘴的技术内容我会在之后专门出的技术博客里提一嘴。
    4. 正方形,三角形,平行四边形类,继承自上面的Graph类,分别实现自己的点对象初始化方法,点坐标更新方法,顶点VBO更新方法等。
    5. Point.h+Point.cpp作为顶点类而存在,没什么内容,就是诸如点坐标,getset之类(这个类存在的意义就在于我上一个版本是直接在命令行用字符暴力画的图,还被老师教训了一顿),新版本后删掉了原来大把的方法,确实用不到了,opengl帮我做了。

有关我零基础入门Opengl并想开发七巧板小程序交作业这档子事相关推荐

  1. 知乎爆赞!4504页《微信小程序零基础入门开发文档》+《小程序实战笔记》,你学废了吗?

    前言 微信小程序作为近几年"微服务"的杰出代表,应用十分广泛.小程序是一种新的开放能力,开发者可以快速地开发一个小程序.小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验 ...

  2. 零基础入门,花生壳骨灰级微信小程序开发教程

    微信小程序早已成为企业运营必不可少的一部分,对于小程序的开发需求也只增不减,而一个小程序在使用过程中是否流畅,也关系者用户体验度. 微信小程序的优势和特点: 一.不占内存 现在很多人都会遇到手机内存不 ...

  3. .NET零基础入门之01:开篇及CSharp程序、解决方案的结构

    .NET零基础入门之01:开篇及CSharp程序.解决方案的结构 参考文章: (1).NET零基础入门之01:开篇及CSharp程序.解决方案的结构 (2)https://www.cnblogs.co ...

  4. 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)

    大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...

  5. ChatGPT都说厉害的东西,零基础,3个小时完成微信小程序的制作并发布

    ChatGPT都说厉害的东西,零基础,3个小时完成微信小程序的制作并发布 目录 ChatGPT都说厉害的东西,零基础,3个小时完成微信小程序的制作并发布 一.事情的起因(先解释一些因素,可以选择跳过) ...

  6. HTML完结《一篇文章入门编程系列之从零基础入门HTML+CSS前端开发》12.24

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(QQ_3336392096.jpg)] 一篇文章让你从HTML零基础入门前端开发 前言: 此文为玄子,复习ACCP-S1课程后,整 ...

  7. 日常更新《一篇文章入门编程系列之从零基础入门HTML+CSS前端开发》12.23

    一篇文章让你从HTML零基础入门前端开发 前言: 此文为玄子,复习ACCP-S1课程后,整理的文章,文中对知识点的解释仅为个人理解,源码均可直接复制运行 配套PPT,站点源码,等学习资料请加文章封面联 ...

  8. python 二进制流转图片_Python零基础入门到精通-5.1节:Python程序的执行过程

    教程引言: 系统地讲解计算机基础知识,Python的基础知识, 高级知识,web开发框架,爬虫开发,数据结构与算法,nginx, 系统架构.一步步地帮助你从入门到就业. 5.1.1 在命令行中执行Py ...

  9. 零基础手把手教你制作一个微信小程序云开发-实验室仪器管理系统(二)

    书接上文,我们了解到了怎么在微信开发者工具上新建一个空的云开发项目. 别急,你以为你能大展身手开始写代码了? 答案是否定的,首先你要先开始对小程序进行模块拆分 郦波老师有一句话说得很好:解决问题的最好 ...

最新文章

  1. Yann LeCun:距离“真正的” AI,我们还缺什么?
  2. 树莓派 -- 按键 (key)使用BCM2835 gpio library
  3. 【控制】《自动控制原理》胡寿松老师-第9章-线性系统的状态空间分析与综合
  4. Django_form补充
  5. Dockerfile 常用命令
  6. python的numpy库结构_NumPy构成了数据科学领域中许多Python库的基础。
  7. 网络不稳定的原因_关键词排名波动原因,如何解决网站排名不稳定!
  8. 使用spring 配置数据源,并用数据源得到连接,操作sql
  9. 深度学习工作笔记003---数据预处理:独热编码(One-Hot Encoding)
  10. sublime配置java编译运行环境(亲测有效)
  11. 贝叶斯定理到贝叶斯滤波器
  12. 怎么解苹果7手机ID锁
  13. 关于sicp练习2.73的前置程序
  14. WSL2 通过 USBIP 连接USB串口设备 JetsonUSB备份刷机
  15. Java实体类(entity)作用
  16. 【论文 CCF C】Multi-DQN: An ensemble of Deep Q-learning agents for stock market forecasting
  17. 输入某年某月某日,判断这一天是这一年的第几天python
  18. Mac上备份iphone照片
  19. 2016新疆教师计算机等级考试,2019年11月7日的新疆中小学教师计算机等级..._教师资格考试_帮考网...
  20. CentOS 8上安装极点五笔(亲证)

热门文章

  1. python可以制作游戏脚本吗_用Python写一个游戏脚本,你会吗?
  2. PyQt5实例 — 温度转换
  3. 趣味娱乐多微信小程序源码下载趣味制作,藏头诗,隐藏图
  4. 用Python和Pygame写游戏-从入门到精通(6)学习笔记
  5. 云枢认证考试_奥哲云枢#【最新版】-云市场-阿里云
  6. iOS开发之微信自动抢红包功能
  7. 超级账本与企业以太坊联盟(EEA)宣布结盟共同为区块链制定标准
  8. 打造自己的装机U盘(三)终结篇
  9. 细说LoadRunner参数化
  10. Google Issues Cease Desist to Open Source Android Developer