青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當自強而不息

D3D中的光照(3)

平行光示例:

The GetAsyncKeyState function determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState.

Syntax

SHORT GetAsyncKeyState(      
    int vKey
);

Parameters

vKey
[in] Specifies one of 256 possible virtual-key codes. For more information, see Virtual-Key Codes.

Return Value

If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. However, you should not rely on this last behavior; for more information, see the Remarks.

截圖:

源代碼:

/**************************************************************************************
  Demonstrates using a directional light with D3DX objects.  
  You can orbit the scene using the left and right arrow keys.  
  In addition you can elevate the camera with the up and down arrow keys.  
 *************************************************************************************
*/

#include 
"d3dUtility.h"

#pragma warning(disable : 
4100)

#define MESH_TEAPOT        0
#define MESH_SPHERE        1
#define MESH_TORUS        2
#define MESH_CYLINDER    3
#define NUM_MESH        4

const int WIDTH  = 640;
const int HEIGHT = 480;

IDirect3DDevice9
*        g_d3d_device  = NULL;
ID3DXMesh
*                g_object_meshes[NUM_MESH];
D3DXMATRIX                g_world_matrices[NUM_MESH];
D3DMATERIAL9            g_materials[NUM_MESH];

////////////////////////////////////////////////////////////////////////////////////////////////////

bool setup()
{    
    
// create objects
    D3DXCreateTeapot(g_d3d_device, &g_object_meshes[MESH_TEAPOT], NULL);
    D3DXCreateSphere(g_d3d_device, 
1.0f2020&g_object_meshes[MESH_SPHERE], NULL);
    D3DXCreateTorus(g_d3d_device, 
0.5f1.0f2020&g_object_meshes[MESH_TORUS], NULL);
    D3DXCreateCylinder(g_d3d_device, 
0.5f1.0f2.0f2020&g_object_meshes[MESH_CYLINDER], NULL);

    
// build world matrices - position the objects in world space
    D3DXMatrixTranslation(&g_world_matrices[MESH_TEAPOT],     0.0f,  2.0f0.0f);
    D3DXMatrixTranslation(
&g_world_matrices[MESH_SPHERE],     0.0f-2.0f0.0f);
    D3DXMatrixTranslation(
&g_world_matrices[MESH_TORUS],    -3.0f,  0.0f0.0f);
    D3DXMatrixTranslation(
&g_world_matrices[MESH_CYLINDER],     3.0f,  0.0f0.0f);

    
// setup the object's materials
    g_materials[MESH_TEAPOT]   = RED_MATERIAL;
    g_materials[MESH_SPHERE]   
= BLUE_MATERIAL;
    g_materials[MESH_TORUS]    
= GREEN_MATERIAL;
    g_materials[MESH_CYLINDER] 
= YELLOW_MATERIAL;

    
// setup a directional light
    D3DXVECTOR3 light_direction(1.0f-0.0f0.25f);
    D3DXCOLOR   color 
= WHITE;
    D3DLIGHT9   dir_light 
= init_directional_light(&light_direction, &color);

    
// set and enable the light
    g_d3d_device->SetLight(0&dir_light);
    g_d3d_device
->LightEnable(0, TRUE);

    
// turn off specular lighting and instruct Direct3D to renormalize normals
    g_d3d_device->SetRenderState(D3DRS_NORMALIZENORMALS, TRUE);
    g_d3d_device
->SetRenderState(D3DRS_SPECULARENABLE, FALSE);

    
// set the projection matrix
    D3DXMATRIX proj;
    D3DXMatrixPerspectiveFovLH(
&proj, D3DX_PI * 0.25f, (float)WIDTH/HEIGHT, 1.0f1000.0f);
    g_d3d_device
->SetTransform(D3DTS_PROJECTION, &proj);
    
    
return true;
}

void cleanup()
{
    
for(int i = 0; i < NUM_MESH; i++)
        safe_release
<ID3DXMesh*>(g_object_meshes[i]);
}

