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

天行健 君子當自強而不息

Direct3D中的繪制(5)

這個程序創建并渲染幾種不同的能夠使用D3DXCreate*函數創建的3D物體。

Uses a left-handed coordinate system to create a mesh containing an axis-aligned box.

HRESULT D3DXCreateBox(
LPDIRECT3DDEVICE9 pDevice,
FLOAT Width,
FLOAT Height,
FLOAT Depth,
LPD3DXMESH * ppMesh,
LPD3DXBUFFER * ppAdjacency
);

Parameters

pDevice
[in] Pointer to an IDirect3DDevice9 interface, representing the device associated with the created box mesh.
Width
[in] Width of the box, along the x-axis.
Height
[in] Height of the box, along the y-axis.
Depth
[in] Depth of the box, along the z-axis.
ppMesh
[out] Address of a pointer to the output shape, an ID3DXMesh interface.
ppAdjacency
[out] Address of a pointer to an ID3DXBuffer interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh. NULL can be specified.

Return Values

If the function succeeds, the return value is D3D_OK. If the function fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

Remarks

The created box is centered at the origin.

This function creates a mesh with the D3DXMESH_MANAGED creation option and D3DFVF_XYZ | D3DFVF_NORMAL flexible vertex format (FVF).

Uses a left-handed coordinate system to create a mesh containing a cylinder.

HRESULT D3DXCreateCylinder(
LPDIRECT3DDEVICE9 pDevice,
FLOAT Radius1,
FLOAT Radius2,
FLOAT Length,
UINT Slices,
UINT Stacks,
LPD3DXMESH * ppMesh,
LPD3DXBUFFER * ppAdjacency
);

Parameters

pDevice
[in] Pointer to an IDirect3DDevice9 interface, representing the device associated with the created cylinder mesh.
Radius1
[in] Radius at the negative Z end. Value should be greater than or equal to 0.0f.
Radius2
[in] Radius at the positive Z end. Value should be greater than or equal to 0.0f.
Length
[in] Length of the cylinder along the z-axis.
Slices
[in] Number of slices about the main axis.
Stacks
[in] Number of stacks along the main axis.
ppMesh
[out] Address of a pointer to the output shape, an ID3DXMesh interface.
ppAdjacency
[out] Address of a pointer to an ID3DXBuffer interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh. NULL can be specified.

Return Values

If the function succeeds, the return value is D3D_OK. If the function fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

Remarks

The created cylinder is centered at the origin, and its axis is aligned with the z-axis.

This function creates a mesh with the D3DXMESH_MANAGED creation option and D3DFVF_XYZ | D3DFVF_NORMAL flexible vertex format (FVF).

Uses a left-handed coordinate system to create a mesh containing a torus.

HRESULT D3DXCreateTorus(
LPDIRECT3DDEVICE9 pDevice,
FLOAT InnerRadius,
FLOAT OuterRadius,
UINT Sides,
UINT Rings,
LPD3DXMESH * ppMesh,
LPD3DXBUFFER * ppAdjacency
);

Parameters

pDevice
[in] Pointer to an IDirect3DDevice9 interface, representing the device associated with the created torus mesh.
InnerRadius
[in] Inner-radius of the torus. Value should be greater than or equal to 0.0f.
OuterRadius
[in] Outer-radius of the torus. Value should be greater than or equal to 0.0f.
Sides
[in] Number of sides in a cross-section. Value must be greater than or equal to 3.
Rings
[in] Number of rings making up the torus. Value must be greater than or equal to 3.
ppMesh
[out] Address of a pointer to the output shape, an ID3DXMesh interface.
ppAdjacency
[out] Address of a pointer to an ID3DXBuffer interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh. NULL can be specified.

Return Values

If the function succeeds, the return value is D3D_OK. If the function fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

Remarks

The created torus is centered at the origin, and its axis is aligned with the z-axis. The inner radius of the torus is the radius of the cross-section (the minor radius), and the outer radius of the torus is the radius of the central hole.

This function returns a mesh that can be used later for drawing or manipulation by the application.

This function creates a mesh with the D3DXMESH_MANAGED creation option and D3DFVF_XYZ | D3DFVF_NORMAL flexible vertex format (FVF).

Uses a left-handed coordinate system to create a mesh containing a sphere.

