在计算机科学中, 调用约定是一种定义子过程从调用处接受参数以及返回结果的方法的约定。不同调用约定的区别在于: 参数和返回值放置的位置(在寄存器中;在调用栈中;两者混合) 参数传递的顺序(或者单个参数不同部分的顺序) 调用前设置和调用后清理的工作,在调用者和被调用者之间如何分配 被调用者可以直接使用哪一个寄存器有时也包括在内。(否则的话被当成ABI的细节) 哪一个寄存器被当作volatile的或者非volatile的,并且如果是volatile的,不需要被调用者恢复 _cdcel是C/C++默认的函数调用约定 函数实…

2018年1月10日 0条评论 3176点热度 0人点赞 icebmji 阅读全文

GLShaderManager类定义在GLShaderManager.h头文件中 使用GLShaderManager前必须对其进行初始化shaderManager.InitializeStockShaders() GLShaderManager有8种着色器模式 1. 单位着色器 简单使用笛卡尔坐标系,所有坐标范围都是-1.0到1.0。所有片段用同一种颜色。几何图形是实心的、未渲染的。 函数原型:GLShaderManager::UseStockShader(GLT_SHADER_IDENTITY,GLfloat v…

2018年1月9日 0条评论 3126点热度 0人点赞 icebmji 阅读全文

[toc] 转载地址:http://www.runoob.com/cplusplus/cpp-storage-classes.html C++ 存储类 存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C++ 程序中可用的存储类: auto register static extern mutable thread_local (C++11) 从 C++ 11 开始,auto 关键字不再是 C++ 存储类说明符,且 register 关键字被弃用。 au…

2018年1月4日 0条评论 2813点热度 0人点赞 icebmji 阅读全文

重载 在同一个作用域内 函数名相同 参数不同,可以是数量或类型 其他因素:  virtual、static不影响重载 返回值类型不同不影响重载 部分函数类型限定符,如写在成员函数参数列表后的const,影响重载 示例: class A { public: void f(int) {} void f(float) {} void f(int) const {} void f(int, int) {} //int f(int){} //virtual void f(int) {} }; 覆盖 不在同一作用域,即分别位于…

2018年1月3日 0条评论 3012点热度 0人点赞 icebmji 阅读全文

预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前。预处理指令不是 C++ 语句,所以它们不会以分号(;)结尾。 预处理一般过程: 宏定义处理 #define 条件编译 #if 头文件包含 #include 其它,如:#pragma  #line #error等 在编译器加参数"/P",预处理将会将宏替换后的源代码输出到一个".i"文件中,不会在生成".obj"

2018年1月3日 0条评论 2104点热度 0人点赞 icebmji 阅读全文

(机翻,转载自:Article - World, View and Projection Transformation Matrices) 介绍 在本文中,我们将尝试详细了解任何3D引擎的核心机制,即矩阵变换链,它允许在2D监视器上表示3D对象。我们将尝试进入矩阵如何构建的细节以及为什么,所以这篇文章不是绝对的初学者。 我将假设向量数学和矩阵数学的一般知识。 我们先来谈谈转换和向量空间之间的关系。然后我们将展示如何以矩阵形式表示变换。从那里,我们将展示您将需要应用的典型的转换顺序,从  模型  到  世界空间,然后…

2017年12月14日 0条评论 4130点热度 0人点赞 icebmji 阅读全文

UNIX标准及实现 UNIX标准化 ANSI:美国国家标准学会,它是ISO:国际标准化组织中代表美国的成员IEC是国际电子技术委员会 ISO C标准意图提供C程序的可移植性,此标准定义了C语言的语法和语义,还定义了标准库,所有的UNIX系统都提供C标准中定义的库函数 ISO C库分为24个区,POSIX标准还有其他的头文件 POSIX:可移植操作系统接口,最初由IEEE:电气和电子工程师学会制定的标准族,POSIX中包含了ISO C中定义的标准库。POSIX分为必需和可选部分 SUS:单一UNIX规范,是POSIX…

2017年12月11日 0条评论 2840点热度 0人点赞 icebmji 阅读全文

UNIX基础知识 UNIX体系结构图 登录 /etc/passwd结构:登录名:加密口令:用户ID:组ID:注释字段:开始目录:shell(共7个字段) shell是一个命令行解释器,读取用户输入,执行命令 文件目录  ls命令简易实现,第4章具体研究 opendir打开目录返回DIR类型指针 readdir获取DIR类型指针,返回dirent类型指针,dirent结构体中有d_name为目录项名字 closedir关闭opendir打开目录返回的DIR 上面几个函数包含在<dirent.h>中 输入输…

2017年12月10日 0条评论 3436点热度 0人点赞 icebmji 阅读全文

C++new操作符带不带括号区别 https://www.zhihu.com/question/35843839 类的空指针的成员函数调用 #include using namespace std; class A{ public: void test() { printf("test A"); } }; int main(){ A* pA = NULL; pA->test(); return 0; } 上面的程序是合法的,C++在编译期间,就找到了pA的函数,发现test非虚函数,并且在其中没有对this指…

2017年12月8日 0条评论 3019点热度 0人点赞 icebmji 阅读全文

环境:win10 64位+vs2017+CMake3.10.0 freeglut的配置: 为什么使用freeglut: OpenGL标准里并没有提供辅助操作和界面显示及操作的功能,最先出现的是aux库,aux的目的是让人们在学习OpenGL的工程中不必为各种平台的环境的细枝末节而消耗精力,但aux的效果并没有想象的那么好,然后出现了glut库,glut是对aux的增强和替代,glut在各个平台得到广泛的支持和维护、扩展。但OpenGL发展速度飞快,glut并不是开源的,而且更新进度也跟不上,上一个版本还是1998年…

2017年11月26日 0条评论 9044点热度 0人点赞 icebmji 阅读全文