bool display(float time_delta)
{
    
// update the scene: update camera position

    
static float angle = (3.0f * D3DX_PI) / 2.0f;
    
static float height = 5.0f;

    
if(GetAsyncKeyState(VK_LEFT) & 0x8000f)
        angle 
-= 0.5f * time_delta;

    
if(GetAsyncKeyState(VK_RIGHT) & 0x8000f)
        angle 
+= 0.5f * time_delta;

    
if(GetAsyncKeyState(VK_UP) & 0x8000f)
        height 
+= 5.0f * time_delta;

    
if(GetAsyncKeyState(VK_DOWN) & 0x8000f)
        height 
-= 5.0f * time_delta;

    D3DXVECTOR3 position(cosf(angle) 
* 7.0f, height, sinf(angle) * 7.0f);
    D3DXVECTOR3 target(
0.0f0.0f0.0f);
    D3DXVECTOR3 up(
0.0f1.0f0.0f);

    D3DXMATRIX view_matrix;
    D3DXMatrixLookAtLH(
&view_matrix, &position, &target, &up);

    g_d3d_device
->SetTransform(D3DTS_VIEW, &view_matrix);

    
// draw the scene

    g_d3d_device
->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0x000000001.0f0);

    g_d3d_device
->BeginScene();

    
for(int i = 0; i < NUM_MESH; i++)
    {
        
// set material and world matrix for ith object, then render the ith object.
        g_d3d_device->SetMaterial(&g_materials[i]);
        g_d3d_device
->SetTransform(D3DTS_WORLD, &g_world_matrices[i]);
        g_object_meshes[i]
->DrawSubset(0);
    }
    
    g_d3d_device
->EndScene();

    g_d3d_device
->Present(NULL, NULL, NULL, NULL);

    
return true;
}

LRESULT CALLBACK wnd_proc(HWND hwnd, UINT msg, WPARAM word_param, LPARAM long_param)
{
    
switch(msg)
    {
    
case WM_DESTROY:
        PostQuitMessage(
0);
        
break;

    
case WM_KEYDOWN:
        
if(word_param == VK_ESCAPE)
            DestroyWindow(hwnd);
        
break;
    }

    
return DefWindowProc(hwnd, msg, word_param, long_param);
}

int WINAPI WinMain(HINSTANCE inst, HINSTANCE, PSTR cmd_line, int cmd_show)
{
    
if(! init_d3d(inst, WIDTH, HEIGHT, true, D3DDEVTYPE_HAL, &g_d3d_device))
    {
        MessageBox(NULL, 
"init_d3d() - failed."0, MB_OK);
        
return 0;
    }

    
if(! setup())
    {
        MessageBox(NULL, 
"Steup() - failed."0, MB_OK);
        
return 0;
    }

    enter_msg_loop(display);

    cleanup();
    g_d3d_device
->Release();

    
return 0;
}


下載源程序

