mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
3.4 KiB
105 lines
3.4 KiB
//-----------------------------------------------------------------------------
|
|
// File: D3DApp.h
|
|
//
|
|
// Desc: Application class for the Direct3D samples framework library.
|
|
//
|
|
// Copyright (c) 1998-1999 Microsoft Corporation. All rights reserved.
|
|
//-----------------------------------------------------------------------------
|
|
#ifndef D3DAPP_H
|
|
#define D3DAPP_H
|
|
|
|
#define D3D_OVERLOADS
|
|
#include <d3d.h>
|
|
|
|
#include "D3DFrame.h"
|
|
#include "D3DEnum.h"
|
|
#include "D3DUtil.h"
|
|
#include "D3DRes.h"
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Name: class CD3DApplication
|
|
// Desc:
|
|
//-----------------------------------------------------------------------------
|
|
class CD3DApplication
|
|
{
|
|
// Internal variables and member functions
|
|
CD3DFramework7* m_pFramework;
|
|
BOOL m_bActive;
|
|
BOOL m_bReady;
|
|
|
|
BOOL m_bFrameMoving;
|
|
BOOL m_bSingleStep;
|
|
DWORD m_dwBaseTime;
|
|
DWORD m_dwStopTime;
|
|
|
|
HRESULT Initialize3DEnvironment();
|
|
HRESULT Change3DEnvironment();
|
|
|
|
HRESULT Render3DEnvironment();
|
|
VOID Cleanup3DEnvironment();
|
|
VOID DisplayFrameworkError(HRESULT, DWORD);
|
|
|
|
protected:
|
|
HWND m_hWnd;
|
|
D3DEnum_DeviceInfo* m_pDeviceInfo;
|
|
LPDIRECTDRAW7 m_pDD;
|
|
LPDIRECT3D7 m_pD3D;
|
|
LPDIRECT3DDEVICE7 m_pd3dDevice;
|
|
LPDIRECTDRAWSURFACE7 m_pddsRenderTarget;
|
|
LPDIRECTDRAWSURFACE7 m_pddsRenderTargetLeft; // For stereo modes
|
|
DDSURFACEDESC2 m_ddsdRenderTarget;
|
|
|
|
// Overridable variables for the app
|
|
TCHAR* m_strWindowTitle;
|
|
BOOL m_bAppUseZBuffer;
|
|
BOOL m_bAppUseStereo;
|
|
BOOL m_bShowStats;
|
|
HRESULT (*m_fnConfirmDevice)(DDCAPS*, D3DDEVICEDESC7*);
|
|
|
|
// Overridable functions for the 3D scene created by the app
|
|
virtual HRESULT OneTimeSceneInit() { return S_OK; }
|
|
virtual HRESULT InitDeviceObjects() { return S_OK; }
|
|
virtual HRESULT DeleteDeviceObjects() { return S_OK; }
|
|
virtual HRESULT Render() { return S_OK; }
|
|
virtual HRESULT FrameMove(FLOAT) { return S_OK; }
|
|
virtual HRESULT RestoreSurfaces() { return S_OK; }
|
|
virtual HRESULT FinalCleanup() { return S_OK; }
|
|
|
|
// Overridable power management (APM) functions
|
|
virtual LRESULT OnQuerySuspend(DWORD dwFlags);
|
|
virtual LRESULT OnResumeSuspend(DWORD dwData);
|
|
|
|
// View control functions (for stereo-enabled applications)
|
|
D3DMATRIX m_matLeftView;
|
|
D3DMATRIX m_matRightView;
|
|
D3DMATRIX m_matView;
|
|
VOID SetAppLeftViewMatrix(D3DMATRIX mat) { m_matLeftView = mat; }
|
|
VOID SetAppRightViewMatrix(D3DMATRIX mat) { m_matRightView = mat; }
|
|
VOID SetAppViewMatrix(D3DMATRIX mat) { m_matView = mat; }
|
|
VOID SetViewParams(D3DVECTOR* vEyePt, D3DVECTOR* vLookatPt,
|
|
D3DVECTOR* vUpVec, FLOAT fEyeDistance);
|
|
|
|
// Miscellaneous functions
|
|
VOID ShowStats();
|
|
VOID OutputText(DWORD x, DWORD y, TCHAR* str);
|
|
|
|
public:
|
|
// Functions to create, run, pause, and clean up the application
|
|
virtual HRESULT Create(HINSTANCE, TCHAR*);
|
|
virtual INT Run();
|
|
virtual LRESULT MsgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
virtual VOID Pause(BOOL bPause);
|
|
|
|
// Class constructor
|
|
CD3DApplication();
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // D3DAPP_H
|
|
|
|
|