2014年2月25日

深度探索C++对象模型读书笔记(2)

摘要: 以下测试平台均为vs 2012指向Data Member的指针测试(1)#include class Base1{public: int val1; int val2;};class Base2{public: int val3; int val4;};class Device : public Base1, public Base2{public: int vald;};void func1( int Device::*dmp, Device * pd ){ printf( "Device::val3 = %d \n", pd->*dmp );}void func2 阅读全文

posted @ 2014-02-25 01:53 kirito 阅读(311) 评论(0) 推荐(0) 编辑

LLVM language 参考手册(译)(2)

摘要: 调用约定(Calling Conventions)LLVMfunctions,callsandinvokes可以带有一个可选的调用约定来指明调用方式。每一对 caller/callee(调用者/被调用者)的调用约定必须相匹配,不然这个程序的行为是未定义的。下面的是LLVM支持的调用约定形式,并且在未来可能会加入更多:“ccc” - The C calling convention这个调用约定(在没有标识其他调用约定时,为默认调用约定)匹配其目标到C调用约定。这个调用约定支持变长参数函数调用并可容忍函数的声明和实现之间存在某些不匹配的地方(像正常的 C一样)“fastcc” - The fast 阅读全文

posted @ 2014-02-25 01:43 kirito 阅读(1599) 评论(1) 推荐(0) 编辑

2014年2月24日

LLVM language 参考手册(译)(1)

摘要: LLVM Language Reference Manual摘要 这个文档是一个LLVM汇编语言的参考手册。LLVM是一个基于Static Single Assignment(SSA - 静态单赋值)表示,提供了类型安全,低级别操作,灵活性和表现“所有”高级语言的能力。他是在LLVM编译策略的各个阶段中使用的通用代码表示。介绍 LLVM的代码表示形式被设计为使用三种不同的格式:1、表示为在内存中编译器中间语言,表示为在磁盘上的位码(适合于即时编译器的快速加载) ,表示为人类可读的汇编语言。LLVM为编译器的高效转换和分析提供了强大的中间语言,同时提供一个自然的方法来调试和可视化的转换。LL.. 阅读全文

posted @ 2014-02-24 20:04 kirito 阅读(2632) 评论(0) 推荐(3) 编辑

2014年2月23日

链接与ELF文件格式的复习

摘要: 在这里复习一下链接的知识:什么是链接(linking):把源代码形成的模块独立编译后组装成一个整体的的过程叫做链接。链接主要过程包括:地址和空间分配(address and storage allocation),符号决议 - 决定使用同名符号中的哪一个(symbol resolution),重定位 -为开始不能决定地址的符号重定位到正确地址(relocation)ELF基本文件结构: .text段 - 存放程序代码(与程序数据分开,好处1、提高缓存命中;2、保证代码只读防止被以外修改;3、多个程序使用一段代码 - 动态链接库).data段 - 存放已初始化的全局数据(因为默认值为0,因此初. 阅读全文

posted @ 2014-02-23 14:24 kirito 阅读(711) 评论(0) 推荐(0) 编辑

2013年10月31日

创建ID3D11Device可能会遇到的问题,不能使用具体的IDXGIAdapter

摘要: 要使用具体硬件的显示适配器创建D3D11必须把driverTypes设为D3D_DRIVER_TYPE_UNKNOWN如下// 创建D3D11设备 HRESULT hr = D3D11CreateDevice( d3dAdapter->GetDXGIAdapter().Get(), driverTypes, 0, creationFlags, featureLevels, totalFeatureLevels, D3D11_SDK_VERSION, &d3dDevice.GetReference(), &feature, &d3dContext.GetRefe.. 阅读全文

posted @ 2013-10-31 21:31 kirito 阅读(1257) 评论(0) 推荐(0) 编辑

2013年5月28日

关于裁剪空间与投影变换矩阵的推导

摘要: 再看irrlicht的数学库中matrix4实现时,对这个透视投影变换矩阵的公式十分疑惑,经过艰苦的奋斗终于搞清楚是怎么一回事在这里和大家分享一下irrlicht中使用的透视矩阵是DirectX风格的,但个人偏好于OpenGL的风格所以下面的实现将会使用OpenGL的风格实现。注意:这里使用的是水平视角和Y:X,DirectX中使用的是垂直视角和X:Y inline void SetPerspectiveFovMatrixLH( f32 fieldOfViewRadians, f32 aspectRatio, f32 zNear, f32 zFar) ... 阅读全文

posted @ 2013-05-28 15:11 kirito 阅读(2749) 评论(1) 推荐(0) 编辑

2013年5月25日

深度探索C++对象模型读书笔记(1)

摘要: 看到《深度探索C++对象模型》的第64页才开始做的笔记,这要是发现书中一个疑惑的地方所以前来和大家探讨一下 这是书中对C++中实现多态时内存的布局描述,其中包括两个类ZooAnimal和Bearclass ZooAnimal{ ZooAnimal() virtual ~ZooAnimal(); virtual void rotate();protected: int loc; String name;};class Bear : public ZooAnimal{ Bear(); ~Bear(); void Rotate(); virtual void dance();po... 阅读全文

posted @ 2013-05-25 23:36 kirito 阅读(276) 评论(0) 推荐(1) 编辑

2013年5月18日

irrlicht1.7.0(2):基础接口

摘要: IEventReceiver.h定义了irrlicht引擎中的事件类型(struct SEvent)和事件接口(class IEventReceiver) 1 struct SEvent 2 { 3 EEVENT_TYPE EventType; 4 union 5 { 6 struct SGUIEvent GUIEvent; //UI响应事件 7 struct SMouseInput MouseInput; //鼠标输入事件 8 struct SKeyInput KeyInput; ... 阅读全文

posted @ 2013-05-18 01:27 kirito 阅读(310) 评论(0) 推荐(0) 编辑

2013年5月15日

编程之美 NIM(1)扩展问题

摘要: N块石头排成一行,每块石头有各自的固定位置。两个玩家依次取石头,每个玩家每次可以取其中任意一块石头,或者相邻的两块石头,石头在游戏过程中不能移位(及编号不会改变),最后能将剩下的石头一次取光的玩家获胜。 扩展问题:若规定最后取光石头的人输,又该如何应对。 由N取比较小的值可以分析得 N=1,输 N=2,赢 N=3,赢 N=4,输 N=5,赢 N=6,赢 N=7,输 ... 可以看出,4只能转变为2或3或1+1,因此必输。 5->4,必赢 6->4,必赢, 7只能变为5或6或1+5或1+4(1+4 -> 4 输)或2+4或2+3或3+3 阅读全文

posted @ 2013-05-15 18:09 kirito 阅读(282) 评论(0) 推荐(0) 编辑

irrlicht1.7.0(1):irrTypes.h

摘要: //因为作者的水平不够所以学习先从irrlicht引擎最基本的地方开始首先我们来看一下irrTypes.h这个文件,这个文件里包含了irrlicht引擎中一些最基本的类型的定义首先是#ifndef __IRR_TYPES_H_INCLUDED__#define __IRR_TYPES_H_INCLUDED__#include "IrrCompileConfig.h"namespace irr这里主要是说明一下IrrCompileConfig.h这个文件,它是包含了irrlicht里一些基本的平台、载入文件类型、底层渲染用SDK相关的宏,这里不与说明大家都能看懂#ifdef 阅读全文

posted @ 2013-05-15 18:08 kirito 阅读(206) 评论(0) 推荐(0) 编辑

导航