HRESULT D3DXCreateSphere(
LPDIRECT3DDEVICE9 pDevice,
FLOAT Radius,
UINT Slices,
UINT Stacks,
LPD3DXMESH * ppMesh,
LPD3DXBUFFER * ppAdjacency
);

Parameters

pDevice
[in] Pointer to an IDirect3DDevice9 interface, representing the device associated with the created sphere mesh.
Radius
[in] Radius of the sphere. This value should be greater than or equal to 0.0f.
Slices
[in] Number of slices about the main axis.
Stacks
[in] Number of stacks along the main axis.
ppMesh
[out] Address of a pointer to the output shape, an ID3DXMesh interface.
ppAdjacency
[out] Address of a pointer to an ID3DXBuffer interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh. NULL can be specified.

Return Values

If the function succeeds, the return value is D3D_OK. If the function fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

Remarks

The created sphere is centered at the origin, and its axis is aligned with the z-axis.

This function creates a mesh with the D3DXMESH_MANAGED creation option and D3DFVF_XYZ | D3DFVF_NORMAL flexible vertex format (FVF).

Builds a matrix using the specified offsets.

D3DXMATRIX * D3DXMatrixTranslation(
D3DXMATRIX * pOut,
FLOAT x,
FLOAT y,
FLOAT z
);

Parameters

pOut
[in, out] Pointer to the D3DXMATRIX structure that is the result of the operation.
x
[in] X-coordinate offset.
y
[in] Y-coordinate offset.
z
[in] Z-coordinate offset.

Return Values

Pointer to a D3DXMATRIX structure that contains a translated transformation matrix.

Remarks

The return value for this function is the same value returned in the pOut parameter. In this way, the D3DXMATRIXTranslation can be used as a parameter for another function.

運行截圖:

源程序:

/**************************************************************************************
 Renders several D3DX shapes in wireframe mode and has the camera fly around the scene.  
 Demonstrates the D3DXCreate* functions, and demonstrates more complex transformations 
 used to position the objects in the world and move the camera around the world.
 *************************************************************************************
*/

#include 
"d3dUtility.h"

#pragma warning(disable : 
4100)

#define TEAPOT_MESH        0
#define BOX_MESH        1
#define CYLINDER_MESH    2
#define TORUS_MESH        3
#define SPHERE_MESH        4
#define NUM_MESH        5

const int WIDTH  = 640;
const int HEIGHT = 480;

IDirect3DDevice9
*    g_d3d_device = NULL;
ID3DXMesh
*            g_object_meshes[NUM_MESH];

// world matrices for each object.
// these matrices specify the location of the objects in the world.
D3DXMATRIX g_object_world_matrices[NUM_MESH];

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

bool setup()
{    
    
// create the teapot geometry
    D3DXCreateTeapot(g_d3d_device, &g_object_meshes[TEAPOT_MESH], NULL);
    D3DXCreateBox(g_d3d_device, 
2.0f2.0f2.0f&g_object_meshes[BOX_MESH], NULL);
    D3DXCreateCylinder(g_d3d_device, 
1.0f1.0f3.0f1010&g_object_meshes[CYLINDER_MESH], NULL);
    D3DXCreateTorus(g_d3d_device, 
1.0f3.0f1010&g_object_meshes[TORUS_MESH], NULL);
    D3DXCreateSphere(g_d3d_device, 
1.0f1010&g_object_meshes[SPHERE_MESH], NULL);

    
// Build world matrices - position the objects in world space.
    
// For example, g_object_world_matrices[1] will position g_object_meshes[1] at (-5, 0, 5).
    
// Likewise, g_object_world_matrices[2] will position g_object_meshes[2] at (5, 0, -5).
    D3DXMatrixTranslation(&g_object_world_matrices[TEAPOT_MESH],    0.0f0.0f0.0f);
    D3DXMatrixTranslation(
&g_object_world_matrices[BOX_MESH],       -5.0f0.0f,  5.0f);
    D3DXMatrixTranslation(
&g_object_world_matrices[CYLINDER_MESH],  5.0f0.0f,  5.0f);
    D3DXMatrixTranslation(
&g_object_world_matrices[TORUS_MESH],       -5.0f0.0f-5.0f);
    D3DXMatrixTranslation(
&g_object_world_matrices[SPHERE_MESH],    5.0f0.0f-5.0f);

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

    
// set wireframe mode render state
    g_d3d_device->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);

    
