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

天行健 君子當自強而不息

D3D中的光照(5)

聚光燈示例,截圖:

源代碼:

/**************************************************************************************
  Demonstrates using a spot light with D3DX objects.  
  You can move the spotlight around the scene with the 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;
ID3DXMesh
*                g_object_meshes[NUM_MESH];
D3DXMATRIX                g_world_matrices[NUM_MESH];
D3DMATERIAL9            g_materials[NUM_MESH];
D3DLIGHT9                g_spot_light;

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

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.5f2.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);

    D3DXMATRIX rx;
    D3DXMatrixRotationX(
&rx, D3DX_PI * 0.5f);
    g_world_matrices[MESH_CYLINDER] 
*= rx;

    
// 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;

    
for(int i = 0; i < NUM_MESH; i++)
        g_materials[i].Power 
= 20.0f;

    
// setup a spot light
    D3DXVECTOR3 light_pos(0.0f0.0f-5.0f);
    D3DXVECTOR3 light_dir(
0.0f0.0f1.0f);
    D3DXCOLOR   color 
= WHITE;
    g_spot_light 
= init_spot_light(&light_pos, &light_dir, &color);

    
// set and enable the light
    g_d3d_device->SetLight(0&g_spot_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, TRUE);

    
// position and aim the camera
    D3DXVECTOR3 position(0.0f0.0f-5.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);

    
// set the projection matrix
    D3DXMATRIX proj;
    D3DXMatrixPerspectiveFovLH(
&proj, D3DX_PI * 0.5f, (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)
{
    
// move spot light around based on keyboard input

    
if(GetAsyncKeyState(VK_LEFT) & 0x8000f)
        g_spot_light.Direction.x 
-= 0.5f * time_delta;

    
if(GetAsyncKeyState(VK_RIGHT) & 0x8000f)
        g_spot_light.Direction.x 
+= 0.5f * time_delta;

    
if(GetAsyncKeyState(VK_UP) & 0x8000f)
        g_spot_light.Direction.y 
+= 0.5f * time_delta;

    
if(GetAsyncKeyState(VK_DOWN) & 0x8000f)
        g_spot_light.Direction.y 
-= 0.5f * time_delta;

    
// update the light
    g_d3d_device->SetLight(0&g_spot_light);
    g_d3d_device
->LightEnable(0, TRUE);

    
// 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 20:46 lovedday 閱讀(672) 評論(0)  編輯 收藏 引用

公告

導航

統計

常用鏈接

隨筆分類(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>
            亚洲精品乱码久久久久久蜜桃91| 亚洲精品一二三| 女女同性精品视频| 亚洲女人天堂成人av在线| 欧美日韩不卡合集视频| 日韩午夜av电影| 欧美亚洲日本一区| 国产在线不卡视频| 欧美成人黄色小视频| 一区二区三区久久网| 久久久久国产一区二区三区四区| 久久久91精品国产一区二区三区| 尹人成人综合网| 欧美高清在线一区| 午夜精品福利在线观看| 亚洲高清在线视频| 欧美在线免费视屏| 夜色激情一区二区| 国产精品久久久久永久免费观看| 欧美成人精品不卡视频在线观看| 欧美日韩一区二区三区免费| 9色国产精品| 亚洲成人在线视频网站| 亚洲一区二区三区精品视频| 黄色国产精品| 国产嫩草影院久久久久| 亚洲综合色网站| 亚洲精品美女| 欧美一区亚洲| 亚洲欧美在线播放| 久久久亚洲人| 老妇喷水一区二区三区| 久久久国产91| 国产精品国产三级国产普通话三级| 亚洲最新视频在线播放| 欧美一区三区二区在线观看| 一区二区三区欧美激情| 久久三级福利| 美玉足脚交一区二区三区图片| 欧美成人一品| 狂野欧美一区| 久久久久久黄| 亚洲天堂av电影| 亚洲无线一线二线三线区别av| 亚洲精品社区| 日韩午夜av在线| 久久夜色精品国产亚洲aⅴ| 欧美日韩伊人| 中文在线资源观看网站视频免费不卡| 久久免费视频网站| 免费看成人av| 狠狠综合久久av一区二区老牛| 国产精品久久久久免费a∨大胸| 亚洲欧洲日韩女同| 亚洲国产精品ⅴa在线观看| 亚洲高清色综合| 欧美一区在线视频| 国产午夜精品久久久| 合欧美一区二区三区| 香蕉成人伊视频在线观看| 国产精品99久久久久久www| 欧美色另类天堂2015| 国产日韩一区二区三区在线| 午夜精品999| 免费久久99精品国产自| 亚洲国产你懂的| 欧美国产精品日韩| 亚洲视频在线一区| 久久综合狠狠综合久久综青草| 99日韩精品| 欧美国产日产韩国视频| 在线午夜精品自拍| 国产精品视频不卡| 亚洲国产欧美久久| 国产精品99久久不卡二区| 亚洲精品欧美日韩| 国产精品捆绑调教| 久久精品九九| 亚洲视频1区| 国产欧美日韩亚洲一区二区三区| 亚洲国产日韩欧美综合久久| 欧美激情一区二区三区在线 | 亚洲欧美日韩在线高清直播| 91久久精品国产91性色| 欧美激情视频在线播放| 国产女人水真多18毛片18精品视频| 国产亚洲欧美激情| 亚洲电影免费观看高清完整版在线观看 | 亚洲片在线资源| 午夜亚洲福利| 久久精品91| 国产日韩一区二区三区| 久久中文在线| 欧美日韩三级| 美女诱惑一区| 欧美视频在线播放| 久久青青草原一区二区| 亚洲一区观看| 久久精品国产免费| 亚洲欧美一区二区视频| 中国女人久久久| 国模叶桐国产精品一区| 亚洲成色最大综合在线| 国产精品久久777777毛茸茸| 久久精品官网| 久久精品日韩欧美| 国产精品99久久99久久久二8| 久久免费视频网| 欧美日韩日本国产亚洲在线| 久久综合久久综合久久综合| 欧美精品一区二区三区视频| 国产久一道中文一区| 欧美不卡激情三级在线观看| 国产精品久久久久9999高清| 欧美二区乱c少妇| 国产女精品视频网站免费| 亚洲国产mv| 亚洲第一页中文字幕| 欧美亚洲综合在线| 亚洲男人天堂2024| 欧美日韩国产在线播放网站| 欧美99久久| 黄色免费成人| 欧美一级精品大片| 欧美亚洲免费| 欧美午夜精品| 久久九九热re6这里有精品| 欧美视频不卡| 最新日韩在线| 日韩网站免费观看| 在线亚洲欧美专区二区| 日韩手机在线导航| 欧美国产精品劲爆| 亚洲电影观看| 日韩午夜免费| 欧美激情网友自拍| 最近中文字幕mv在线一区二区三区四区| 浪潮色综合久久天堂| 欧美一区二区三区四区在线观看| 亚洲高清视频的网址| 国产一区二区三区免费不卡| 中国av一区| 午夜精品免费| 欧美日韩亚洲天堂| 国产精品99久久久久久久久| 亚洲自拍偷拍视频| 久久综合给合久久狠狠狠97色69| 91久久夜色精品国产网站| 久久久最新网址| 欧美激情第二页| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲精品国产日韩| 一区二区不卡在线视频 午夜欧美不卡在 | 黄色日韩网站视频| 欧美一区二区三区视频| 久久精品99国产精品| 国产一区二区三区在线免费观看| 免费久久99精品国产| 免费一级欧美片在线播放| 国内精品免费午夜毛片| 亚洲第一精品福利| 亚洲久色影视| 999亚洲国产精| 亚洲在线一区| 国语对白精品一区二区| 久久网站免费| 日韩亚洲视频在线| 亚洲欧美日韩一区二区三区在线| 久久精品人人做人人爽| 欧美激情在线观看| 亚洲一区二区在线免费观看视频 | 亚洲欧美久久久| 国产欧美日韩一区二区三区在线观看 | 亚洲第一综合天堂另类专| 欧美xart系列高清| 在线亚洲欧美视频| 美女视频黄 久久| 亚洲尤物视频网| 在线精品国产成人综合| 欧美视频一区在线观看| 久久嫩草精品久久久精品| 日韩视频一区二区三区| 久久尤物视频| 午夜精品视频一区| 亚洲毛片在线观看| 狠狠色丁香久久婷婷综合丁香| 亚洲专区在线| 亚洲国产日本| 久久只精品国产| 欧美一区二区性| 亚洲午夜国产一区99re久久| 亚洲国产成人午夜在线一区| 久久不见久久见免费视频1| 欧美电影免费观看网站| 久久精品女人| 亚洲欧美日韩中文视频| 99在线视频精品| 在线电影国产精品| 国产日韩欧美在线播放不卡| 国产精品sm|