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

天行健 君子當自強而不息

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>
            欧美.com| 一本色道久久综合亚洲精品按摩 | 欧美日韩999| 欧美视频日韩| 欧美精品www| 欧美欧美天天天天操| 欧美精品免费看| 欧美日韩视频不卡| 国产精品视频免费在线观看| 国产精品日韩欧美大师| 国产精品免费在线| 极品尤物一区二区三区| 91久久国产综合久久| 正在播放欧美视频| 久久久久国产精品麻豆ai换脸| 欧美ed2k| 这里只有精品丝袜| 久久久精品国产免大香伊| 久久国产精品99国产| 亚洲精品你懂的| 日韩一级二级三级| 亚洲欧美清纯在线制服| 久久亚洲精品一区二区| 91久久精品网| 亚洲精品在线观| 亚洲一区3d动漫同人无遮挡| 在线一区日本视频| 欧美一级大片在线免费观看| 老鸭窝亚洲一区二区三区| 亚洲国产精品久久久久秋霞影院| 亚洲韩国日本中文字幕| 亚洲一区二区三区高清不卡| 亚洲人成网站色ww在线| 亚洲一区成人| 国产日韩亚洲| 一区二区免费在线观看| 亚洲永久免费精品| 美女视频黄免费的久久| 国产精品多人| 亚洲激情自拍| 欧美亚洲专区| 亚洲精品一区中文| 美日韩丰满少妇在线观看| 国产精品人人做人人爽| 亚洲伦理久久| 欧美国产视频日韩| 欧美一区1区三区3区公司| 欧美国产在线电影| 激情视频亚洲| 久久久久久久一区二区三区| 一本久久a久久精品亚洲| 日韩一级欧洲| 欧美美女福利视频| 国产一区二区在线观看免费播放| 在线看片欧美| 久久精品国产久精国产爱| 亚洲精品乱码久久久久久按摩观| 香蕉久久精品日日躁夜夜躁| 久久精品亚洲精品国产欧美kt∨| 国产精品免费视频观看| 在线视频精品| 亚洲国内高清视频| 欧美成人精品在线播放| 欧美一区二区高清在线观看| 一区二区精品在线| 久久久亚洲综合| 久久亚洲免费| 国产精品第十页| 亚洲激情视频| 美国十次成人| 久久激情视频久久| 欧美伦理一区二区| 亚洲精品久久嫩草网站秘色| 欧美电影免费观看大全| 性欧美大战久久久久久久久| 国产精品久久久久高潮| 亚洲一区免费| 亚洲少妇自拍| 国产精品家教| 亚洲欧美久久| 久久成人精品| 亚洲欧洲中文日韩久久av乱码| 免费视频亚洲| 欧美日韩mv| 亚洲欧美中日韩| 一区二区三区鲁丝不卡| aa成人免费视频| 国产情侣一区| 久久婷婷蜜乳一本欲蜜臀| 久久久噜噜噜久久中文字免| 亚洲国产视频一区| 亚洲日韩第九十九页| 国产精品久久久久9999| 久久国产精品电影| 亚洲伊人第一页| 亚洲欧美精品一区| 国产综合香蕉五月婷在线| 亚洲第一偷拍| 欧美精品一区在线播放| 香蕉久久国产| 久久久91精品国产一区二区三区 | 欧美高清影院| 欧美激情一区二区三区在线视频观看 | 在线亚洲免费| 红桃视频国产精品| 亚洲精品免费在线| 国产在线视频欧美一区二区三区| 国产欧美欧洲在线观看| 久久人人爽爽爽人久久久| 欧美高清你懂得| 亚洲一区二区在线播放| 91久久久国产精品| 香蕉久久国产| 亚洲精品视频二区| 亚洲综合视频一区| 国产亚洲a∨片在线观看| 久久全国免费视频| 国产婷婷一区二区| 欧美亚洲视频| 午夜一区二区三区不卡视频| 国产欧美日韩视频在线观看| 久热成人在线视频| 欧美久久久久免费| 国产精品美女诱惑| 久久大综合网| 欧美日韩国产精品一卡| 欧美在线观看www| 欧美精品亚洲| 欧美高清你懂得| 国产日韩精品一区| 亚洲伦理中文字幕| 99热精品在线观看| 免费中文日韩| 美日韩免费视频| 国产亚洲精品bv在线观看| 亚洲视频一区在线| 一区二区欧美视频| 欧美啪啪成人vr| 亚洲黄色一区| 亚洲裸体在线观看| 欧美伦理在线观看| 亚洲精品视频在线播放| 欧美大学生性色视频| 欧美高清视频免费观看| 国产一级一区二区| 午夜在线电影亚洲一区| 亚洲一区bb| 日韩亚洲欧美中文三级| 99riav1国产精品视频| 久久天天躁夜夜躁狠狠躁2022| 一区二区三区精品视频| 国产午夜精品久久| 欧美亚洲一区三区| 亚洲女同同性videoxma| 欧美激情一区二区三区成人| 激情视频亚洲| 欧美在线一级视频| 欧美在线电影| 一区二区亚洲精品| 久久国产精品久久久久久电车| 午夜精品久久久久久久99水蜜桃 | 欧美日韩国产一中文字不卡| 亚洲高清自拍| 日韩视频一区二区三区在线播放 | 久久久91精品国产一区二区精品| 国产在线观看91精品一区| 亚洲一区二区三区在线看| 亚洲一品av免费观看| 欧美国产日本韩| 亚洲色图在线视频| 久久综合导航| 99视频精品| 欧美日韩国产综合网| 亚洲欧美另类国产| 久久综合狠狠| 亚洲精品护士| 国产精品爽黄69| 最新成人av网站| 欧美成人免费全部| 亚洲国产欧美日韩精品| 免费精品99久久国产综合精品| 亚洲国产精品久久人人爱蜜臀| 一区二区av在线| 国产精品系列在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲精品欧美激情| 欧美日韩免费一区| 亚洲在线日韩| 欧美成人小视频| 一区二区三区视频在线观看| 国产一区二区激情| 久久频这里精品99香蕉| 亚洲精品四区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 激情欧美一区二区三区| 欧美连裤袜在线视频| 欧美一区二区在线| 日韩视频专区| 久久一本综合频道| 99热在这里有精品免费|