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

天行健 君子當自強而不息

D3D Animation Basis(3)

Initializing Direct3D

Next in line for the helper functions is init_d3d, which you use to initialize Direct3D and create a 3D device and display window. I tried to keep the code as simple as possible, performing the typical initialization code you would use in any Direct3D application.

HRESULT init_d3d(IDirect3D9** ret_d3d,
                 IDirect3DDevice9
** ret_device,
                 HWND hwnd,
                 BOOL force_windowed,
                 
bool multi_threaded)
{
    
// error checking
    if(ret_d3d == NULL || ret_device == NULL || hwnd == NULL)
        
return E_FAIL;

    IDirect3D9
* d3d = Direct3DCreate9(D3D_SDK_VERSION);

    
if(d3d == NULL)
        
return E_FAIL;

    
*ret_d3d = d3d;

    
// Ask if user wants to run windowed or fullscreen, or force windowed if flagged to do such.

    
int mode;

    
if(force_windowed)
        mode 
= IDNO;
    
else
        mode 
= MessageBox(hwnd, "Use fullscreen mode? (640x480x16)""Initialize D3D", MB_YESNO | MB_ICONQUESTION);

    
// set the video (depending on windowed mode or fullscreen)

    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory(
&d3dpp, sizeof(d3dpp));

    
// setup video setttings based on choice of fullscreen or not

    
if(mode == IDYES)    // setup fullscreen format (set to your own if you perfer)
    {
        
// set the presentation parameters (use fullscreen)
        d3dpp.BackBufferWidth             = 640;
        d3dpp.BackBufferHeight             
= 480;
        d3dpp.BackBufferFormat             
= D3DFMT_R5G6B5;
        d3dpp.SwapEffect                 
= D3DSWAPEFFECT_FLIP;
        d3dpp.Windowed                     
= FALSE;
        d3dpp.EnableAutoDepthStencil     
= TRUE;
        d3dpp.AutoDepthStencilFormat     
= D3DFMT_D16;
        d3dpp.FullScreen_RefreshRateInHz 
= D3DPRESENT_RATE_DEFAULT;
        d3dpp.PresentationInterval         
= D3DPRESENT_INTERVAL_DEFAULT;
    }
    
else    // setup windowed format (set to your own demensions below)
    {
        
// get the client and window dimensions
        RECT client_rect, window_rect;
        GetClientRect(hwnd, 
&client_rect);
        GetWindowRect(hwnd, 
&window_rect);

        
// set the width and height (set your dimensions here)
        DWORD desired_width = 640, desired_height = 480;
        DWORD width  
= (window_rect.right - window_rect.left) - client_rect.right  + desired_width;
        DWORD height 
= (window_rect.bottom - window_rect.top) - client_rect.bottom + desired_height;

        
// set the window's dimensions
        MoveWindow(hwnd, window_rect.left, window_rect.top, width, height, TRUE);

        
// get the desktop format
        D3DDISPLAYMODE display_mode;
        d3d
->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &display_mode);

        
// set the presentation parameters (use windowed)
        d3dpp.BackBufferWidth              = desired_width;
        d3dpp.BackBufferHeight              
= desired_height;
        d3dpp.BackBufferFormat              
= display_mode.Format;
        d3dpp.SwapEffect                  
= D3DSWAPEFFECT_DISCARD;
        d3dpp.Windowed                      
= TRUE;
        d3dpp.EnableAutoDepthStencil      
= TRUE;
        d3dpp.AutoDepthStencilFormat     
= D3DFMT_D16;
        d3dpp.FullScreen_RefreshRateInHz 
= D3DPRESENT_RATE_DEFAULT;
        d3dpp.PresentationInterval         
= D3DPRESENT_INTERVAL_DEFAULT;
    }

    
// create the 3D device

    DWORD flags 
= D3DCREATE_MIXED_VERTEXPROCESSING;

    
if(multi_threaded)
        flags 
|= D3DCREATE_MULTITHREADED;

    IDirect3DDevice9
