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

天行健 君子當自強而不息

Direct3D中的繪制(4)

這個程序使用D3DXCreateTeapot函數創建并用DrawSubset函數渲染一個紡紗茶壺。

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

HRESULT D3DXCreateTeapot(
LPDIRECT3DDEVICE9 pDevice,
LPD3DXMESH * ppMesh,
LPD3DXBUFFER * ppAdjacency
);

Parameters

pDevice
[in] Pointer to an IDirect3DDevice9 interface, representing the device associated with the created teapot mesh.
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

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

Draws a subset of a mesh.

HRESULT DrawSubset(
DWORD AttribId
);

Parameters

AttribId
[in] DWORD that specifies which subset of the mesh to draw. This value is used to differentiate faces in a mesh as belonging to one or more attribute groups.

Return Values

If the method succeeds, the return value is D3D_OK. If the method fails, the return value can be D3DERR_INVALIDCALL.

Remarks

The subset that is specified by AttribId will be rendered by the IDirect3DDevice9::DrawIndexedPrimitive method, using the D3DPT_TRIANGLELIST primitive type, so an index buffer must be properly initialized.

An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier (AttribId) when drawing the frame.

截圖:

源程序:

/**************************************************************************************
  Renders a teapot in wireframe mode.  Shows how to create a teapot using the 
  D3DXCreateTeapot function and how to render the teapot using the ID3DXMesh::DrawSubset 
  method.
 *************************************************************************************
*/

#include 
"d3dUtility.h"

#pragma warning(disable : 
4100)

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

IDirect3DDevice9
*    g_d3d_device = NULL;

// mesh interface that will store the teapot data and contains method to render the teapot data
ID3DXMesh* g_teapot_mesh = NULL;

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

bool setup()
{    
    
// create the teapot geometry
    D3DXCreateTeapot(g_d3d_device, &g_teapot_mesh, NULL);

    
// position and aim the camera

    D3DXVECTOR3 position(
0.0f0.0f-3.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);

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

    
return true;
}

void cleanup()
{
    safe_release
<ID3DXMesh*>(g_teapot_mesh);
}

