27 Jan 2016
作者是现在对相关知识理解还不是很深入,后续会不断完善。因此文中内容仅供参考,具体的知识点请以OpenGL的官方文档为准
前言
本文介绍了如何使用AMD的RenderMonkey开发工具编写shader代码,并预览效果。
RenderMonkey现在的版本是1.8.2, 已经好久不更新了。AMD官方已经说明不再对其惊醒维护了。
...
阅读全文 ...
27 Jan 2016
#前言
本文介绍了如何使用宏来控制C++单元测试的开启和关闭,本文的单元测试工具指的是google的C++测试框架gtest。
gtest目前最新的稳定release版本是1.7,关于gtest的介绍请移步gtest的主页 ,它的编译安装 和使用都很简单,你可以直接把gtest的源码copy到自己项目里来使用,也可以使用header+静态库的方式集成到项目中。入门的话建议从它源码仓库里自带的测试用例 看起,模仿着这些sample写用例可以快速上手。本文不对具体使用方法做介绍。
当单元测试变多的时候遇到的麻烦
我对gtest使用比较多的特性是基本的
TEST
测试,典型的用法像下面的代码这样:
#include <iostream>
#include "gtest/gtest.h"
using namespace std ;
TEST ( TempTest , Test1 )
{
cout << "============== Test1 ================" << endl ;
int i = 4 * 5 ;
EXPECT_EQ ( 20 , i ); // 20 == i
EXPECT_NE ( 21 , i ); // 21 != i
EXPECT_TRUE ( 20 == i );
EXPECT_FALSE ( 21 == i );
cout << i << endl ; // 输出这么多行是在模拟复杂测试的时候,测试用例的输出可能会很多。
cout << i << endl ;
cout << i << endl ;
cout << i << endl ;
cout << i << endl ;
cout << i << endl ;
}
TEST ( TempTest , Test2 )
{
cout << "============== Test2 ================" << endl ;
int i = 20 * 5 ;
EXPECT_GT ( 101 , i ); // 101 > i
EXPECT_LT ( 99 , i ); // 99 < i
cout << i << endl ;
cout << i << endl ;
cout << i << endl ;
cout << i << endl ;
cout << i << endl ;
cout << i << endl ;
}
TEST ( TempTest , Test3 )
{
cout << "============== Test3 ================" << endl ;
int i = 2 * 5 ;
EXPECT_GT ( 1 , i ); // 1 > i ? will not pass.
cout << i << endl ;
cout << i << endl ;
cout << i << endl ;
cout << i << endl ;
cout << i << endl ;
cout << i << endl ;
}
int main ( int argc , char ** argv )
{
testing :: InitGoogleTest ( & argc , argv );
return RUN_ALL_TESTS ();
}
...
阅读全文 ...
25 Jan 2016
吐槽端由
最近又看到几篇文章里的各路程序豪杰描述自己的工作流,OS X + Terminal(zsh) + Vim + Emacs,Linux……,这又让我想到“Windows坑人论,真正的程序员都是Linux的”那一系列的讨论。确实很少看到有人描述自己在Windows上的工作流,难道我们每天使用Windows的开发者就该觉得自己很low吗?
呵呵。
说实话,我前两年刚接触Linux系的操作系统时,感受到它那强大的气场之后,确实有过很长时间,在心底里看低Windows,也几乎很肯定自己的技术生涯迟早会走向Linux系。有过几年编程经验和对程序员这个职位的了解之后,我只想对那时候的自己说这句话:
“呵呵”。
就跟编程语言只是个工具一样,操作系统和开发工具也是个工具。工具的职责在于能辅助人搞定他的目标,如果你追求做事效率,那么就该使用专业的工具来做专业的事情,我如果写Windows桌面程序,那么使用VS+VA插件无疑是一个好的选择,VS的强大调试能力和VA的代码补全、重构、代码导航等功能会极大提升我的效率。如果对代码编写要求较高,可以装个VsVim插件,或者在Vim或Emacs里编辑代码,然后回到VS里进行调试。如果我写Linux服务器程序,那也要选择适合Linux环境的服务器开发的专业工具。在完成我的目标的过程中,真正有意义的是我对问题的正确认识和解决问题的思路,在我完成任务之后没人会在意我用的是什么工具,关键的是我能按时正确的完成任务。
这篇文章是为了提醒自己,别在工具上花费过多精力,在正确的时间做正确的事。同时要表达一下对Windows的感恩,因为它带我走进程序的世界,它能让我一个编程菜鸟对编程这件事情产生兴趣和信心,感谢给Windows上写出优秀软件的程序精英们,Total Commander, VS, Vim, Emacs, Mingw, Cygwin, Eclipse, Intellij Idea, PyCharm, Cocos2d-x….. 你们让我的程序生活丰富多彩,让我节省下很多时间来学习新东西,享受技术生活。
...
阅读全文 ...
24 Jan 2016
#前言
本文总结了在windows上使用cocos compile
命令编译cocos2d-x安卓apk的基本用法,以及记录一个使用NDK-r9d(gcc 4.8)编译C++11的hash_map
遇到的一个问题: error: invalid use of incomplete type 'struct std::hash<MessageType>'
。
cocos compile 基本用法, 编译debug版本的cpp-tests.
从2.x到3.x,cocos的辅助工具做的越来越完善了,2.x刚开始的时候编译apk是比较费劲的,除了最基本的安装JDK, NDK, Android SDK, Ant还要装cygwin,自己配环境变量,执行打包脚本等等。我最近使用的是cocos2d-x官方的github仓库中的默认v3分支最新代码(3.10), 以编译cpp-tests工程为android apk为例,使用最新的打包方式:cocos compile.
...
阅读全文 ...