posted on 2008-03-16 19:35 lovedday 閱讀(601) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一本大道在线| 快射av在线播放一区| 欧美视频导航| 在线视频一区观看| 一区二区精品在线观看| 国产精品久久久久久久久久尿 | 亚洲大片免费看| 亚洲欧美久久久| 午夜精品三级视频福利| 在线观看成人网| 亚洲欧洲综合另类| 国产精品二区二区三区| 久久久久久国产精品mv| 欧美99久久| 香蕉成人久久| 另类人畜视频在线| 亚洲一区中文| 久久永久免费| 亚洲永久网站| 久久综合网hezyo| 亚洲欧美日本国产有色| 久久久一二三| 午夜精品久久久久久久99水蜜桃 | 欧美激情性爽国产精品17p| 欧美精品免费在线| 欧美中在线观看| 久久久久久伊人| 亚洲免费影视| 欧美成人激情视频免费观看| 午夜精品亚洲| 欧美人成网站| 欧美成人精品| 国产欧美日韩免费| 亚洲美女在线国产| 亚洲第一区色| 欧美一级大片在线免费观看| 日韩视频在线永久播放| 欧美一区二区视频网站| 亚洲天堂成人在线观看| 欧美成人精品在线视频| 久久亚洲春色中文字幕| 国产精品hd| 亚洲精品影视在线观看| 亚洲电影在线看| 久久国产乱子精品免费女| 亚洲欧美日韩一区二区在线| 欧美成人综合网站| 欧美成黄导航| 在线观看国产欧美| 欧美一二三区精品| 久久av一区二区三区| 国产精品久久网站| 正在播放亚洲一区| 亚洲私人影吧| 欧美日韩一区精品| 亚洲精品系列| 在线视频欧美日韩精品| 欧美日韩不卡一区| 亚洲精品美女在线| 一本色道久久综合亚洲精品不卡| 欧美大片一区| 在线观看日韩欧美| 久久成人在线| 久久亚洲午夜电影| 一区二区三区在线视频播放| 久久高清一区| 欧美成人一区二区三区片免费| 欧美顶级少妇做爰| 亚洲国产精品尤物yw在线观看| 免费成人高清| 欧美成人午夜视频| 亚洲免费av片| 欧美日韩在线精品| 中国成人在线视频| 久久精品国产一区二区电影 | 在线视频欧美日韩精品| 亚洲午夜av| 国产麻豆9l精品三级站| 欧美在线观看视频一区二区| 久久精品毛片| 亚洲激情视频在线| 欧美深夜福利| 午夜欧美大尺度福利影院在线看| 在线看片一区| 欧美激情成人在线| 99pao成人国产永久免费视频| 国产伦精品一区二区三区免费迷 | 欧美亚洲综合网| 国产免费成人av| 久久精品欧美日韩| 亚洲国产精品传媒在线观看| 99热精品在线观看| 国产欧美一区二区色老头| 欧美一级视频精品观看| 亚洲高清av在线| 午夜亚洲精品| 亚洲国产成人精品女人久久久| 亚洲欧美成人一区二区在线电影| 亚洲大片av| 欧美日韩中文字幕| 久久久五月天| 亚洲一品av免费观看| 蜜臀a∨国产成人精品| 亚洲午夜久久久| 黄色av成人| 国产精品久久久久久久第一福利| 久久一区二区三区四区五区| 99国产一区| 国产一区二区三区在线观看精品| 亚洲视频在线观看| 久久青青草综合| 亚洲香蕉在线观看| 亚洲国产合集| 国产亚洲女人久久久久毛片| 欧美日韩视频一区二区三区| 久久精品国产69国产精品亚洲| 欧美专区在线观看| 99精品视频免费观看| 在线播放一区| 国产日韩欧美成人| 国产精品高潮在线| 欧美暴力喷水在线| 久久精品99久久香蕉国产色戒| 久久久精品欧美丰满| 一区二区三区免费网站| 国产综合色产在线精品| 国产精品视频导航| 欧美日韩国产不卡在线看| 免费中文字幕日韩欧美| 久久久久久电影| 欧美在线视频网站| 亚洲综合国产精品| 在线亚洲欧美视频| 亚洲视频你懂的| 中日韩男男gay无套| 99视频精品| 中文一区在线| 亚洲婷婷在线| 亚洲先锋成人| 亚洲免费中文字幕| 亚洲欧美精品一区| 欧美亚洲日本国产| 欧美在线视频全部完| 久久国内精品自在自线400部| 欧美激情视频一区二区三区在线播放| 亚洲欧洲在线免费| 亚洲国产91精品在线观看| 1769国内精品视频在线播放| 激情一区二区三区| 国自产拍偷拍福利精品免费一| 欧美mv日韩mv国产网站| 欧美福利在线观看| 欧美日韩一级大片网址| 欧美视频不卡| 国产午夜精品一区二区三区视频| 久久伊人精品天天| 欧美国内亚洲| 欧美性猛交xxxx免费看久久久| 欧美一区二区三区四区夜夜大片| 欧美成年人视频| 亚洲精品欧美日韩| 宅男精品视频| 久久久av毛片精品| 欧美激情 亚洲a∨综合| 国产精品久久999| 国产日韩欧美一区二区三区在线观看 | 亚洲高清不卡| 99国产精品久久| 欧美一区二区女人| 欧美a级一区二区| 国产精品v亚洲精品v日韩精品| 久久国产手机看片| 久久久综合网站| 欧美日本不卡视频| 国产视频欧美| 91久久精品国产91久久性色| 亚洲欧美电影在线观看| 久久亚洲高清| av成人动漫| 老色批av在线精品| 国产精品视频专区| 亚洲电影免费观看高清完整版| 国产精品亚洲а∨天堂免在线| 欧美电影免费观看高清| 国产毛片一区| 亚洲最新色图| 免费永久网站黄欧美| 99re6热在线精品视频播放速度| 欧美大片一区| 欧美一级精品大片| 欧美日韩一区二区在线| 亚洲大片一区二区三区| 欧美制服丝袜第一页| 亚洲精品一区二区三区不| 久久人人97超碰人人澡爱香蕉| 久久国产精彩视频| 国产精品久久久久久久久婷婷 | 亚洲欧美日韩精品久久久| 欧美成人一区二区三区片免费| 蜜臀va亚洲va欧美va天堂|