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

天行健 君子當自強而不息

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 閱讀(352) 評論(0)  編輯 收藏 引用

公告

導航

統計

常用鏈接

隨筆分類(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>
            欧美日韩一区三区| 老牛影视一区二区三区| 国产一区二区三区在线观看精品 | 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲欧美成人一区二区在线电影| 亚洲小说春色综合另类电影| 亚洲综合精品一区二区| 久久精品国产亚洲5555| 欧美精品v国产精品v日韩精品 | 亚洲一区二区毛片| 久久精品在线观看| 日韩一二三在线视频播| 亚洲淫片在线视频| 久久精品国产亚洲一区二区| 亚洲国产福利在线| 亚洲一区成人| 久久影院午夜片一区| 欧美三级电影一区| 国语自产精品视频在线看| 日韩图片一区| 久久欧美中文字幕| 一本一本a久久| 久久一综合视频| 国产精品日本欧美一区二区三区| 在线观看成人网| 亚洲欧美日韩区| 欧美午夜视频在线观看| 久久精品亚洲乱码伦伦中文| 欧美精品一区二区三区蜜桃 | 亚洲一区二区高清视频| 久久高清免费观看| 欧美日韩成人综合天天影院| 狠狠久久婷婷| 欧美在线视频全部完| 一区二区久久| 欧美日韩国产成人| 亚洲免费观看高清完整版在线观看| 欧美一区亚洲| 亚洲在线成人| 国产精品久久久久久久久久久久| 亚洲日本中文| 欧美黄色视屏| 久久资源在线| 一区免费在线| 裸体歌舞表演一区二区| 欧美在线啊v一区| 国产欧美短视频| 欧美在线观看你懂的| 亚洲欧美国产另类| 国产欧美日韩中文字幕在线| 欧美在线国产| 欧美在线观看天堂一区二区三区| 国产啪精品视频| 欧美一区二区三区婷婷月色| 中文日韩在线视频| 国产精品久久久久影院色老大| 国产精品99久久久久久人| 亚洲人成在线免费观看| 欧美国产丝袜视频| 日韩午夜av在线| 亚洲伦理在线免费看| 欧美日韩黄色大片| 亚洲亚洲精品在线观看| 99精品欧美| 国产精品日韩欧美| 久久精品一区二区三区不卡牛牛| 欧美一区影院| 亚洲电影第1页| 亚洲福利电影| 欧美性事在线| 久久久亚洲综合| 开心色5月久久精品| 亚洲精品美女91| 亚洲精品一区二区在线| 欧美视频在线观看免费网址| 欧美一进一出视频| 久久久久看片| 99伊人成综合| 午夜日韩在线观看| 亚洲国产精品成人va在线观看| 亚洲人成免费| 国产亚洲成av人片在线观看桃| 欧美粗暴jizz性欧美20| 久久久精品国产免费观看同学| 亚洲国产精品va在线看黑人| 亚洲人成网站影音先锋播放| 欧美午夜精品理论片a级按摩| 午夜精品久久久久久久久久久| 午夜国产欧美理论在线播放| 亚洲国产欧美一区二区三区同亚洲| 亚洲乱码国产乱码精品精可以看| 国产精品久久久久一区| 欧美1区2区视频| 国产精品国产三级国产专播精品人 | 国内精品久久久久久影视8| 亚洲电影中文字幕| 国产精品一区二区a| 亚洲电影观看| 国产日韩欧美黄色| 亚洲精品乱码久久久久久蜜桃麻豆 | 欧美一区二区在线观看| 另类亚洲自拍| 亚洲欧美日韩中文播放| 麻豆精品一区二区av白丝在线| 午夜精品久久久久久99热| 欧美激情第六页| 久久深夜福利免费观看| 国产精品久久久久久久久久久久久| 欧美~级网站不卡| 国产欧亚日韩视频| 亚洲视频一区二区| 日韩视频免费观看| 久久综合亚州| 久久久久久久激情视频| 国产精品网站在线播放| 日韩五码在线| 日韩香蕉视频| 欧美国产精品久久| 日韩午夜中文字幕| 日韩午夜在线视频| 久久精品国产亚洲a| 亚洲综合电影一区二区三区| 久久亚洲一区二区| 久久色在线播放| 国产嫩草一区二区三区在线观看| 亚洲欧洲日本mm| 亚洲第一成人在线| 欧美一区永久视频免费观看| 午夜精彩国产免费不卡不顿大片| 欧美精品福利视频| 亚洲人成网站精品片在线观看| 亚洲成人资源网| 久久久久久电影| 欧美 日韩 国产一区二区在线视频 | 久久久久国产精品人| 欧美日韩国产不卡| 亚洲综合三区| 一区二区三区精品国产| 巨乳诱惑日韩免费av| 美女主播一区| 樱桃国产成人精品视频| 久久久97精品| 久久综合伊人| 亚洲国产综合在线看不卡| 久久免费高清视频| 欧美不卡在线| 日韩天堂在线观看| 欧美日韩在线一二三| 亚洲图片在线观看| 久久国产精品亚洲va麻豆| 国外成人网址| 美玉足脚交一区二区三区图片| 欧美风情在线观看| 99国产精品私拍| 国产精品国产三级国产aⅴ无密码| 亚洲一区二区黄色| 久久精品国产在热久久| 亚洲国产日韩欧美| 欧美日韩一区二区三区免费看| 亚洲一区二区三区色| 久久久亚洲人| 日韩亚洲欧美一区| 国产精品黄视频| 久久精品中文字幕免费mv| 亚洲国产经典视频| 午夜激情综合网| 91久久久国产精品| 国产精品综合av一区二区国产馆| 久久精品亚洲精品国产欧美kt∨| 亚洲国产精品成人久久综合一区 | 亚洲视频在线观看网站| 国产乱码精品一区二区三区五月婷| 亚洲欧美另类在线观看| 免费欧美高清视频| 亚洲午夜成aⅴ人片| 欧美女同视频| 欧美专区日韩专区| 亚洲美女网站| 狂野欧美激情性xxxx| 99国产精品久久久久老师| 国产一区二区欧美| 欧美四级在线观看| 久久久久久高潮国产精品视| 一本久道久久综合婷婷鲸鱼| 美女视频黄免费的久久| 亚洲女同精品视频| 亚洲人成在线观看| 国产原创一区二区| 国产精品hd| 欧美 日韩 国产 一区| 欧美亚洲一级片| 亚洲理伦电影| 欧美11—12娇小xxxx| 久久国产精品亚洲va麻豆| 亚洲一区视频在线观看视频| 亚洲激情一区二区三区| 国产有码在线一区二区视频| 国产精品社区| 欧美体内she精视频在线观看| 欧美激情一区二区三区蜜桃视频|