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

天行健 君子當自強而不息

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>
            快射av在线播放一区| 久久婷婷亚洲| 日韩亚洲欧美精品| 欧美国产大片| 亚洲一区二区三区中文字幕在线| 日韩一级在线| 国产乱码精品一区二区三区不卡| 欧美在线观看www| 久久一二三四| 日韩午夜黄色| 亚洲一区二区三区在线观看视频| 国产日韩一区二区三区在线| 久久综合中文| 欧美日韩精选| 久久天堂av综合合色| 欧美成年人网站| 亚洲欧美三级伦理| 乱人伦精品视频在线观看| 亚洲美女91| 欧美中文字幕在线视频| 亚洲精品人人| 久久精品一区二区| 中文在线资源观看网站视频免费不卡 | 鲁大师成人一区二区三区| 欧美精品123区| 久久午夜影视| 国产精品任我爽爆在线播放| 欧美国产一区二区在线观看 | 国产欧美日韩视频| 亚洲欧洲在线免费| 国产乱人伦精品一区二区| 亚洲成色777777在线观看影院| 国产精品入口日韩视频大尺度| 蜜桃av久久久亚洲精品| 国产精品久久网站| 亚洲国产日韩欧美| 国产一区二区三区久久精品| 99国产麻豆精品| 亚洲欧洲另类国产综合| 国产一区成人| 99这里只有久久精品视频| 亚洲第一偷拍| 久久久av毛片精品| 欧美亚洲网站| 国产精品家庭影院| 日韩午夜在线| 一区二区三区国产精华| 欧美成人69| 欧美xx69| 亚洲福利国产精品| 久久久www成人免费精品| 香蕉成人久久| 国产精品久久久亚洲一区| 亚洲美女少妇无套啪啪呻吟| 亚洲黄色片网站| 久久综合久久综合久久综合| 久久久水蜜桃| 在线观看欧美激情| 久久亚洲图片| 欧美成人精品1314www| 韩国在线一区| 久久久人成影片一区二区三区观看 | 欧美激情久久久久| 亚洲高清网站| 99精品99久久久久久宅男| 欧美激情第二页| 亚洲高清免费视频| 亚洲免费电影在线| 欧美日韩天天操| 亚洲视频在线一区| 欧美亚洲自偷自偷| 国产欧美日韩免费| 久久久久久亚洲综合影院红桃| 免费观看成人| 日韩网站免费观看| 国产精品乱码一区二区三区| 亚洲欧美三级伦理| 另类综合日韩欧美亚洲| 亚洲欧洲偷拍精品| 欧美日韩精品久久| 亚洲一区二区三区四区五区黄 | 亚洲成人原创| 欧美日韩精品在线| 午夜精品久久久久| 亚洲成人中文| 亚洲一区二区三区涩| 国内精品久久久久久久97牛牛| 麻豆精品在线播放| 亚洲免费不卡| 久久久久中文| 在线一区亚洲| 国内揄拍国内精品少妇国语| 欧美电影免费观看高清完整版| 亚洲视频日本| 欧美成人精品不卡视频在线观看 | 好看的av在线不卡观看| 欧美激情视频在线免费观看 欧美视频免费一 | 久久久久久久尹人综合网亚洲 | 久久精品一区二区| 日韩视频免费观看| 久久伊人精品天天| 一本一道久久综合狠狠老精东影业| 国产精品日韩欧美一区二区三区 | 9人人澡人人爽人人精品| 久久精品视频在线观看| 在线性视频日韩欧美| 黄色国产精品| 国产精品视频最多的网站| 欧美成人精品在线视频| 午夜精品一区二区三区在线视| 最新日韩av| 久久深夜福利免费观看| 亚洲午夜精品久久| 亚洲精品一区在线观看| 激情综合自拍| 国产区精品在线观看| 欧美日韩岛国| 欧美福利视频| 久久一区视频| 久久精品国产2020观看福利| 亚洲一区二区网站| 99精品久久| 亚洲精品美女| 亚洲国产成人在线视频| 久久综合伊人77777| 久久激情中文| 欧美伊人久久| 午夜久久福利| 午夜久久久久久| 亚洲欧美视频在线观看视频| 亚洲一卡二卡三卡四卡五卡| 99视频一区二区| 亚洲美女视频网| 亚洲欧洲日本在线| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲一区亚洲| 亚洲素人在线| 亚洲一区二区免费在线| 在线一区二区三区四区| 亚洲视频一区二区| 亚洲一区免费| 性欧美大战久久久久久久久| 亚洲欧美综合另类中字| 欧美亚洲一区| 久久久亚洲欧洲日产国码αv | 欧美国产精品一区| 欧美电影免费观看大全| 欧美久久久久久蜜桃| 欧美日韩国语| 国产精品女人网站| 国产日韩欧美另类| 国户精品久久久久久久久久久不卡 | 欧美日本韩国| 国产精品久久久久久av福利软件 | 国产精品久久久一区二区三区| 国产精品揄拍一区二区| 国产一级一区二区| 亚洲高清不卡一区| 亚洲伊人观看| 欧美一区二区网站| 久久一区中文字幕| 欧美精品一区二区三区四区| 欧美日韩在线看| 国产农村妇女毛片精品久久麻豆| 国产一区二区精品丝袜| 在线看片一区| 亚洲视频中文字幕| 性欧美18~19sex高清播放| 久久久精品一区| 亚洲成人在线网| 亚洲一区中文字幕在线观看| 久久久欧美一区二区| 欧美日韩午夜视频在线观看| 国产午夜精品一区二区三区视频| 亚洲国产乱码最新视频| 亚洲欧美日韩精品久久久久| 蜜桃av综合| 亚洲视频第一页| 久久综合久久综合久久| 国产精品国产三级国产a| 一区二区在线视频播放| 亚洲一区国产视频| 模特精品在线| 亚洲欧美国产另类| 欧美高清视频| 经典三级久久| 午夜精彩视频在线观看不卡| 欧美国产精品劲爆| 午夜视频在线观看一区二区| 欧美极品影院| 一区在线视频| 久久不射网站| 一区二区三区欧美成人| 免费观看成人鲁鲁鲁鲁鲁视频| 国产精品日韩精品| 一本久久综合亚洲鲁鲁| 欧美第十八页| 久久久久免费视频| 国产日韩欧美中文| 亚洲你懂的在线视频|