亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? winmain.cpp

?? 用DirectX制作高級動畫-[Advanced.Animation.with.DirectX]
?? CPP
字號:
#include <windows.h>

#include "d3d9.h"
#include "d3dx9.h"
#include "Direct3D.h"
#include "SkeletalAnim.h"
#include "SkeletalAnimBlend.h"

// Direct3D objects
IDirect3D9       *g_pD3D       = NULL;
IDirect3DDevice9 *g_pD3DDevice = NULL;

// Mesh collection and frame hierarchy
D3DXMESHCONTAINER_EX *g_Mesh  = NULL;
D3DXFRAME_EX         *g_Frame = NULL;

// Animation collection object
cBlendedAnimationCollection g_Anim;

// Blending toggles (arms, legs)
char g_BlendFlags[5];

// Guide texture and sprite interface
IDirect3DTexture9 *g_GuideTexture = NULL;
ID3DXSprite       *g_Guide        = NULL;

// Window class and caption text
char g_szClass[]   = "BlendSkeletalAnimClass";
char g_szCaption[] = "Blended Skeletal Animation Demo by Jim Adams";

// Function prototypes
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int nCmdShow);
long FAR PASCAL WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

BOOL DoInit(HWND hWnd);
void DoShutdown();
void DoFrame();

int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int nCmdShow)
{
  WNDCLASSEX wcex;
  MSG        Msg;
  HWND       hWnd;

  // Initialize the COM system
  CoInitialize(NULL);

  // Create the window class here and register it
  wcex.cbSize        = sizeof(wcex);
  wcex.style         = CS_CLASSDC;
  wcex.lpfnWndProc   = WindowProc;
  wcex.cbClsExtra    = 0;
  wcex.cbWndExtra    = 0;
  wcex.hInstance     = hInst;
  wcex.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
  wcex.hCursor       = LoadCursor(NULL, IDC_ARROW);
  wcex.hbrBackground = NULL;
  wcex.lpszMenuName  = NULL;
  wcex.lpszClassName = g_szClass;
  wcex.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
  if(!RegisterClassEx(&wcex))
    return FALSE;

  // Create the main window
  hWnd = CreateWindow(g_szClass, g_szCaption,
              WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
              0, 0, 640, 480,
              NULL, NULL, hInst, NULL);
  if(!hWnd)
    return FALSE;
  ShowWindow(hWnd, SW_NORMAL);
  UpdateWindow(hWnd);

  // Call init function and enter message pump
  if(DoInit(hWnd) == TRUE) {

    // Start message pump, waiting for user to exit
    ZeroMemory(&Msg, sizeof(MSG));
    while(Msg.message != WM_QUIT) {
      if(PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE)) {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
      }

      // Render a single frame
      DoFrame();
    }
  }

  // Call shutdown
  DoShutdown();
 
  // Unregister the window class
  UnregisterClass(g_szClass, hInst);

  // Shut down the COM system
  CoUninitialize();

  return 0;
}


long FAR PASCAL WindowProc(HWND hWnd, UINT uMsg,              \
                           WPARAM wParam, LPARAM lParam)
{
  switch(uMsg) {
    case WM_KEYUP:

      // Toggle a body part
      if(wParam >= '1' && wParam <='5')
        g_BlendFlags[wParam-'1'] ^= 1;

      // Clear toggles
      if(wParam == 32)
        memset(g_BlendFlags, 1, 5);

      break;

    case WM_DESTROY:
      PostQuitMessage(0);
      break;

    default:
      return DefWindowProc(hWnd, uMsg, wParam, lParam);
  }

  return 0;
}

BOOL DoInit(HWND hWnd)
{
  // Initialize Direct3D
  InitD3D(&g_pD3D, &g_pD3DDevice, hWnd);

  // Load a skeletal mesh
  LoadMesh(&g_Mesh, &g_Frame, g_pD3DDevice, "..\\Data\\tiny.x", "..\\Data\\");

  // Load an animation collection
  g_Anim.Load("..\\Data\\tiny.x");

  // Map the animation to the frame hierarchy
  g_Anim.Map(g_Frame);

  // Load the guide texture and create the sprite interface
  D3DXCreateTextureFromFileEx(g_pD3DDevice, "..\\Data\\Guide.bmp", 
                              D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0,
                              D3DFMT_A1R5G5B5, D3DPOOL_DEFAULT, D3DX_DEFAULT, 
                              D3DX_DEFAULT, 0xFF000000,
                              NULL, NULL, &g_GuideTexture);
  D3DXCreateSprite(g_pD3DDevice, &g_Guide);

  // Clear toggles
  memset(g_BlendFlags, 1, 5);

  return TRUE;
}