bool display(float time_delta)
{
    
// spin the teapot

    D3DXMATRIX ry;

    
static float y = 0.0f;
    D3DXMatrixRotationY(
&ry, y);

    
// increment y-rotation angle each frame
    y += time_delta;

    
// reset angle to zero when angle reaches 2*PI
    if(y >= 6.28f)
        y 
= 0.0f;

    g_d3d_device
->SetTransform(D3DTS_WORLD, &ry);

    
// draw the scene

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

    g_d3d_device
->BeginScene();

    
// draw teapot using DrawSubset method with 0 as the argument
    g_teapot_mesh->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 15:27 lovedday 閱讀(826) 評論(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>
            久久久久久久97| 亚洲第一偷拍| 国产日韩视频一区二区三区| 久久蜜桃精品| 久久精品久久综合| 国产一区二区精品| 久久久久.com| 欧美日韩中文另类| 日韩亚洲精品在线| 蜜桃av综合| 国产精品久久福利| 亚洲伊人一本大道中文字幕| 亚洲国产激情| 亚洲一区二区在| 伊人蜜桃色噜噜激情综合| 国产精品qvod| 欧美精品一区二区精品网| 免费人成精品欧美精品| 久久久www成人免费精品| 在线国产亚洲欧美| 欧美日本高清| 欧美在线在线| 欧美亚洲日本一区| 欧美影视一区| 欧美成人免费小视频| 亚洲婷婷国产精品电影人久久| 亚洲激情成人在线| 亚洲精品一区二区三区樱花| 这里只有精品丝袜| 激情久久一区| 亚洲免费观看| 欧美日韩精品免费观看视频完整| 午夜久久久久久| 欧美一区二区三区日韩视频| 久久精品99无色码中文字幕| 久久女同精品一区二区| 欧美国产精品一区| 国产精品二区在线观看| 国产亚洲观看| 亚洲精品视频在线播放| 亚洲影音一区| 性欧美办公室18xxxxhd| 国产欧美日韩高清| 亚洲国产高清aⅴ视频| 一个色综合av| 久久永久免费| 国产一区二区激情| 欧美激情女人20p| 国产精品av一区二区| 国产一区二区三区在线观看免费| 免费视频一区| 国产精品毛片va一区二区三区 | 久久这里只有| 蜜桃伊人久久| 国产精品国产a级| 亚洲动漫精品| 香蕉尹人综合在线观看| 欧美激情亚洲| 欧美一级欧美一级在线播放| 中文在线不卡视频| 久久综合综合久久综合| 国产精品系列在线| 在线午夜精品自拍| 欧美福利小视频| 亚洲视频自拍偷拍| 欧美韩日一区二区| 亚洲国产精品综合| 在线视频亚洲一区| 久久精品盗摄| 久久精品国产69国产精品亚洲| 欧美日韩免费一区二区三区视频| 黄色免费成人| 久久久之久亚州精品露出| 亚洲欧美日韩综合国产aⅴ| 国产精品国产三级国产aⅴ9色| 极品少妇一区二区| 久久久久久网址| 亚洲专区在线| 国产精品夜夜夜| 亚洲一区二区三区涩| 亚洲激情偷拍| 欧美成人免费网站| 狠狠色综合一区二区| 久久精品亚洲精品国产欧美kt∨| 在线视频你懂得一区| 欧美视频日韩视频在线观看| 亚洲乱码国产乱码精品精| 欧美高清视频一区二区三区在线观看| 欧美一激情一区二区三区| 国产精品日日摸夜夜摸av| 午夜精品久久久久久久白皮肤| 一本不卡影院| 国产精品麻豆va在线播放 | 中国女人久久久| 日韩一二在线观看| 久久久久久久波多野高潮日日| 韩国一区二区三区在线观看| 久久一区二区三区国产精品| 久久av在线看| 久久午夜激情| 亚洲电影天堂av| 亚洲高清不卡在线| 久久久在线视频| 亚洲三级影院| 一本一道久久综合狠狠老精东影业 | 国产精品久久久久久av福利软件| 亚洲国产成人精品女人久久久 | 久久精品女人的天堂av| 久久久av毛片精品| 日韩一级裸体免费视频| 亚洲视频你懂的| 国产精品乱人伦一区二区| 久久精品国产一区二区三区免费看| 欧美在线视频在线播放完整版免费观看 | 欧美a级一区二区| 亚洲视频播放| 91久久夜色精品国产网站| 国产精品激情| 免费在线亚洲欧美| 欧美日韩国产首页在线观看| 羞羞答答国产精品www一本 | 午夜一区二区三视频在线观看| 午夜精品短视频| 亚洲国产精品一区二区第一页| 亚洲精品一区二区在线| 国产午夜亚洲精品羞羞网站 | 影音先锋在线一区| 亚洲午夜在线观看| 亚洲视屏在线播放| 欧美日韩成人综合| 亚洲精品字幕| 99视频+国产日韩欧美| 欧美成人精品高清在线播放| 美女视频一区免费观看| 一区二区在线视频| 久久国产精品毛片| 久久精品官网| 国产一区二区三区网站| 亚洲欧美在线另类| 欧美在线视频播放| 国产亚洲精品高潮| 久久成人精品视频| 国模精品一区二区三区色天香| 亚洲一区国产视频| 欧美一区二区精美| 国产一区二区精品在线观看| 欧美一级大片在线免费观看| 久久久免费精品视频| …久久精品99久久香蕉国产| 狼人天天伊人久久| 亚洲国产精品综合| 一二三区精品| 国产婷婷色一区二区三区在线 | 久久精品一本| 欧美aaa级| 日韩一级大片| 国产精品嫩草影院一区二区| 久久国产精品久久精品国产| 免费一级欧美片在线播放| 日韩视频中文字幕| 国产精品欧美一区二区三区奶水| 欧美一区二区三区四区在线观看地址| 欧美综合第一页| 亚洲电影下载| 欧美日韩亚洲综合一区| 亚洲男人的天堂在线| 免费在线观看精品| 亚洲天堂激情| 极品裸体白嫩激情啪啪国产精品| 欧美激情欧美激情在线五月| 亚洲欧美国产一区二区三区| 欧美1区免费| 亚洲天堂偷拍| 在线成人www免费观看视频| 欧美精品综合| 久久av二区| 一本色道久久99精品综合 | 99精品国产热久久91蜜凸| 国产乱子伦一区二区三区国色天香 | 欧美一级午夜免费电影| 悠悠资源网久久精品| 欧美午夜精品伦理| 欧美a级片网| 欧美一区免费视频| 一本色道久久综合一区| 欧美激情在线| 久久久久久久综合狠狠综合| 一本色道久久综合亚洲精品按摩| 国产一本一道久久香蕉| 欧美日韩国产在线| 免费成人av| 欧美在线视频网站| 亚洲伊人一本大道中文字幕| 亚洲精品国产精品乱码不99按摩| 久久久久99| 欧美亚洲在线观看| 亚洲午夜在线视频| 日韩视频在线一区二区三区| 亚洲电影免费观看高清完整版在线观看| 国产精品乱码一区二三区小蝌蚪 |