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

游戲技能冷卻時(shí)間的圖標(biāo)繪制

Posted on 2008-12-17 22:51 MiweiDev 閱讀(1303) 評論(1)  編輯 收藏 引用 所屬分類: DirectX
只是馬馬虎虎的 實(shí)現(xiàn)了個(gè)簡陋的,完成基本思想,剩下的就沒做了。以后在補(bǔ)上,希望有好的方法的留下腳印。


#include <Windows.h>
#include 
<d3d9.h>
#include 
<d3dx9.h>

#pragma comment(lib, 
"d3d9.lib")
#pragma comment(lib, 
"d3dx9.lib")
#pragma comment(lib, 
"winmm.lib")

LPDIRECT3D9                g_pd3d 
= 0;
LPDIRECT3DDEVICE9        g_pd3dDevice 
= 0;
LPDIRECT3DVERTEXBUFFER9    g_pVB 
= 0;

const int g_width = 1024;
const int g_height = 768;

struct CUSTOMVERTEX 
{
    FLOAT x, y, z, rhw;
    DWORD color;
    
//CUSTOMVERTEX(FLOAT _x, FLOAT _y, FLOAT _z, FLOAT _rhw, DWORD _color)
    
//    :x(_x)
    
//    ,y(_y)
    
//    ,z(_z)
    
//    ,rhw(_rhw)
    
//    ,color(_color){}
};

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)

HRESULT InitD3D(HWND hwnd)
{
    
if (NULL == (g_pd3d = Direct3DCreate9(D3D_SDK_VERSION)))
    {
        MessageBox(NULL, 
"Create D3D Failed!""Lession13", MB_OK);
        
return E_FAIL;
    }

    D3DCAPS9    caps;
    
int vp = 0;
    g_pd3d
->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps);
    
if (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
        vp 
= D3DCREATE_HARDWARE_VERTEXPROCESSING;
    
else
        vp 
= D3DCREATE_SOFTWARE_VERTEXPROCESSING;

    D3DPRESENT_PARAMETERS d3dpp;
    ::ZeroMemory(
&d3dpp, sizeof(d3dpp));
    d3dpp.AutoDepthStencilFormat 
= D3DFMT_D24S8;
    d3dpp.BackBufferCount 
= 1;
    d3dpp.BackBufferFormat 
= D3DFMT_A8R8G8B8;
    d3dpp.BackBufferHeight 
= g_height;
    d3dpp.BackBufferWidth 
= g_width;
    d3dpp.EnableAutoDepthStencil 
= true;
    d3dpp.Flags 
= 0;
    d3dpp.FullScreen_RefreshRateInHz 
= D3DPRESENT_RATE_DEFAULT;
    d3dpp.hDeviceWindow 
= hwnd;
    d3dpp.MultiSampleQuality 
= 0;
    d3dpp.MultiSampleType 
= D3DMULTISAMPLE_NONE;
    d3dpp.PresentationInterval 
= D3DPRESENT_INTERVAL_IMMEDIATE;
    d3dpp.SwapEffect 
= D3DSWAPEFFECT_DISCARD;
    d3dpp.Windowed 
= true;

    
if (FAILED(g_pd3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, vp, &d3dpp, &g_pd3dDevice)))
    {
        MessageBox(NULL, 
"Create Device Failed!""Lession13", MB_OK);
        
return E_FAIL;
    }

    
//D3DXMATRIX matProj;
    
//D3DXMatrixIdentity(&matProj);
    
//D3DXMatrixPerspectiveFovLH(&matProj, D3DX_PI/4, 1, 1, 1000);

    
//g_pd3dDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
    return S_OK;
}

