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

天行健 君子當自強而不息

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)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   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>
            欧美一区二区三区成人| 国产精品三区www17con| 男女视频一区二区| 亚洲尤物精选| 夜夜爽av福利精品导航| 一区二区欧美日韩视频| 在线一区二区视频| 午夜久久美女| 狼狼综合久久久久综合网| 麻豆精品国产91久久久久久| 久久男女视频| 你懂的网址国产 欧美| 久热精品视频在线观看| 欧美成人一区二区| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美激情精品久久久久久免费印度| 美女精品网站| 最新中文字幕亚洲| 亚洲九九精品| 久久国产天堂福利天堂| 欧美激情1区2区3区| 欧美午夜不卡视频| 激情小说另类小说亚洲欧美| 亚洲人午夜精品| 小黄鸭精品密入口导航| 免费看av成人| 午夜精品久久久久久久久久久| 玖玖国产精品视频| 国产精品有限公司| 99国产精品私拍| 久久中文字幕一区| 亚洲一区二区三区在线观看视频| 久久久精品动漫| 国产精品欧美经典| 亚洲精品免费在线| 久久人人97超碰人人澡爱香蕉| 亚洲看片免费| 玖玖视频精品| 这里只有精品电影| 久热精品视频在线观看| 国产欧美日韩综合| 亚洲欧美日韩电影| 亚洲精品在线看| 欧美**人妖| 亚洲激情六月丁香| 久久裸体艺术| 亚洲男人av电影| 欧美天天视频| 在线亚洲观看| 日韩午夜高潮| 欧美久久电影| 99国产精品视频免费观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 先锋资源久久| 国产一区二区三区四区| 欧美中文字幕在线播放| 亚洲专区一区二区三区| 国产精品久久毛片a| 亚洲女性喷水在线观看一区| 日韩亚洲一区在线播放| 欧美日韩午夜在线| 在线午夜精品| 一区二区三区精品久久久| 欧美日韩在线免费视频| 亚洲午夜成aⅴ人片| 一区二区三区久久久| 国产精品久久久久久久久久免费 | 久久久精品网| 国产有码在线一区二区视频| 久久久精品动漫| 欧美中文字幕在线| 影音先锋一区| 亚洲成人资源网| 欧美高清影院| 亚洲伊人久久综合| 亚洲一区3d动漫同人无遮挡| 国产精品入口66mio| 亚洲自拍偷拍麻豆| 午夜精品久久久久久久99樱桃| 韩国三级在线一区| 亚洲二区视频| 国产精品毛片a∨一区二区三区|国 | 欧美视频一区二区| 亚洲欧美亚洲| 久久福利资源站| 亚洲破处大片| 亚洲免费视频在线观看| 亚洲欧美一区二区三区在线| 狠狠色综合网站久久久久久久| 欧美黄色免费| 国产精品vvv| 欧美成人免费在线视频| 欧美性片在线观看| 久久婷婷影院| 欧美日韩在线不卡一区| 久久色中文字幕| 欧美日韩国产在线看| 欧美尤物一区| 欧美理论在线| 久久永久免费| 国产精品va| 欧美国产日韩a欧美在线观看| 欧美破处大片在线视频| 久久午夜色播影院免费高清| 欧美精品在线观看91| 久久精品av麻豆的观看方式| 欧美成人精品1314www| 久久精品久久99精品久久| 欧美激情视频网站| 噜噜噜在线观看免费视频日韩| 国产精品成人播放| 亚洲激情婷婷| 亚洲电影视频在线| 亚洲综合色丁香婷婷六月图片| 亚洲精品美女在线观看播放| 欧美亚洲一区三区| 亚洲另类春色国产| 久久久不卡网国产精品一区| 午夜精彩视频在线观看不卡| 欧美国产日本| 亚洲国产成人精品女人久久久| 国产揄拍国内精品对白| 亚洲午夜精品17c| 亚洲视频欧美在线| 欧美黄色日本| 亚洲激情一区| 亚洲国产电影| 免费观看在线综合| 久热精品在线| 一区二区三区在线观看国产| 欧美一级日韩一级| 欧美一区午夜视频在线观看| 欧美日韩在线视频观看| 亚洲精品免费网站| 亚洲精品婷婷| 欧美黄色一级视频| 亚洲精品免费在线播放| 亚洲精品一区二区网址| 嫩模写真一区二区三区三州| 猛男gaygay欧美视频| 激情一区二区三区| 久久精品成人欧美大片古装| 久久亚洲国产精品一区二区 | 亚洲国产91精品在线观看| 亚洲欧洲一区二区三区| 蜜桃精品久久久久久久免费影院| 美女图片一区二区| 91久久综合| 欧美黄色一级视频| 99视频有精品| 午夜精品久久一牛影视| 国产亚洲欧美一区| 久久福利毛片| 老司机午夜精品视频| 亚洲国产精品久久久久秋霞影院| 蜜乳av另类精品一区二区| 亚洲激情视频网| 在线中文字幕不卡| 国产欧美在线观看一区| 欧美在线影院| 亚洲国产高清自拍| 亚洲免费人成在线视频观看| 国产亚洲网站| 欧美韩日一区二区三区| 日韩天堂av| 久久精品国亚洲| 亚洲精品日韩一| 国产精品一区视频网站| 美日韩在线观看| 亚洲欧美色一区| 亚洲国产精品久久久久| 午夜激情久久久| 亚洲精品资源美女情侣酒店| 国产精品欧美一区喷水| 欧美**字幕| 欧美中文字幕精品| 狠狠色香婷婷久久亚洲精品| 欧美另类69精品久久久久9999| 亚洲永久免费视频| 亚洲国产日韩精品| 欧美专区在线| 在线视频欧美日韩| 在线观看久久av| 国产欧美日韩亚洲| 欧美日韩亚洲国产一区| 久久久噜噜噜久噜久久| 亚洲四色影视在线观看| 欧美激情一区二区三级高清视频| 欧美一级大片在线观看| 亚洲精品麻豆| 在线精品亚洲一区二区| 国产精品日韩在线观看| 欧美日韩a区| 欧美ed2k| 毛片一区二区三区| 午夜国产一区| 亚洲香蕉在线观看| 9色精品在线| 99成人精品| 日韩一级黄色片|