topical media & game development
graphic-directx-game-22-DisplacementMap-DrawableTex2D.cpp / cpp
//=============================================================================
// DrawableTex2D.cpp by Frank Luna (C) 2005 All Rights Reserved.
//=============================================================================
include <DrawableTex2D.h>
include <d3dApp.h>
DrawableTex2D::DrawableTex2D(UINT width, UINT height, UINT mipLevels,
D3DFORMAT texFormat, bool useDepthBuffer,
D3DFORMAT depthFormat, D3DVIEWPORT9& viewport, bool autoGenMips)
: mTex(0), mRTS(0), mTopSurf(0), mWidth(width), mHeight(height),
mMipLevels(mipLevels), mTexFormat(texFormat), mUseDepthBuffer(useDepthBuffer),
mDepthFormat(depthFormat), mViewPort(viewport), mAutoGenMips(autoGenMips)
{
}
DrawableTex2D::~DrawableTex2D()
{
onLostDevice();
}
IDirect3DTexture9* DrawableTex2D::d3dTex()
{
return mTex;
}
void DrawableTex2D::onLostDevice()
{
ReleaseCOM(mTex);
ReleaseCOM(mRTS);
ReleaseCOM(mTopSurf);
}
void DrawableTex2D::onResetDevice()
{
UINT usage = D3DUSAGE_RENDERTARGET;
if(mAutoGenMips)
usage |= D3DUSAGE_AUTOGENMIPMAP;
HR(D3DXCreateTexture(gd3dDevice, mWidth, mHeight, mMipLevels, usage, mTexFormat, D3DPOOL_DEFAULT, &mTex));
HR(D3DXCreateRenderToSurface(gd3dDevice, mWidth, mHeight, mTexFormat, mUseDepthBuffer, mDepthFormat, &mRTS));
HR(mTex->GetSurfaceLevel(0, &mTopSurf));
}
void DrawableTex2D::beginScene()
{
mRTS->BeginScene(mTopSurf, &mViewPort);
}
void DrawableTex2D::endScene()
{
mRTS->EndScene(D3DX_FILTER_NONE);
}
(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.