HRESULT InitVB(FLOAT angle, LPRECT rt, DWORD dwColor)
{
    
//float angle = (360*0.01)*nPercent;
    int nArea = angle / 45;

    
int nTriangles = nArea + 1;
    
int nPoints = nArea + 2;

    
// 規(guī)定中心點(diǎn)
    int ndivX = (rt->right - rt->left)>>1;
    
int ndivY = (rt->bottom - rt->top)>>1;

    
// 默認(rèn)的賦值
    CUSTOMVERTEX pVerteics[] = 
    {
            {ndivX,        ndivY,        
00.f, dwColor}, // 1
            {ndivX,        rt->top,    00.f, dwColor}, // 2
            {rt->left,    rt->top,    00.f, dwColor}, // 3
            {rt->left,    ndivY,        00.f, dwColor}, // 4
            {rt->left,    rt->bottom,    00.f, dwColor}, // 5
            {ndivX,        rt->bottom, 00.f, dwColor}, // 6
            {rt->right,    rt->bottom,    00.f, dwColor}, // 7
            {rt->right, ndivY,        00.f, dwColor}, // 8
            {rt->right, rt->top,    00.f, dwColor}, // 9
            {ndivX,        rt->top,    00.f, dwColor}, // 2
    };

    
int leave_angle = (int)angle % 45;
    
if (!leave_angle)
    {
        nTriangles 
-= 1;
    }
    
// 計(jì)算此時(shí)秒針的向量
    D3DXVECTOR2    v =  *(D3DXVECTOR2 *)(pVerteics+nTriangles);
    D3DXVECTOR2 v2 
= *(D3DXVECTOR2 *)(pVerteics+nPoints);
    D3DXVECTOR2 nor 
= *(D3DXVECTOR2 *)(pVerteics);
    D3DXVECTOR2 vResult;

    
if ((angle!=45)||(angle!=225))
    {
        D3DXVECTOR2 vDummy1 
= v - nor;
        D3DXVECTOR2 vDummy2 
= v2- nor;
        
//D3DXVec2Lerp(&vResult, &vDummy1, &vDummy2, leave_angle);
        switch (nArea)
        {
        
case 0:
            vResult.y 
= 0;
            vResult.x 
= ndivX - ndivY*tanf((leave_angle)*D3DX_PI/180);
            
break;
        
case 1:
            vResult.x 
= rt->left;
            vResult.y 
= ndivY - ndivX*tanf((45-leave_angle)*D3DX_PI/180);
            
break;
        
case 2:
            vResult.x 
= rt->left;
            vResult.y 
= ndivY + ndivX*tanf((leave_angle)*D3DX_PI/180);
            
break;
        
case 3:
            vResult.y 
= rt->bottom;
            vResult.x 
= ndivX - ndivY*tanf((45-leave_angle)*D3DX_PI/180);
            
break;
        
case 4:
            vResult.y 
= rt->bottom;
            vResult.x 
= ndivX + ndivY*tanf((leave_angle)*D3DX_PI/180);
            
break;
        
case 5:
            vResult.x 
= rt->right;
            vResult.y 
= ndivY + ndivX*tanf((45-leave_angle)*D3DX_PI/180);
            
break;
        
case 6:
            vResult.x 
= rt->right;
            vResult.y 
= ndivY - ndivX*tanf((leave_angle)*D3DX_PI/180);
            
break;
        
case 7:
            vResult.x 
= ndivX + ndivY * tanf((45-leave_angle)*D3DX_PI/180);
            vResult.y 
= rt->top;
            
break;
        }
        
*(D3DXVECTOR2 *)(pVerteics+nPoints) = vResult;
    }
    
else
    {
        D3DXVec2Lerp(
&vResult, &v, &v2, leave_angle/45);
        
*(D3DXVECTOR2 *)(pVerteics+nPoints) = vResult;
    }

    
//g_pd3dDevice->CreateVertexBuffer((nPoints+1)*sizeof(CUSTOMVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMVERTEX, D3DPOOL_MANAGED, &g_pVB, 0);
    
//void * pV;
    
//if (SUCCEEDED(g_pVB->Lock(0, 0, (void **)&pV, 0)))
    
//{
    
//    memcpy(pV, pVerteics, (nPoints+1)*sizeof(CUSTOMVERTEX));
    
//    g_pVB->Unlock();
    
//}

    g_pd3dDevice
->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
    g_pd3dDevice
->SetRenderState(D3DRS_LIGHTING, FALSE);
    g_pd3dDevice
->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, 0xffffffff1.f, 0);
    g_pd3dDevice
->BeginScene();
    
//g_pd3dDevice->SetStreamSource(0, g_pVB, 0, sizeof(CUSTOMVERTEX));
    g_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
    
//g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, nTriangles, nPoints);
    g_pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN,nTriangles,pVerteics,sizeof(CUSTOMVERTEX)); 
    g_pd3dDevice
->EndScene();
    g_pd3dDevice
->Present(0000);
    
return S_OK;
}

VOID Cleanup()
{
    
if (g_pVB)
    {
        g_pVB
->Release();
        g_pVB 
= 0;
    }

    
if (g_pd3dDevice)
    {
        g_pd3dDevice
->Release();
        g_pd3dDevice 
= 0;
    }

    
if (g_pd3d)
    {
        g_pd3d
->Release();
        g_pd3d 
= 0;
    }
}