return true;
}

void cleanup()
{
    
for(int i = 0; i < NUM_MESH; i++)
        safe_release
<ID3DXMesh*>(g_object_meshes[i]);
}

bool display(float time_delta)
{
    
// Animate the camera:
    
//
    
// The camera will circle around the center of the scene.  We use the sin and cos functions 
    
// to generate points on the circle, then scale them by 10 to further the radius.  
    
// In addition the camera will move up and down as it circles about the scene.
    static float angle = (3.0f * D3DX_PI) / 2.0f;
    
static float camera_height = 0.0f;
    
static float camera_height_dir = 10.0f;

    D3DXVECTOR3 position(cosf(angle) 
* 10.0f, camera_height, sinf(angle) * 10.0f);

    
// the camera is targetted at the origin of the world
    D3DXVECTOR3 target(0.0f0.0f0.0f);

    
// the worlds up vector
    D3DXVECTOR3 up(0.0f1.0f0.0f);

    D3DXMATRIX view_matrix;
    D3DXMatrixLookAtLH(
&view_matrix, &position, &target, &up);
    g_d3d_device
->SetTransform(D3DTS_VIEW, &view_matrix);

    
// compute the position for the next frame
    angle += time_delta;
    
if(angle >= 6.28f)
        angle 
= 0.0f;

    
// compute the height of the camera for the next frame
    camera_height += camera_height_dir * time_delta;
    
if(camera_height >= 20.0f || camera_height <= -20.0f)
        camera_height_dir 
= -camera_height_dir;
    
    
// draw the scene

    g_d3d_device
->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff1.0f0);

    g_d3d_device
