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

天行健 君子當自強而不息

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>
            99pao成人国产永久免费视频| 欧美性大战久久久久久久蜜臀| 欧美成人自拍| 久久久久久久久蜜桃| 欧美有码在线视频| 久久大综合网| 免费观看亚洲视频大全| 欧美二区不卡| 亚洲色图制服丝袜| 午夜在线观看欧美| 久久夜色精品国产| 欧美日韩aaaaa| 国产精品一香蕉国产线看观看| 国产日韩一区二区三区| 亚洲第一中文字幕在线观看| 一本色道久久加勒比88综合| 亚洲欧美综合国产精品一区| 久久天堂av综合合色| 亚洲欧洲日本在线| 亚洲无限av看| 免费精品视频| 国产精品视频yy9099| 亚洲国产精品女人久久久| 亚洲图片欧美日产| 欧美/亚洲一区| 亚洲精品乱码久久久久久黑人| 一本大道久久a久久精品综合| 亚洲男人第一网站| 女人色偷偷aa久久天堂| 国产精品一区二区久久精品| 在线观看欧美黄色| 日韩一级视频免费观看在线| 欧美在线一二三| 亚洲人成7777| 久久香蕉国产线看观看av| 欧美午夜剧场| 日韩午夜在线播放| 理论片一区二区在线| 亚洲性人人天天夜夜摸| 欧美久久精品午夜青青大伊人| 国内成人自拍视频| 欧美在线影院在线视频| 亚洲天堂网站在线观看视频| 欧美精品国产| 亚洲欧洲美洲综合色网| 久久人人超碰| 欧美一级视频精品观看| 欧美亚一区二区| 在线亚洲精品| 亚洲黄色一区| 欧美国产日韩精品| 亚洲国产另类久久精品| 久久综合国产精品台湾中文娱乐网| 亚洲视频日本| 国产精品美女www爽爽爽| 亚洲婷婷综合色高清在线| 亚洲精品免费看| 欧美精品三级日韩久久| 亚洲精品免费在线观看| 亚洲国产成人精品女人久久久| 久久免费高清| 亚洲韩国精品一区| 欧美成人中文字幕在线| 美女日韩欧美| 亚洲国产小视频| 亚洲第一福利社区| 欧美成人午夜激情视频| 亚洲毛片一区| 日韩午夜电影av| 国产精品美女一区二区| 久久都是精品| 免费视频亚洲| 亚洲一区二区在线免费观看| 亚洲视频一区在线观看| 国产色婷婷国产综合在线理论片a| 欧美一级艳片视频免费观看| 亚洲宅男天堂在线观看无病毒| 国产精品视频区| 久久亚洲国产精品一区二区| 久久久精品999| 最新国产成人av网站网址麻豆| 亚洲国产婷婷| 国产精品国产三级国产专区53| 欧美一级片在线播放| 亚洲三级毛片| 一区二区三区久久| 亚洲在线视频| 在线看片日韩| 亚洲美女中文字幕| 国产一区二区三区久久久| 久久久久久午夜| 欧美高清在线精品一区| 亚洲女人小视频在线观看| 久久国产欧美| 一区二区三区日韩在线观看| 亚洲免费在线精品一区| 亚洲高清在线观看| 亚洲婷婷国产精品电影人久久| 国产一区二区三区在线观看精品 | 一区二区精品在线| 国产一区二区av| 日韩视频精品在线| 国语精品中文字幕| 亚洲毛片在线看| 在线观看三级视频欧美| 亚洲天堂免费观看| 日韩视频久久| 久久久久综合网| 欧美一区二区在线免费观看| 欧美成人一区二区三区片免费| 午夜视频一区| 欧美日韩一区二区三区在线视频| 久久夜色撩人精品| 国产乱理伦片在线观看夜一区| 亚洲国产一区视频| 亚洲福利视频三区| 久久精品国产精品| 久久久av毛片精品| 国产精品一区久久久| 日韩午夜av电影| 日韩视频免费| 欧美风情在线观看| 欧美激情精品久久久久久| 国际精品欧美精品| 欧美一区1区三区3区公司| 亚洲免费中文| 欧美午夜视频在线观看| 日韩午夜中文字幕| 亚洲最新在线视频| 欧美国产精品va在线观看| 免费国产一区二区| 欲色影视综合吧| 久久网站免费| 欧美成人一区二区在线| 亚洲国产精品成人精品| 久久综合伊人77777蜜臀| 久久全国免费视频| 影音先锋久久精品| 裸体丰满少妇做受久久99精品| 久久中文字幕一区二区三区| 韩国av一区二区三区| 久久精品日产第一区二区| 久久裸体视频| 亚洲国产日韩一区| 欧美xx69| 久久成人资源| 亚洲欧美国产77777| 香港久久久电影| 国产在线播精品第三| 久久久久综合网| 亚洲国产精品一区二区第一页 | 日韩视频第一页| 亚洲自拍偷拍网址| 国产美女一区二区| 欧美中文字幕视频| 欧美成人激情视频免费观看| 亚洲日韩欧美一区二区在线| 欧美激情四色| 亚洲欧美日本日韩| 蜜桃视频一区| 一区二区三区欧美在线| 国产精品一区二区三区久久| 久久av一区二区三区| 欧美激情1区2区| 亚洲一区二区三区四区五区黄| 国产精品一区二区你懂的| 久久一区二区三区国产精品| 亚洲人成网在线播放| 亚洲欧美影院| 亚洲国产欧洲综合997久久| 欧美天堂亚洲电影院在线观看| 欧美夜福利tv在线| 亚洲人成绝费网站色www| 欧美亚洲日本网站| 亚洲日本激情| 国产综合欧美| 国产精品a久久久久久| 久久久精品国产免费观看同学| 亚洲国产精品高清久久久| 午夜在线观看欧美| 亚洲精品综合精品自拍| 国产精品自在欧美一区| 欧美成人激情视频| 欧美在线视频免费| 亚洲视频久久| 亚洲精品国久久99热| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲视频在线观看视频| 亚洲激情欧美| 在线观看视频一区二区| 国产午夜精品一区理论片飘花 | 亚洲人成精品久久久久| 国产精品一区二区黑丝| 欧美日韩国产首页| 免费成人av在线| 久久精品99久久香蕉国产色戒| 在线视频一区观看| 亚洲精品久久久久久久久久久久| 老司机aⅴ在线精品导航| 久久不见久久见免费视频1|