int timeCounter = 0;
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    
switch( msg )
    {
    
case WM_CREATE:
        SetTimer(hWnd, 
125, NULL);
        
return 0;
    
case WM_DESTROY:
        
        Cleanup();
        PostQuitMessage( 
0 );
        
return 0;
    
case WM_TIMER:
        {
            timeCounter
++;
            timeCounter
%=360;
            RECT rt
= {00200200};
            InitVB(
360-timeCounter, &rt, 0xffff0000);
        }
        
return 0;
    }

    
return DefWindowProc( hWnd, msg, wParam, lParam );
}




//-----------------------------------------------------------------------------
// Name: WinMain()
// Desc: The application's entry point
//-----------------------------------------------------------------------------
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
    
// Register the window class
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L0L,
        GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
        
"D3D Tutorial", NULL };
    RegisterClassEx( 
&wc );

    
// Create the application's window
    HWND hWnd = CreateWindow( "D3D Tutorial""D3D Tutorial 05: Textures",
        WS_OVERLAPPEDWINDOW, 
100100, g_width, g_height,
        NULL, NULL, wc.hInstance, NULL );

    
// Initialize Direct3D
    if( SUCCEEDED( InitD3D( hWnd ) ) )
    {
        
//// Create the scene geometry
        //if( SUCCEEDED( InitVB() ) )
        
//{
            
// Show the window
            ShowWindow( hWnd, SW_SHOWDEFAULT );
            UpdateWindow( hWnd );

            
// Enter the message loop
            MSG msg;
            ZeroMemory( 
&msg, sizeof(msg) );
            
while( msg.message!=WM_QUIT )
            {
                
if( PeekMessage( &msg, NULL, 0U0U, PM_REMOVE ) )
                {
                    TranslateMessage( 
&msg );
                    DispatchMessage( 
&msg );
                }
                
else
                {

                }
            }
        
//}
    }

    UnregisterClass( 
"D3D Tutorial", wc.hInstance );
    
return 0;
}


Feedback

# re: 游戲技能冷卻時(shí)間的圖標(biāo)繪制  回復(fù)  更多評論   

