0001: // ----------------------------------------------------------------------------
0002: //
0003: // draw.cpp - 描画部分
0004: // 
0005: // Copyright (c) 2002 imagire (imagire@gmail.com)
0006: // All Rights Reserved.
0007: //
0008: // ----------------------------------------------------------------------------
0009: #define STRICT
0010: 
0011: #include <windows.h>
0012: #include "main.h"
0013: #include "draw.h"
0014: 
0015: #include "CSkinModel.h"
0016: 
0017: CSkinModel  model;
0018: D3DXVECTOR4 rot = D3DXVECTOR4(-PI/2.0f, 0.0f, 0.0f, 0.0f);
0019: 
0020: // ----------------------------------------------------------------------------
0021: // 外部変数
0022: 
0023: // ----------------------------------------------------------------------------
0024: // Name: InitRender()
0025: // Desc: 初期化
0026: //-----------------------------------------------------------------------------
0027: HRESULT InitRender(LPDIRECT3D8 pD3D, LPDIRECT3DDEVICE8 pD3DDev)
0028: {
0029:     HRESULT hr;
0030:     DWORD time;
0031:     
0032:     timeBeginPeriod(10);    // 10ms でタイマーを呼び出す
0033:     time = timeGetTime();
0034:     
0035:     // モデルの初期化
0036:     D3DCAPS8 caps;
0037:     pD3D->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps);
0038:     model.Init(time, pD3DDev, caps);
0039:     
0040:     // もし、ファイルがなかったら、ディフォルトのファイルを読む
0041:     if('\0' == model.GetFileName()[0]){
0042:         hr = model.Load("tiny.x");
0043:     }
0044:  
0045:     // レンダリングの状態の設定
0046:     pD3DDev->SetRenderState( D3DRS_ZENABLE, TRUE);
0047:     pD3DDev->SetRenderState( D3DRS_LIGHTING,  FALSE );
0048:     return S_OK;
0049: }
0050: // ----------------------------------------------------------------------------
0051: // Name: Render()
0052: // Desc: ポリゴンの描画
0053: //-----------------------------------------------------------------------------
0054: void Render(LPDIRECT3DDEVICE8 pD3DDev)
0055: {
0056:     DWORD time = timeGetTime();
0057: 
0058:     D3DXMATRIXA16 m;
0059: 
0060:     // 重心移動
0061:     D3DXMatrixIdentity(&m);
0062:     D3DXMatrixTranslation(&m, 0, -model.GetRadius() * 0.5f, 0);
0063:     model.SetTrans(m);
0064:     // 回転
0065:     D3DXMatrixIdentity(&m);
0066:     D3DXMatrixRotationYawPitchRoll(&m, rot.y, rot.x, rot.z);
0067:     model.SetRot(m);
0068:     
0069:     // カメラの設定
0070:     D3DXMatrixIdentity(&m);
0071:     D3DXMatrixTranslation(&m, 0, 0, -model.GetRadius() * 2.5f);
0072:     model.SetView(m);
0073:     // モデルの表示
0074:     model.FrameMove(time);
0075:     model.Render();
0076: }
0077: 
0078: //-----------------------------------------------------------------------------
0079: // Name: CleanRender()
0080: // Desc: 後始末
0081: //-----------------------------------------------------------------------------
0082: void CleanRender(LPDIRECT3DDEVICE8 pD3DDev)
0083: {
0084:     model.Release();
0085: }
0086: