说在前面 首先讨论一下版本控制的重要性: 每一个小版本只更新了一个或两个功能,那后面如果出错了,排查错误、进行回滚就可以根据message方便的进行; 团队协作的时候,必然会出现合作、共同使用代码的情况,比如我们两个人一同更新mainwindow这个文件,那就极可能出现冲突,像我们都在第1000行新写了一个函数,那版本就无法识别到底最后选择哪个,而当这些情况积累起来之后要处理就...
SVN-版本控制:深入浅出入门SVN使用
OSG学习之路
osg入门的时候材料教程真的是特别少,而且很多都特别老的。 这里分享一下个人学习过程的项目,会持续更新。 里面暂时包括有:Array大佬《osg程序设计》所有源码的整理,配置好环境后可以直接运行;osg_earth官方例子的一些整理;osg+qt的实现;以及一些经验教训总结等。 项目地址: https://github.com/kkkiitty/learnOSG 当时整理的时候就想着...
C++隐式类型转换 operator T()
最近研究智能指针,osg::ref_ptr的机制时候发现一个有趣的问题。就是C++智能指针都会提到一点: 由于智能指针是一个对象,所以if (my_smart_object)永远为真,要判断智能指针的裸指针是否为空,需要这样判断:if (my_smart_object.get())。 但是我在写osg的时候,下意识都是直接判定的if(myPtr)也没碰到问题。研究后发现原来是os...
编码规范汇总【持续更新】/C++/C#
前言 作为软件工程师,出产物就应该具备工程的健壮性和美观性。因此代码规范是作为软件工程师的职业素养。但总所周知,程序员的工作基本就是在维护一座屎山,这确实是现实中种种客观条件约束下导致的。 记录本篇博客,也是希望本人在打码过程,能够保持负责任的初心,以及追求完美的极客精神吧。 诸君共勉。愿人间没有ugly的代码。 规范标准 首先列出一些常见的编码规范。 C++规范 一. 变量声...
OSG智能指针:osg::ref_ptr
在osg开发时(特别是刚上手),有一点比较重要然后容易忽略的是,在osg程序开发中,要尽量使用osg::ref_ptr<T*>。 这个智能指针构建起osg的对象树(绝大部分osg类都是继承于osg::Referenced,即可计数对象),类似于Qt的对象树,负责其内存的管理。 当然其内存管理策略不是我们关心的,我们使用它的原因是基于其内存管理策略,大部分类的析构函数都是受保护...
OpenGL矩阵变换顺序
问题 在学习openGL变换的时候,我们知道一个规则就是:先缩放再旋转再平移,关于这个规则以及变换关系建议去看learnopengl的教程。 但是我们还有另外一种情景,就是比如我们希望变换是基于某个点进行的,如一个三角形基于它的一个顶点进行缩放,那这个时候我们的做法就是先把三角形平移到原点处(假设该顶点坐标为(x,y),则平移为T(-x,-y)),然后缩放(比如,S(2,2)),然后平移...