2009-04-23 17:10 by bo哥
excellent!

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美大成色www永久网站婷| 欧美凹凸一区二区三区视频| 久久欧美中文字幕| 亚洲高清不卡一区| 亚洲国产成人久久综合一区| 嫩草成人www欧美| 久久最新视频| 欧美在线观看一区二区| 亚洲美女毛片| 久久成人av少妇免费| 亚洲第一页在线| 在线成人小视频| 国产一区二区三区观看 | 久久久久se| 久久久99精品免费观看不卡| 欧美高清视频在线| 亚洲一区影音先锋| 99在线精品视频在线观看| 禁断一区二区三区在线 | 欧美三级日本三级少妇99| 亚洲伊人一本大道中文字幕| 在线视频欧美日韩| 亚洲第一区在线观看| 国产一区二区高清| 久久av二区| 亚洲欧美国产77777| 亚洲高清av在线| 中日韩在线视频| 99热在这里有精品免费| 亚洲无限av看| 久久久久国产精品一区| 亚洲精品婷婷| 久久男女视频| 韩国成人精品a∨在线观看| 夜夜狂射影院欧美极品| 久久精品视频亚洲| 一区二区三区欧美视频| 欧美资源在线| 国产精品麻豆欧美日韩ww| 欧美日韩精品欧美日韩精品| 国产手机视频一区二区| 亚洲午夜久久久久久久久电影院| 久久综合导航| 久久精品国产在热久久| 一区二区三区在线观看国产| 久久精品毛片| 亚洲综合999| 国产精品一区一区| 久久久最新网址| 99天天综合性| 欧美午夜剧场| 久久久久久久久久久成人| 亚洲综合欧美日韩| 国产午夜精品一区二区三区视频| 国产欧美日韩不卡免费| 久久精品亚洲精品| 亚洲第一黄色| 国产精品视频yy9099| 亚洲狠狠丁香婷婷综合久久久| 欧美性开放视频| 亚洲国产午夜| 亚洲精品国产精品国自产观看| 亚洲欧美日本在线| 亚洲午夜精品在线| 欧美日韩黄色大片| 亚洲精品日韩在线观看| 亚洲国产另类久久久精品极度 | 国产一区二区精品| 亚洲曰本av电影| 亚洲免费综合| 欧美午夜精品久久久| 日韩香蕉视频| 亚洲婷婷综合久久一本伊一区| 免费在线观看成人av| 麻豆精品视频在线| 亚洲韩国青草视频| 欧美国产视频在线观看| 91久久午夜| 亚洲精品中文字幕女同| 欧美精品激情blacked18| 欧美激情一级片一区二区| 亚洲国产精品久久久久秋霞蜜臀| 久久免费精品视频| 亚洲精品乱码久久久久久久久| 日韩视频免费在线| 国产精品亚洲一区| 久久日韩精品| 亚洲天堂第二页| 免费成人黄色| 久久久久久一区二区| 欧美大尺度在线| 亚洲一区二区免费看| 黄色日韩精品| 亚洲精品视频在线| 午夜视黄欧洲亚洲| 亚洲三级观看| 红桃视频国产精品| 国产精品免费一区豆花| 久久亚洲欧美| 欧美伊人精品成人久久综合97 | 最新国产の精品合集bt伙计| 欧美日韩一区二区国产| 老司机午夜精品视频在线观看| 夜夜爽av福利精品导航| 欧美+亚洲+精品+三区| 久久激情五月丁香伊人| 亚洲在线观看免费| 亚洲最快最全在线视频| 日韩一级精品| 一级成人国产| 性久久久久久久久| 亚洲一区二区三区涩| 在线一区二区三区四区五区| 亚洲精品一区二区三区四区高清 | 国产精品视频1区| 国产女人精品视频| 国产精品久久久久久久久久久久久久 | 国模精品娜娜一二三区| 国产美女精品视频| 国产午夜精品全部视频播放| 国产综合色产在线精品| 伊人色综合久久天天| 亚洲精品久久久蜜桃| 日韩视频中午一区| 亚洲欧美日韩另类精品一区二区三区| 狠色狠色综合久久| 亚洲国产精品va在线观看黑人| 一区二区亚洲欧洲国产日韩| 亚洲大胆av| 性久久久久久| 欧美激情成人在线视频| 亚洲一区免费在线观看| 蜜桃视频一区| 国产在线欧美| 欧美一区激情视频在线观看| 欧美激情精品久久久久久蜜臀| 日韩午夜三级在线| 久久午夜精品一区二区| 国产精品网站一区| 9色国产精品| 欧美片网站免费| 亚洲大片免费看| 久久久国产一区二区| 一区二区三区免费在线观看| 老牛影视一区二区三区| 国产欧美日韩精品专区| 在线亚洲精品福利网址导航| 亚洲欧洲在线视频| 欧美gay视频激情| 亚洲三级电影在线观看| 欧美h视频在线| 老司机免费视频一区二区| 久久人人97超碰精品888| 久久嫩草精品久久久精品| 亚洲一二三区精品| 欧美日韩国产高清视频| 亚洲永久免费精品| 国产一区二区在线观看免费播放| 午夜精品一区二区三区在线视| 日韩视频在线一区| 国产精品自拍视频| 久久久久久亚洲精品杨幂换脸| 久久精品成人| 亚洲精品国产精品国产自| 一区二区三区不卡视频在线观看 | 亚洲午夜视频在线观看| 国产精品久久久久免费a∨大胸| 久久久国产精品一区二区三区| 久久久久成人网| 亚洲最黄网站| 久久av一区二区三区漫画| 亚洲国产精品www| 亚洲综合二区| 在线视频亚洲欧美| 欧美顶级艳妇交换群宴| 久久99伊人| 欧美日韩亚洲高清一区二区| 久久久欧美精品sm网站| 欧美日韩一区二区三区四区在线观看| 久久久激情视频| 国产精品资源在线观看| 亚洲四色影视在线观看| aaa亚洲精品一二三区| 欧美激情区在线播放| 免费亚洲视频| 亚洲激情第一页| 久久久久欧美精品| 久久婷婷色综合| 伊人夜夜躁av伊人久久| 香蕉久久a毛片| 久久久精品视频成人| 国产日产亚洲精品| 久久久.com| 欧美大香线蕉线伊人久久国产精品| 国产日韩欧美视频在线| 久久精品99国产精品日本| 欧美国产精品| 一本色道久久88亚洲综合88| 欧美日韩另类视频| 亚洲欧美久久久久一区二区三区|