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

天行健 君子當自強而不息

D3D中的光照(4)

點光源示例,截圖:

源代碼:

 

/**************************************************************************************
  Demonstrates using a point 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, note that the point light is positioned at the origin.
    D3DXVECTOR3 light_direction(0.0f0.0f0.0f);
    D3DXCOLOR   color 
= WHITE;
    D3DLIGHT9   point_light 
= init_point_light(&light_direction, &color);

    
// set and enable the light
    g_d3d_device->SetLight(0&point_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:55 lovedday 閱讀(550) 評論(0)  編輯 收藏 引用


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


公告

導航

統(tǒng)計

常用鏈接

隨筆分類(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| 欧美成人中文| 黄色亚洲大片免费在线观看| 中文亚洲视频在线| 日韩亚洲精品电影| 男女激情久久| 欧美激情国产高清| 91久久精品视频| 欧美 日韩 国产精品免费观看| 麻豆国产va免费精品高清在线| 99国产精品久久久久久久| 一区在线电影| 欧美日韩一区免费| 亚洲影视九九影院在线观看| 免费在线日韩av| 久久国产66| 久久精品国产亚洲5555| 亚洲一区图片| 在线综合欧美| 在线观看亚洲视频| 欧美激情一区二区三区在线| 亚洲日本黄色| 久久婷婷国产综合精品青草| 夜色激情一区二区| 亚洲电影视频在线| 国产精品美女久久久久久2018| 亚洲欧美国产另类| 国产日韩欧美二区| 模特精品在线| 亚洲免费精品| 女人香蕉久久**毛片精品| 久久久久久有精品国产| 欧美中文字幕在线观看| 午夜一区在线| 香蕉乱码成人久久天堂爱免费| 麻豆精品一区二区综合av| 亚洲在线网站| 欧美在线视频播放| 久久成人免费网| 久久久久久久一区二区| 久久不见久久见免费视频1| 久久精品国产久精国产爱| 欧美在线视频播放| 久久国产日韩| 久久久亚洲成人| 久久综合五月| 欧美在线视频二区| 99re8这里有精品热视频免费 | 日韩亚洲欧美一区| 亚洲国产国产亚洲一二三| 欧美国产精品一区| 国产精品都在这里| 一本色道久久综合狠狠躁的推荐| 亚洲一区中文| 亚洲精品1区2区| 久久国产免费| 欧美精品亚洲精品| 狠狠色综合色区| 午夜视频精品| 亚洲人成77777在线观看网| 久久久久**毛片大全| 国产欧美日韩不卡| 亚洲欧美激情在线视频| 欧美成人一区二免费视频软件| 在线视频精品一区| 久久精品一区二区三区四区| 欧美视频一区二区在线观看| 国语自产精品视频在线看8查询8 | 欧美日韩mv| 精品动漫3d一区二区三区| 一本色道88久久加勒比精品| 亚洲图片激情小说| 久久精品国产清高在天天线 | 久久精品卡一| 亚洲欧洲三级| 亚洲欧美成人一区二区三区| 麻豆久久婷婷| 国产一区二区三区四区三区四| 久久不见久久见免费视频1| 欧美尤物巨大精品爽| 国产亚洲精品aa午夜观看| 欧美成人亚洲成人| 欧美日韩国产综合一区二区| 中文在线资源观看网站视频免费不卡| 久久综合中文色婷婷| 久久一区二区三区国产精品| 中文精品视频| 欧美图区在线视频| 日韩香蕉视频| 亚洲高清在线视频| 久久久精品久久久久| 影音先锋亚洲视频| 日韩视频在线观看| 亚洲第一色在线| 亚洲深夜激情| av成人国产| 美女诱惑黄网站一区| 久久国产精品一区二区| 欧美激情综合亚洲一二区| 欧美一级理论性理论a| 欧美一区二区三区日韩视频| 精品成人久久| 亚洲精品国产系列| 国产精品久久影院| 久久精视频免费在线久久完整在线看| 亚洲欧美日韩一区二区三区在线观看| 国产精品v日韩精品| 性欧美1819sex性高清| 久久精品亚洲国产奇米99| 亚洲国产岛国毛片在线| 亚洲国产一区二区在线| 国产精品网站一区| 夜夜嗨网站十八久久| 亚洲在线观看免费| 欧美性色aⅴ视频一区日韩精品| 亚洲国产高清视频| 国产亚洲综合性久久久影院| 欧美高清在线视频| 国产在线高清精品| 亚洲自拍偷拍网址| 亚洲国产精品va| 中文日韩在线视频| 黄色成人片子| 欧美亚洲三区| 午夜伦欧美伦电影理论片| 国产精品国产三级国产专播品爱网 | 一区二区91| 西瓜成人精品人成网站| 亚洲成在人线av| 亚洲影院一区| 国产九色精品成人porny| 亚洲三级视频| 99国产精品久久久| 欧美岛国激情| 亚洲国产欧美另类丝袜| 最新亚洲视频| 欧美激情片在线观看| 亚洲性夜色噜噜噜7777| 免播放器亚洲| 欧美影院成人| 亚洲欧洲一区二区天堂久久| 欧美精品尤物在线| 亚洲精品免费网站| 久久精品人人做人人爽电影蜜月| 亚洲综合成人在线| 亚洲天堂成人| 国内自拍一区| 欧美日韩亚洲综合一区| 欧美一级久久久久久久大片| 欧美福利一区二区| 亚洲欧美在线一区二区| 狠狠色丁香久久婷婷综合_中| 欧美大片免费| 久久午夜国产精品| 欧美一区二区成人| 99精品视频免费在线观看| 蜜月aⅴ免费一区二区三区 | 在线日韩欧美视频| 国产农村妇女毛片精品久久莱园子 | 老司机一区二区三区| 亚洲色图在线视频| 亚洲精品久久在线| 欧美国产精品中文字幕| 久久婷婷久久| 欧美aⅴ一区二区三区视频| 欧美专区第一页| 香蕉久久久久久久av网站| 亚洲一区三区电影在线观看| 亚洲日本欧美| 亚洲精品影视在线观看| 夜夜嗨av一区二区三区| 亚洲精品国产精品国自产在线| 亚洲午夜激情| 亚洲欧美在线x视频| 亚洲一区二区成人在线观看| 亚洲一区欧美激情| 欧美亚洲专区| 久久久久久久一区| 狼人社综合社区| 欧美二区在线观看| 国产精品福利片| 国产一区二区三区四区hd| 亚洲欧美一区二区三区久久| 亚洲激情一区二区| 久久人人爽人人| 激情婷婷欧美| 欧美一区二区三区在| 亚洲片在线观看| 欧美.日韩.国产.一区.二区| 黄网动漫久久久| 老司机免费视频一区二区三区|