The DejaVU Framework --
hush 3.1
-
[up]
[top] -
index
make
include
source
logic
grammar
scripts
html
configure
mx
slides
talks
scenes
reports
projects
<body bgcolor="#FFFFFF" text="#000000">
//------------------------------------------------------------------------------
// File: CustomMixer.h
//
// Desc: DirectShow sample code - MultiVMR9 GamePlayer
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#pragma once
include "scene/scene.h"
include <Hall.h>
include <D3DFont.h>
include
using namespace std;
class CGameMixer;
static const DWORD g_FVFframe = D3DFVF_XYZ | D3DFVF_DIFFUSE;
static const DWORD g_FVFMixer = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1;
<blockquote>
****************************Public*Routine******************************\
class CGameMixer
Customized version of IMultiVMR9MixerControl
\*************************************************************************</blockquote>
<h4 align=right text=red> CGameMixer:</h4><hr>
class CGameMixer:
public CUnknown,
public IMultiVMR9MixerControl
{
public:
CGameMixer(LPUNKNOWN pUnk, HRESULT *phr);
virtual ~CGameMixer();
// IUnknown implementation
DECLARE_IUNKNOWN
STDMETHODIMP NonDelegatingQueryInterface(REFIID, void**);
static CUnknown *CreateInstance(LPUNKNOWN, HRESULT *);
// IMultiVMR9MixerControl implementation
// IMultiVMR9MixerControl: methods we override
STDMETHOD(Compose)(
void* lpParam
);
STDMETHOD(Render)(
IDirect3DDevice9 *pDevice,
void* lpParam
);
STDMETHOD(BeginDeviceLoss)(
void
);
STDMETHOD(EndDeviceLoss)(
IDirect3DDevice9* pDevice
);
STDMETHOD(AddVideoSource)(
DWORD_PTR dwID,
LONG lImageWidth,
LONG lImageHeight,
LONG lTextureWidth,
LONG lTextureHeight
);
STDMETHOD(DeleteVideoSource)(
DWORD_PTR dwID
);
STDMETHOD(SetRenderEngineOwner)(
IMultiVMR9RenderEngine* pRenderEngine
);
STDMETHOD(GetRenderEngineOwner)(
IMultiVMR9RenderEngine** ppRenderEngine
);
STDMETHOD(Initialize)(
IDirect3DDevice9 *pDevice
);
// IMultiVMR9MixerControl: methods we do not implement (i.e. we do not need)
STDMETHOD(GetOutputRect)(
DWORD_PTR dwID,
NORMALIZEDRECT* lpNormRect
)
{ return E_NOTIMPL; }
STDMETHOD(GetIdealOutputRect)(
DWORD_PTR dwID,
DWORD dwWidth,
DWORD dwHeight,
NORMALIZEDRECT* lpNormRect
)
{ return E_NOTIMPL; }
STDMETHOD(SetOutputRect)(
DWORD_PTR dwID,
NORMALIZEDRECT* lpNormRect
)
{ return E_NOTIMPL; }
STDMETHOD(GetZOrder)(
DWORD_PTR dwID,
DWORD *pdwZ
)
{ return E_NOTIMPL; }
STDMETHOD(SetZOrder)(
DWORD_PTR dwID,
DWORD pdwZ
)
{ return E_NOTIMPL; }
STDMETHOD(GetBackgroundColor)(
COLORREF* pColor
)
{ return E_NOTIMPL; }
STDMETHOD(SetBackgroundColor)(
COLORREF Color
)
{ return E_NOTIMPL; }
STDMETHOD(GetAlpha)(
DWORD_PTR dwID,
float* pAlpha
)
{ return E_NOTIMPL; }
STDMETHOD(SetAlpha)(
DWORD_PTR dwID,
float Alpha
)
{ return E_NOTIMPL; }
// class-specific public methods
HRESULT RestoreDeviceObjects( IDirect3DDevice9 *pDevice );
HRESULT SetWorldMatrix( D3DXMATRIX& M );
HRESULT Animate( BOOL bAnimate);
private:
// subclasses
<hr>
CMovie</h4>
class CMovie
{
public:
CMovie( DWORD_PTR dwID,
LONG lImageWidth,
LONG lImageHeight,
LONG lTextureWidth,
LONG lTextureHeight);
// data
DWORD_PTR m_dwID;
float m_fY;
float m_fZ;
float m_fU;
float m_fV;
};
CFrame</h4>
class CFrame
{
public:
CFrame( );
HRESULT Calculate( int n, D3DVECTOR& v0, CMovie* pMovie );
HRESULT CalculateInFocus( CMovie* pMovie );
HRESULT Render(
IDirect3DDevice9 *pDevice,
IDirect3DTexture9* pTexture);
void FlipToEnd( int N);
void MoveY( float Shift );
struct SpotVertex
{
D3DVECTOR Pos;
};
struct Vertex
{
D3DVECTOR Pos;
D3DCOLOR color;
float tu;
float tv;
};
struct FrameVertex
{
D3DVECTOR Pos;
D3DCOLOR color;
};
// data
DWORD_PTR m_dwID;
struct SpotVertex m_S[4];
struct Vertex m_V[4];
struct FrameVertex m_F[10];
};
// class CFrame
private:
// class-specific private methods
void Clean_();
// data
public:
private:
CCritSec m_ObjectLock; // this object has to be thread-safe
BOOL m_bAnimate;
CD3DFont* m_pFont;
BOOL m_bInitialized;
CHall* m_pHall;
CCharacter* m_pCharacter;
CFrame m_ActiveMovieFrame;
CFrame m_Frames[8];
list m_listMovies;
CMovie* m_pActiveMovie;
float m_fSpeed;
DWORD m_dwPrevTick;
int m_Left;
IMultiVMR9RenderEngine* m_pOwner;
D3DXMATRIX m_matView;
D3DXMATRIX m_matWorld;
D3DXMATRIX m_matProj;
};
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2780434-1";
urchinTracker();
</script>