* device;
    HRESULT hr 
= d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, flags, &d3dpp, &device);

    
if(FAILED(hr))
        
return hr;

    
// store the 3D device object pointer
    *ret_device = device;

    
// set the perspective projection

    
float aspect = (float)d3dpp.BackBufferWidth / d3dpp.BackBufferHeight;

    D3DXMATRIX mat_proj;
    D3DXMatrixPerspectiveFovLH(
&mat_proj, D3DX_PI/4.0f, aspect, 1.0f10000.0f);
    device
->SetTransform(D3DTS_PROJECTION, &mat_proj);

    
// set the default render states
    device->SetRenderState(D3DRS_LIGHTING,            FALSE);
    device
->SetRenderState(D3DRS_ZENABLE,            D3DZB_TRUE);
    device
->SetRenderState(D3DRS_ALPHABLENDENABLE,    FALSE);
    device
->SetRenderState(D3DRS_ALPHATESTENABLE,    FALSE);

    
// set the default texture stage states
    device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
    device
->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
    device
->SetTextureStageState(0, D3DTSS_COLOROP,      D3DTOP_MODULATE);

    
// set the default texture filters
    device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
    device
->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);

    
return S_OK;
}

 

posted on 2008-04-14 12:33 lovedday 閱讀(357) 評論(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>
            欧美一区日本一区韩国一区| 亚洲视频在线播放| 久久riav二区三区| 国语自产精品视频在线看| 久久精品日韩一区二区三区| 午夜久久黄色| 好吊色欧美一区二区三区四区| 免费观看不卡av| 亚洲人午夜精品免费| 亚洲国产专区校园欧美| 久久久噜噜噜久久中文字幕色伊伊| 久久综合亚洲社区| 亚洲日本乱码在线观看| 一本到高清视频免费精品| 国产精品一区免费在线观看| 久久久久久久精| 欧美成人一品| 欧美一区二区在线观看| 久久免费午夜影院| 亚洲一区二区三区四区在线观看 | 国产欧美一区二区白浆黑人| 欧美伊人久久久久久午夜久久久久| 久久综合五月天婷婷伊人| 免费精品99久久国产综合精品| 国产精品国产| 久久免费国产精品| 欧美日韩精品免费观看视一区二区| 国产视频在线观看一区| 欧美mv日韩mv国产网站app| 欧美激情一区二区久久久| 欧美一区二区在线免费观看| 免费观看亚洲视频大全| 欧美伊人久久久久久午夜久久久久 | 亚洲一区二区三区在线观看视频| 狼狼综合久久久久综合网| 欧美人与性动交α欧美精品济南到| 今天的高清视频免费播放成人| 亚洲男女毛片无遮挡| 久久久午夜精品| 欧美一级黄色网| 欧美激情第一页xxx| 欧美在线一级va免费观看| 欧美成人性生活| 久久久福利视频| 国产精品呻吟| 日韩午夜黄色| 99国产成+人+综合+亚洲欧美| 亚洲国产女人aaa毛片在线| 国产日韩一区二区三区| av72成人在线| 亚洲另类在线视频| 久久夜色精品| 蜜桃av综合| 国外视频精品毛片| 欧美一二区视频| 性刺激综合网| 国产精品一区二区a| 妖精视频成人观看www| 一本色道久久88亚洲综合88| 蜜桃久久av一区| 麻豆亚洲精品| 黑人巨大精品欧美一区二区| 欧美亚洲免费| 久久久久久高潮国产精品视| 国产日韩欧美二区| 欧美在线播放视频| 久久精品欧美| 一区二区三区自拍| 久久久久久久性| 欧美肥婆在线| 亚洲人体大胆视频| 欧美另类一区二区三区| 日韩午夜在线| 午夜在线a亚洲v天堂网2018| 国产精品嫩草久久久久| 亚洲免费影视| 久久久久久69| 亚洲国产精品一区二区三区| 蜜桃精品久久久久久久免费影院| 亚洲女ⅴideoshd黑人| 国产精品美女999| 中日韩午夜理伦电影免费| 欧美一区二区私人影院日本| 国产视频一区欧美| 久久蜜桃香蕉精品一区二区三区| 亚洲视频一区在线| 国产精品盗摄一区二区三区| 亚洲欧美另类在线| 卡通动漫国产精品| 日韩一级黄色片| 国产精品久久久久7777婷婷| 欧美在线观看天堂一区二区三区| 一区二区三区日韩| 国产麻豆视频精品| 久久蜜桃av一区精品变态类天堂| 亚洲欧美日韩中文在线制服| 国产欧美亚洲日本| 欧美黄色小视频| 亚洲一区国产一区| 亚洲国产成人久久| 午夜精品一区二区三区在线视 | 免费一级欧美片在线观看| 亚洲日产国产精品| 欧美在线视频不卡| 91久久久国产精品| 国产欧美精品日韩精品| 免费视频一区| 亚洲午夜精品在线| 欧美国产日韩一区二区三区| 午夜精品电影| 亚洲精品三级| 国产视频丨精品|在线观看| 欧美激情综合色综合啪啪| 午夜激情一区| 日韩一级黄色av| 欧美aaaaaaaa牛牛影院| 午夜精品久久久| 日韩一区二区精品| 尤物99国产成人精品视频| 国产精品久久久久aaaa樱花| 男同欧美伦乱| 久久久女女女女999久久| 亚洲在线一区二区| 亚洲美女黄网| 欧美高清视频在线| 久久在线免费视频| 欧美在线视频一区二区| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 在线一区免费观看| 亚洲国产日韩欧美综合久久| 国产一区二区av| 国产精品一二三四| 欧美午夜一区二区福利视频| 欧美刺激午夜性久久久久久久| 亚洲国产一区二区在线| 久久久久免费视频| 久久精品99国产精品酒店日本| 狠狠久久五月精品中文字幕| 国产伦精品一区二区三区视频孕妇 | 国产精品99久久久久久人| 亚洲国产精品悠悠久久琪琪| 欧美阿v一级看视频| 久久综合色影院| 看欧美日韩国产| 久久在线免费观看视频| 麻豆91精品91久久久的内涵| 久久久蜜桃一区二区人| 久久久www| 蜜桃av综合| 欧美高清视频一二三区| 免费不卡视频| 亚洲电影视频在线| 亚洲欧洲一区二区天堂久久 | 久久黄色影院| 久久久青草婷婷精品综合日韩| 亚洲黄色免费| 亚洲国产另类精品专区| 亚洲看片免费| 在线综合亚洲欧美在线视频| 亚洲五月六月| 欧美怡红院视频| 久久视频在线视频| 亚洲国产成人午夜在线一区 | 亚洲精品在线一区二区| 夜夜嗨av一区二区三区免费区| 国产精品亚洲а∨天堂免在线| 鲁鲁狠狠狠7777一区二区| 欧美顶级少妇做爰| 欧美午夜精品电影| 国产麻豆9l精品三级站| 一区视频在线播放| 一本色道久久88综合日韩精品| 一区视频在线| 一级日韩一区在线观看| 欧美专区福利在线| 欧美a级在线| 在线一区二区三区四区五区| 亚洲免费视频观看| 欧美mv日韩mv国产网站| 国产精品高精视频免费| 在线观看91精品国产麻豆| 正在播放欧美视频| 久久只有精品| 这里只有精品视频在线| 久热精品视频在线免费观看| 欧美日韩综合网| 影音先锋久久精品| 亚洲欧美日韩精品久久奇米色影视 | 狠狠久久婷婷| 亚洲午夜小视频| 欧美成人精品h版在线观看| 亚洲毛片在线| 久久久天天操| 国产精品日韩欧美一区二区| 亚洲精品日韩一| 久久免费午夜影院| 亚洲性av在线| 欧美日韩国产在线观看| 亚洲国产精品尤物yw在线观看| 亚洲经典在线看|