zoukankan      html  css  js  c++  java
  • 龙书dx9 chapter5 light的创建和 GetAsyncKeyState()&0x8000f的问题

    笔记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;

    每个向量对应相应光源成员的反射百分比。

  • 相关阅读:
    acm常见算法及例题
    检测数据库各实例session分布情况的sql
    检测数据库大小的sql
    检测数据库各实例session 阻塞 tree的sql
    Oracle 的自治事务 AUTONOMOUS TRANSACTION
    Oracle的 NULL 与 空字符串''
    数据泵 expdp 参数 consistent=y
    mysql 的列转行
    mysql 的行转列
    jboss 到oracle 数据库连接无效的问题
  • 原文地址:https://www.cnblogs.com/dust-fly/p/4136335.html
Copyright © 2011-2022 走看看