->BeginScene();

    
for(int i = 0; i < NUM_MESH; i++)
    {
        
// set the world matrix that positions the object
        g_d3d_device->SetTransform(D3DTS_WORLD, &g_object_world_matrices[i]);

        
// draw the object using the previously set world matrix
        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-14 18:52 lovedday 閱讀(989) 評論(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>
            国模吧视频一区| 日韩视频免费观看高清完整版| 日韩图片一区| 亚洲一区二区三区在线视频| 小处雏高清一区二区三区 | 欧美激情网友自拍| 欧美日韩精品免费| 国语自产偷拍精品视频偷 | 国产精品狼人久久影院观看方式| 欧美体内谢she精2性欧美| 国产精品视频免费在线观看| 在线观看成人av电影| 日韩一级免费| 一区二区三区精品视频在线观看| 午夜精品久久久久久久| 欧美国产日韩精品免费观看| 国产日韩综合一区二区性色av| 亚洲精品久久久久久久久久久久| 欧美一区二区三区在| 日韩西西人体444www| 国产精品丝袜久久久久久app| 久久日韩粉嫩一区二区三区| av不卡在线看| 欧美v国产在线一区二区三区| 欧美大片一区二区三区| 亚洲欧美精品伊人久久| 亚洲电影免费观看高清完整版在线 | 亚洲伦理在线免费看| 久久高清一区| 国产精品久线观看视频| 久久婷婷丁香| 亚洲欧美伊人| 亚洲精品在线观看免费| 欧美激情精品久久久| 久久国产一二区| 在线视频欧美精品| 日韩视频中文| 在线看日韩av| 亚洲福利国产| 国产在线精品二区| 日韩亚洲视频| 亚洲韩国日本中文字幕| 欧美激情一区在线| 国产日韩一区二区三区| 夜夜精品视频一区二区| 亚洲高清在线精品| 亚洲国产综合在线| 免费观看亚洲视频大全| 久久精品国产99国产精品| 欧美一区综合| 在线看不卡av| 午夜在线一区二区| 韩国精品久久久999| 亚洲一二三区在线观看| 国产精品久久久久久亚洲毛片| 欧美激情精品久久久久久变态| 国产欧亚日韩视频| 欧美国产极速在线| 欧美激情综合网| 欧美成人午夜影院| 狠狠色狠色综合曰曰| 欧美亚洲网站| 亚洲日本中文字幕免费在线不卡| 久久精品视频在线播放| 亚洲黄色影院| 免费视频最近日韩| 欧美激情 亚洲a∨综合| 亚洲黄色免费| 欧美成人久久| 91久久夜色精品国产网站| 欧美亚洲成人免费| 99re6这里只有精品视频在线观看 99re6这里只有精品 | 永久555www成人免费| 久久不射中文字幕| 久久综合色播五月| 欧美成人国产| 亚洲免费成人| 亚洲尤物在线视频观看| 久久久午夜视频| 夜夜爽99久久国产综合精品女不卡| 亚洲一区二区三区在线播放| 亚洲国产毛片完整版| 免费一级欧美片在线观看| 亚洲第一毛片| 亚洲午夜av| 国产日韩欧美在线观看| 久久精品主播| 亚洲激情另类| 午夜精品在线观看| 欧美日本乱大交xxxxx| 久久久久9999亚洲精品| 国产精品99免费看 | 中文网丁香综合网| 久久精品水蜜桃av综合天堂| 麻豆久久婷婷| av成人黄色| 国产亚洲精品久久久| 亚洲视频一区在线| 亚洲激情国产精品| 欧美手机在线视频| 久久激情久久| 亚洲精品中文字| 亚洲欧美影院| 在线看片一区| 国产精品久久久久久久久久尿 | 欧美一区二区三区免费观看| 欧美高清视频www夜色资源网| 亚洲特级毛片| 亚洲夫妻自拍| 国产毛片一区| 欧美一区二区三区日韩视频| 你懂的国产精品永久在线| 一区二区亚洲精品国产| 欧美在线观看网站| 亚洲精品在线观看视频| 久久久7777| 亚洲一区二区三区在线观看视频 | 亚洲国产日韩一级| 国产精品色婷婷| 欧美成人在线网站| 久久国产黑丝| 中文成人激情娱乐网| 亚洲丰满在线| 老司机成人在线视频| 先锋亚洲精品| 一区二区三区四区国产| 亚洲国产成人一区| 精品1区2区3区4区| 国产亚洲精品久| 国产日本欧美一区二区| 欧美视频在线不卡| 欧美激情一区在线观看| 久久青青草综合| 亚洲精品美女91| 亚洲欧美视频| 中国女人久久久| 99在线精品视频在线观看| 1000精品久久久久久久久| 国内精品久久久久伊人av| 国产欧美不卡| 国产日韩精品视频一区二区三区| 国产精品美女久久久浪潮软件 | 午夜性色一区二区三区免费视频| 亚洲另类在线一区| 亚洲免费观看高清完整版在线观看| 欧美夫妇交换俱乐部在线观看| 老司机成人网| 欧美韩日一区二区| 亚洲福利在线观看| 亚洲激情第一区| 99国产精品久久久久老师 | 久久久免费精品| 久久久久久久尹人综合网亚洲| 久久久久久有精品国产| 久热精品视频在线观看一区| 美女视频黄免费的久久| 一区二区三区四区五区精品| 中国日韩欧美久久久久久久久| 亚洲视频1区| 欧美一区二区视频97| 欧美在线视频在线播放完整版免费观看| 亚洲国产高清自拍| 亚洲精品影院在线观看| 一级成人国产| 久久不射2019中文字幕| 久久久久99| 亚洲黄一区二区| 亚洲一区二区三区精品在线观看 | 欧美xxx成人| 欧美视频不卡| 国产小视频国产精品| 亚洲高清久久久| 一区二区三区日韩精品| 欧美在线观看一二区| 久久综合九色综合欧美就去吻| 亚洲成人在线网| 久久综合久久综合九色| 亚洲二区在线视频| 亚洲一级一区| 嫩模写真一区二区三区三州| 欧美日韩在线精品| 欧美日本二区| 国产欧美日韩亚洲精品| 亚洲精品日韩激情在线电影| 亚洲午夜在线| 你懂的成人av| 亚洲欧美在线免费| 欧美成人一区二区三区| 国产欧美精品国产国产专区| 99re66热这里只有精品4| 久久久久久国产精品mv| 亚洲作爱视频| 免费观看一级特黄欧美大片| 国产精品一区二区久久| 日韩图片一区| 欧美成人精品在线播放| 午夜在线a亚洲v天堂网2018| 欧美日本一区二区三区| 亚洲高清不卡av| 久久久青草青青国产亚洲免观|