void DoShutdown()
{
  // Free animation collection data
  g_Anim.Free();

  // Free mesh and frame data
  delete g_Mesh;
  delete g_Frame;

  // Free guide texture and sprite interface
  ReleaseCOM(g_GuideTexture);
  ReleaseCOM(g_Guide);

  // Release D3D objects
  ReleaseCOM(g_pD3DDevice);
  ReleaseCOM(g_pD3D);
}

void DoFrame()
{
  static DWORD StartTime = timeGetTime();
  DWORD ThisTime = timeGetTime();

  // Clear the frames' transformation matrices
  if(g_Frame)
    g_Frame->Reset();

  // Blend the animations
  if(g_BlendFlags[0])
    g_Anim.Blend("left_arm",  (ThisTime-StartTime), TRUE);
  if(g_BlendFlags[1])
    g_Anim.Blend("right_arm", (ThisTime-StartTime), TRUE);
  if(g_BlendFlags[2])
    g_Anim.Blend("left_leg",  (ThisTime-StartTime), TRUE);
  if(g_BlendFlags[3])
    g_Anim.Blend("right_leg", (ThisTime-StartTime), TRUE);
  if(g_BlendFlags[4])
    g_Anim.Blend("body",      (ThisTime-StartTime), TRUE);

  // Rebuild the frame hierarchy transformations
  if(g_Frame)
    g_Frame->UpdateHierarchy();

  // Build the skinned mesh
  UpdateMesh(g_Mesh);

  // Calculate a view transformation matrix
  D3DXMATRIX matView;
  D3DXMatrixLookAtLH(&matView,
                     &D3DXVECTOR3(600.0f, 200.0f, -600.0f),
                     &D3DXVECTOR3(0.0f, 0.0f, 0.0f),
                     &D3DXVECTOR3(0.0f, 1.0f, 0.0f));
  g_pD3DDevice->SetTransform(D3DTS_VIEW, &matView);

  // Set a world transformation
  D3DXMATRIX matWorld;
  D3DXMatrixIdentity(&matWorld);
  g_pD3DDevice->SetTransform(D3DTS_WORLD, &matWorld);

  // Clear the device and start drawing the scene
  g_pD3DDevice->Clear(NULL, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_RGBA(0,0,64,255), 1.0f, 0);
  if(SUCCEEDED(g_pD3DDevice->BeginScene())) {

    // Render skinned mesh
    DrawMesh(g_Mesh);

    // Draw the guide
    g_Guide->Draw(g_GuideTexture, NULL, NULL, NULL, 0.0f, &D3DXVECTOR2(0.0f, 0.0f), 0xFFFFFFFF);

    // End the scene
    g_pD3DDevice->EndScene();
  }

  // Present the scene to the user
  g_pD3DDevice->Present(NULL, NULL, NULL, NULL);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
秋霞午夜鲁丝一区二区老狼| 国产精品国产三级国产普通话蜜臀| 成人av综合在线| 久久精品国产精品亚洲综合| 日韩专区一卡二卡| 免费在线一区观看| 日本成人在线不卡视频| 日韩国产在线一| 免费日韩伦理电影| 精品午夜久久福利影院| 国产精品一级二级三级| 成人影视亚洲图片在线| av电影一区二区| 91久久奴性调教| 欧美日韩在线播放三区| 日韩一区二区三区电影| 亚洲精品在线免费观看视频| 国产欧美精品一区| 亚洲视频 欧洲视频| 亚洲高清久久久| 狠狠网亚洲精品| 99riav久久精品riav| 欧美少妇xxx| 欧美mv日韩mv国产网站app| 久久久久亚洲蜜桃| 亚洲啪啪综合av一区二区三区| 一区二区三区欧美日韩| 日本午夜精品视频在线观看| 国产一区二区三区视频在线播放| 国产 日韩 欧美大片| 欧美图区在线视频| 久久综合九色综合欧美亚洲| 国产精品国产三级国产有无不卡 | 日韩免费看的电影| 国产日韩欧美a| 亚洲第一福利视频在线| 精品一区二区三区免费| 色视频成人在线观看免| 久久影院午夜论| 亚洲综合色网站| 国产精品一级片在线观看| 在线欧美一区二区| 久久精品网站免费观看| 亚洲无人区一区| 不卡在线观看av| 日韩欧美国产综合| 亚洲国产综合在线| 成人蜜臀av电影| 日韩欧美国产一区二区三区| 亚洲免费电影在线| 国产成人综合在线观看| 7878成人国产在线观看| 日韩美女啊v在线免费观看| 久久99深爱久久99精品| 欧美视频一区二区在线观看| 国产日韩欧美电影| 精品一区二区三区香蕉蜜桃| 欧美三级日本三级少妇99| 国产精品免费观看视频| 精品中文av资源站在线观看| 欧美日韩1234| 亚洲电影第三页| 91在线观看下载| 国产欧美精品一区二区色综合| 蜜桃视频在线一区| 7878成人国产在线观看| 亚洲成人精品一区二区| 欧美午夜影院一区| 亚洲精品免费在线播放| 成人毛片在线观看| 日本一区二区成人| 国产一区二区三区四区在线观看| 精品久久久久久久一区二区蜜臀| 丝袜美腿亚洲一区二区图片| 精品视频免费看| 亚洲一二三级电影| 欧美影片第一页| 亚洲高清不卡在线观看| 欧美卡1卡2卡| 毛片一区二区三区| 精品久久久三级丝袜| 国模冰冰炮一区二区| 久久先锋影音av鲁色资源网| 国产在线一区二区综合免费视频| 日韩欧美三级在线| 狠狠v欧美v日韩v亚洲ⅴ| 久久精品免费在线观看| 高清不卡在线观看| 日韩美女视频一区| 欧美无人高清视频在线观看| 天堂资源在线中文精品| 日韩精品综合一本久道在线视频| 精品中文av资源站在线观看| 欧美国产视频在线| 91免费视频观看| 午夜婷婷国产麻豆精品| 日韩欧美综合一区| 国产福利精品一区二区| 国产精品国产三级国产普通话蜜臀| 色网综合在线观看| 日韩和欧美一区二区| 久久精品水蜜桃av综合天堂| jizzjizzjizz欧美| 天堂影院一区二区| 久久久久久久久97黄色工厂| 99视频一区二区| 舔着乳尖日韩一区| 亚洲国产精品精华液ab| 欧洲精品视频在线观看| 久久精品久久久精品美女| 国产午夜三级一区二区三| 色综合中文字幕国产 | 免费久久精品视频| 欧美国产亚洲另类动漫| 欧美日本一区二区在线观看| 国产在线播放一区三区四| 亚洲美女免费在线| 精品动漫一区二区三区在线观看| 99久久99久久精品国产片果冻| 视频在线在亚洲| 亚洲欧洲精品一区二区三区不卡| 欧美一区二区观看视频| 成人精品高清在线| 另类中文字幕网| 樱花影视一区二区| 久久精品欧美一区二区三区麻豆 | 91精品国产一区二区三区香蕉| 国产98色在线|日韩| 日韩av电影天堂| 亚洲欧洲色图综合| www一区二区| 欧美久久久久久久久| 波多野结衣亚洲一区| 经典三级一区二区| 视频一区国产视频| 亚洲精品水蜜桃| 国产精品久久久久久亚洲毛片| 欧美一区二区三区免费观看视频| 91美女片黄在线观看| 国产精一区二区三区| 男男gaygay亚洲| 日韩影院精彩在线| 亚洲综合色网站| 亚洲主播在线观看| 一区二区三区欧美| 一区二区三国产精华液| √…a在线天堂一区| 中文字幕欧美激情| 欧美激情在线观看视频免费| 精品福利一区二区三区免费视频| 69p69国产精品| 在线成人免费视频| 欧美精品在线观看一区二区| 欧美性猛片aaaaaaa做受| 欧美综合在线视频| 色八戒一区二区三区| 99re这里都是精品| 色综合一个色综合| 欧洲激情一区二区| 欧美人与性动xxxx| 日韩亚洲欧美一区| 日韩精品一区二区三区在线播放| 日韩一区二区免费视频| 欧美大尺度电影在线| 精品国产凹凸成av人网站| 精品国产髙清在线看国产毛片 | 国产成人综合在线| 99久久夜色精品国产网站| 9l国产精品久久久久麻豆| 91麻豆免费看| 欧美日韩激情在线| 欧美xxxx老人做受| 日本一区免费视频| 国产欧美视频一区二区三区| 国产精品激情偷乱一区二区∴| 亚洲欧美另类图片小说| 亚洲成av人片在线| 黄一区二区三区| 91网站最新地址| 51精品国自产在线| 久久久久久9999| 亚洲男人天堂av| 美女网站色91| 91网上在线视频| 日韩午夜在线观看| 国产精品国产三级国产a| 亚洲成人免费视| 国产69精品久久久久777| 欧美在线免费观看亚洲| 欧美精品一区二区在线播放| 中文字幕一区二区三| 日本在线播放一区二区三区| 国产精品99久久久久| 欧美日韩亚洲另类| 国产亚洲欧美在线| 五月天亚洲精品| 成人av高清在线| 日韩免费高清视频| 一区二区高清在线| 国产精品1区2区3区|