笔记1:当我们找个文本,按下物理按键a aaaaa时候,会发现第一次会有隔断的时间。
参考:http://tieba.baidu.com/p/1829831956
GetAsyncKeyState() 的返回值怎么理解?
实例代码里有if( ::GetAsyncKeyState(VK_RIGHT) & 0x8000f )这一句,按下→键后,得到 0x1
void main() { static int testInt=0; while (1) { if(short a =( ::GetAsyncKeyState(VK_RIGHT)))// { cout<<a<<endl; cout<<testInt++<<"次数"<<endl; } } }
上面代码结果发现-32767出现了一次。
if(short a =( ::GetAsyncKeyState(VK_RIGHT))&0x8000f)后,按下只输出一次 1
其中short的负数以补码的形式存储在计算机中, -32767即是0x8001 -32768为0x8000
总结:1.当我们持续按键不松开,使用GetAsyncKeyState(VK_RIGHT))&0x8000f)只返回一次真;2.0x8000f其中起始的8没有起作用
笔记2: dx9中的light
1.光源的几种: 点光源 方向光源 聚光灯; 主要区别是影响的 范围和方向不同
2. 光源内的几种组成: 环境光(世界都亮了)、漫反射光(均匀反射)、镜面反射 ; 主要区别: (垂直同一距离上观察者的角度会不会影响明暗效果? 镜面反射会,漫反射不会)
3. 材质(material) : 材质允许我们定义表面反射灯光的百分比;定义一个白色光源,当物体反射100%rgb时,物体呈现白色;当物体material定义为100%red,呈红色
typedef struct _D3DMATERIAL9 { D3DCOLORVALUE Diffuse; /* Diffuse color RGBA */ D3DCOLORVALUE Ambient; /* Ambient color RGB */ D3DCOLORVALUE Specular; /* Specular 'shininess' */ D3DCOLORVALUE Emissive; /* Emissive color RGB */ float Power; /* Sharpness if specular highlight */ } D3DMATERIAL9;
每个向量对应相应光源成员的反射百分比。