Example#1
File: Emboss.cpp Project: grakidov/Render3D
//-----------------------------------------------------------------------------
// Name: InitDeviceObjects()
// Desc: Initialize scene objects.
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::InitDeviceObjects()
{
// Init the font
m_pFont->InitDeviceObjects( m_pd3dDevice );
// Load texture map. Note that this is a special textures, which has a
// height field stored in the alpha channel
if( FAILED( D3DUtil_CreateTexture( m_pd3dDevice, _T("emboss1.tga"),
&m_pEmbossTexture, D3DFMT_A8R8G8B8 ) ) )
return D3DAPPERR_MEDIANOTFOUND;
// Load geometry
if( FAILED( m_pObject->Create( m_pd3dDevice, _T("tiger.x") ) ) )
return D3DAPPERR_MEDIANOTFOUND;
// Set attributes for the geometry
m_pObject->SetFVF( m_pd3dDevice, D3DFVF_EMBOSSVERTEX );
m_pObject->UseMeshMaterials( FALSE );
// Compute the object's tangents and binormals, whaich are needed for the
// emboss-tecnhique's texture-coordinate shifting calculations
ComputeTangentsAndBinormals();
return S_OK;
}
Example#2
File: SpeedTreeWrapper.cpp Project: ak4hige/myway3d
LPDIRECT3DTEXTURE9 CSpeedTreeWrapper::LoadTexture(const char* pFilename)
{
LPDIRECT3DTEXTURE9 pTexture = NULL;
if (D3DUtil_CreateTexture(m_pDx, const_cast<char*>(pFilename), &pTexture) != S_OK)
fprintf(stderr, "Warning: failed to load texture [%s]\n", pFilename);
return pTexture;
}
Example#3
File: main.cpp Project: jjuiddong/Dx9-Shader
//-------------------------------------------------------------
// Name: InitDeviceObjects()
// Desc: 디바이스가 생성된후의 초기화
// 프레임버퍼 포맷과 디바이스 종류가 변한뒤에 호출
// 여기서 확보한 메모리는 DeleteDeviceObjects()에서 해제
//-------------------------------------------------------------
HRESULT CMyD3DApplication::InitDeviceObjects()
{
HRESULT hr;
LPDIRECT3DTEXTURE9 pHeightTexture;
D3DSURFACE_DESC desc;
// 법선맵 생성
D3DUtil_CreateTexture( m_pd3dDevice,// 높이맵 읽기
_T("height.bmp"), &pHeightTexture );
pHeightTexture->GetLevelDesc(0,&desc);// 텍스처 정보 얻기
D3DXCreateTexture(m_pd3dDevice, desc.Width, desc.Height, 0, 0,
D3DFMT_X8R8G8B8, D3DPOOL_MANAGED, &m_pNormalMap);// 텍스처 생성
D3DXComputeNormalMap(m_pNormalMap, // 법선맵 생성
pHeightTexture, NULL, 0, D3DX_CHANNEL_RED, 1.0f);
SAFE_RELEASE( pHeightTexture ); // 필요없어진 리소스 해제
// 정점선언 오브젝트 생성
if( FAILED( hr = m_pd3dDevice->CreateVertexDeclaration(
decl, &m_pDecl )))
return DXTRACE_ERR ("CreateVertexDeclaration", hr);
// 주전자 읽기
if(FAILED(hr=m_pMesh ->Create( m_pd3dDevice, _T("t-pot.x"))))
return DXTRACE_ERR( "Load Object", hr );
// 지형 읽기
if(FAILED(hr=m_pMeshBg->Create( m_pd3dDevice, _T("map.x"))))
return DXTRACE_ERR( "Load Ground", hr );
// 셰이더 읽기
LPD3DXBUFFER pErr=NULL;
if( FAILED( hr = D3DXCreateEffectFromFile(
m_pd3dDevice, "hlsl.fx", NULL, NULL,
0 , NULL, &m_pEffect, &pErr ))){
// 셰이더 읽기 실패
MessageBox( NULL, (LPCTSTR)pErr->GetBufferPointer()
, "ERROR", MB_OK);
}else{
m_hTechnique = m_pEffect->GetTechniqueByName( "TShader" );
m_hmWVP = m_pEffect->GetParameterByName( NULL, "mWVP" );
m_hvLightDir = m_pEffect->GetParameterByName( NULL, "vLightDir" );
m_hvColor = m_pEffect->GetParameterByName( NULL, "vColor" );
m_hvEyePos = m_pEffect->GetParameterByName( NULL, "vEyePos" );
m_htDecaleTex= m_pEffect->GetParameterByName( NULL, "DecaleTex" );
m_htNormalMap= m_pEffect->GetParameterByName( NULL, "NormalMap" );
}
SAFE_RELEASE(pErr);
// 폰트
m_pFont->InitDeviceObjects( m_pd3dDevice );
return S_OK;
}
Example#4
File: SpeedTreeForestDirectX9.cpp Project: ak4hige/myway3d
bool CSpeedTreeForestDirectX9::InitGraphics(void)
{
bool bSuccess = false;
// load the composite map
if (D3DUtil_CreateTexture(m_pDx, c_pCompositeMapFilename, &m_texCompositeMap) != S_OK)
MessageBox(NULL, "Failed to create leaf texture.", "File Error", MB_ICONEXCLAMATION);
else
{
// init the vertex shaders, if needed
bSuccess = InitVertexShaders( );
}
return bSuccess;
}
Example#5
File: BumpLens.cpp Project: grakidov/Render3D
//-----------------------------------------------------------------------------
// Name: InitDeviceObjects()
// Desc: Initialize scene objects
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::InitDeviceObjects()
{
m_pFont->InitDeviceObjects( m_pd3dDevice );
// Load the texture for the background image
if( FAILED( D3DUtil_CreateTexture( m_pd3dDevice, _T("Lake.bmp"),
&m_pBackgroundTexture ) ) )
return E_FAIL;
// Create the bump map texture
if( FAILED( CreateBumpMap( 256, 256 ) ) )
return E_FAIL;
// Create a square for rendering the background
if( FAILED( m_pd3dDevice->CreateVertexBuffer( 4*sizeof(BACKGROUNDVERTEX),
D3DUSAGE_WRITEONLY, D3DFVF_BACKGROUNDVERTEX,
D3DPOOL_MANAGED, &m_pBackgroundVB ) ) )
return E_FAIL;
// Create a square for rendering the lens
if( FAILED( m_pd3dDevice->CreateVertexBuffer( 4*sizeof(BUMPVERTEX),
D3DUSAGE_WRITEONLY, D3DFVF_BUMPVERTEX,
D3DPOOL_MANAGED, &m_pLensVB ) ) )
return E_FAIL;
BUMPVERTEX* vLens;
m_pLensVB->Lock( 0, 0, (BYTE**)&vLens, 0 );
vLens[0].p = D3DXVECTOR3(-256.0f,-256.0f, 0.0f );
vLens[1].p = D3DXVECTOR3(-256.0f, 256.0f, 0.0f );
vLens[2].p = D3DXVECTOR3( 256.0f,-256.0f, 0.0f );
vLens[3].p = D3DXVECTOR3( 256.0f, 256.0f, 0.0f );
vLens[0].tu1 = 0.0f; vLens[0].tv1 = 1.0f;
vLens[1].tu1 = 0.0f; vLens[1].tv1 = 0.0f;
vLens[2].tu1 = 1.0f; vLens[2].tv1 = 1.0f;
vLens[3].tu1 = 1.0f; vLens[3].tv1 = 0.0f;
m_pLensVB->Unlock();
m_bDeviceValidationFailed = FALSE;
return S_OK;
}
Example#6
File: spheremap.cpp Project: grakidov/Render3D
//-----------------------------------------------------------------------------
// Name: InitDeviceObjects()
// Desc: Initialize scene objects.
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::InitDeviceObjects()
{
// Load the file objects
if( FAILED( m_pShinyTeapot->Create( m_pd3dDevice, _T("teapot.x") ) ) )
return D3DAPPERR_MEDIANOTFOUND;
if( FAILED( m_pSkyBox->Create( m_pd3dDevice, _T("lobby_skybox.x") ) ) )
return D3DAPPERR_MEDIANOTFOUND;
if( FAILED( D3DUtil_CreateTexture( m_pd3dDevice, _T("spheremap.bmp"), &m_pSphereMap ) ) )
return D3DAPPERR_MEDIANOTFOUND;
// Set mesh properties
m_pShinyTeapot->SetFVF( m_pd3dDevice, D3DFVF_ENVMAPVERTEX );
// Restore the device-dependent objects
m_pFont->InitDeviceObjects( m_pd3dDevice );
// Create Effect object
if( FAILED( D3DXCreateEffect( m_pd3dDevice, g_szEffect, g_cchEffect, &m_pEffect, NULL ) ) )
return E_FAIL;
return S_OK;
}
Example#7
File: mtexture.cpp Project: jjuiddong/Dx3D-Study
//-----------------------------------------------------------------------------
// Name: SetTextureStageStatesForRendering()
// Desc: Sets up the texture stage, as per the global variables defining each
// stage.
//-----------------------------------------------------------------------------
HRESULT SetTextureStageStatesForRendering( LPDIRECT3DDEVICE9 pd3dDevice )
{
// If new textures were selected, restore them now
if( g_bTexturesChanged )
{
SAFE_RELEASE( g_pFloorTexture );
SAFE_RELEASE( g_pTexture0 );
SAFE_RELEASE( g_pTexture1 );
SAFE_RELEASE( g_pTexture2 );
SAFE_RELEASE( g_pTexture3 );
SAFE_RELEASE( g_pTexture4 );
if( FAILED( D3DUtil_CreateTexture( pd3dDevice, _T("floor.bmp"), &g_pFloorTexture ) ) )
g_pFloorTexture = NULL;
if( FAILED( D3DUtil_CreateTexture( pd3dDevice, g_strTexture0, &g_pTexture0 ) ) )
g_pTexture0 = NULL;
if( FAILED( D3DUtil_CreateTexture( pd3dDevice, g_strTexture1, &g_pTexture1 ) ) )
g_pTexture1 = NULL;
if( FAILED( D3DUtil_CreateTexture( pd3dDevice, g_strTexture2, &g_pTexture2 ) ) )
g_pTexture2 = NULL;
if( FAILED( D3DUtil_CreateTexture( pd3dDevice, g_strTexture3, &g_pTexture3 ) ) )
g_pTexture3 = NULL;
if( FAILED( D3DUtil_CreateTexture( pd3dDevice, g_strTexture4, &g_pTexture4 ) ) )
g_pTexture4 = NULL;
g_bTexturesChanged = FALSE;
}
pd3dDevice->SetRenderState( D3DRS_TEXTUREFACTOR, g_dwTextureFactor );
pd3dDevice->SetTexture( 0, g_pTexture0 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 0 );
pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, g_wT0CArg1 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, g_wT0COp );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, g_wT0CArg2 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG0, g_wT0CArg0 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, g_wT0AArg1 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, g_wT0AOp );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, g_wT0AArg2 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG0, g_wT0AArg0 );
pd3dDevice->SetTextureStageState( 0, D3DTSS_RESULTARG, g_wT0RArg );
if( g_dwMaxTextureBlendStages > 1 )
{
pd3dDevice->SetTexture( 1, g_pTexture1 );
pd3dDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 1 );
pd3dDevice->SetSamplerState( 1, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, g_wT1CArg1 );
pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP, g_wT1COp );
pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, g_wT1CArg2 );
pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG0, g_wT1CArg0 );
pd3dDevice->SetTextureStageState( 1, D3DTSS_ALPHAARG1, g_wT1AArg1 );
pd3dDevice->SetTextureStageState( 1, D3DTSS_ALPHAOP, g_wT1AOp );
pd3dDevice->SetTextureStageState( 1, D3DTSS_ALPHAARG2, g_wT1AArg2 );
pd3dDevice->SetTextureStageState( 1, D3DTSS_ALPHAARG0, g_wT1AArg0 );
pd3dDevice->SetTextureStageState( 1, D3DTSS_RESULTARG, g_wT1RArg );
}
if( g_dwMaxTextureBlendStages > 2)
{
pd3dDevice->SetTexture( 2, g_pTexture2 );
pd3dDevice->SetTextureStageState( 2, D3DTSS_TEXCOORDINDEX, 0 );
pd3dDevice->SetSamplerState( 2, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
pd3dDevice->SetTextureStageState( 2, D3DTSS_COLORARG1, g_wT2CArg1 );
pd3dDevice->SetTextureStageState( 2, D3DTSS_COLOROP, g_wT2COp );
pd3dDevice->SetTextureStageState( 2, D3DTSS_COLORARG2, g_wT2CArg2 );
pd3dDevice->SetTextureStageState( 2, D3DTSS_COLORARG0, g_wT2CArg0 );
pd3dDevice->SetTextureStageState( 2, D3DTSS_ALPHAARG1, g_wT2AArg1 );
pd3dDevice->SetTextureStageState( 2, D3DTSS_ALPHAOP, g_wT2AOp );
pd3dDevice->SetTextureStageState( 2, D3DTSS_ALPHAARG2, g_wT2AArg2 );
pd3dDevice->SetTextureStageState( 2, D3DTSS_ALPHAARG2, g_wT2AArg0 );
pd3dDevice->SetTextureStageState( 2, D3DTSS_RESULTARG, g_wT2RArg );
}
if( g_dwMaxTextureBlendStages > 3)
{
pd3dDevice->SetTexture( 3, g_pTexture3 );
pd3dDevice->SetTextureStageState( 3, D3DTSS_TEXCOORDINDEX, 0 );
pd3dDevice->SetSamplerState( 3, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
pd3dDevice->SetTextureStageState( 3, D3DTSS_COLORARG1, g_wT3CArg1 );
pd3dDevice->SetTextureStageState( 3, D3DTSS_COLOROP, g_wT3COp );
pd3dDevice->SetTextureStageState( 3, D3DTSS_COLORARG2, g_wT3CArg2 );
pd3dDevice->SetTextureStageState( 3, D3DTSS_COLORARG0, g_wT3CArg0 );
pd3dDevice->SetTextureStageState( 3, D3DTSS_ALPHAARG1, g_wT3AArg1 );
pd3dDevice->SetTextureStageState( 3, D3DTSS_ALPHAOP, g_wT3AOp );
pd3dDevice->SetTextureStageState( 3, D3DTSS_ALPHAARG2, g_wT3AArg2 );
pd3dDevice->SetTextureStageState( 3, D3DTSS_ALPHAARG2, g_wT3AArg0 );
pd3dDevice->SetTextureStageState( 3, D3DTSS_RESULTARG, g_wT3RArg );
}
if( g_dwMaxTextureBlendStages > 4)
{
pd3dDevice->SetTexture( 4, g_pTexture4 );
pd3dDevice->SetTextureStageState( 4, D3DTSS_TEXCOORDINDEX, 0 );
pd3dDevice->SetSamplerState( 4, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
pd3dDevice->SetTextureStageState( 4, D3DTSS_COLORARG1, g_wT4CArg1 );
pd3dDevice->SetTextureStageState( 4, D3DTSS_COLOROP, g_wT4COp );
pd3dDevice->SetTextureStageState( 4, D3DTSS_COLORARG2, g_wT4CArg2 );
pd3dDevice->SetTextureStageState( 4, D3DTSS_COLORARG0, g_wT4CArg0 );
pd3dDevice->SetTextureStageState( 4, D3DTSS_ALPHAARG1, g_wT4AArg1 );
pd3dDevice->SetTextureStageState( 4, D3DTSS_ALPHAOP, g_wT4AOp );
pd3dDevice->SetTextureStageState( 4, D3DTSS_ALPHAARG2, g_wT4AArg2 );
pd3dDevice->SetTextureStageState( 4, D3DTSS_ALPHAARG2, g_wT4AArg0 );
pd3dDevice->SetTextureStageState( 4, D3DTSS_RESULTARG, g_wT4RArg );
}
return S_OK;
}
Example#8
File: Hall.cpp Project: chinajeffery/dx_sdk
/********************Public*Routine****************************************\
* CPlane
*
\**************************************************************************/
CHall::CPlane::CPlane(
IDirect3DDevice9* pDevice,
TCHAR *achName,
LPCTSTR lpResourceName,
float fU,
float fV,
D3DXMATRIX& M,
float a,
HRESULT *phr)
: m_du( 0.f)
, m_fU( fU )
, m_fV( fV )
, m_fSpeed( 0.f )
, m_pTexture( NULL )
{
HRESULT hr = S_OK;
TCHAR achTexturePath[MAX_PATH];
D3DXVECTOR3 vLB( M(0,0), M(1,0), M(2,0));
D3DXVECTOR3 vLT( M(0,1), M(1,1), M(2,1));
D3DXVECTOR3 vRT( M(0,2), M(1,2), M(2,2));
D3DXVECTOR3 vRB( M(0,3), M(1,3), M(2,3));
D3DXVECTOR3 V;
try
{
if( !achName )
throw E_POINTER;
hr = FindMediaFile( achTexturePath,
sizeof(TCHAR)*MAX_PATH,
achName,
lpResourceName,
RT_BITMAP);
if( FAILED(hr))
{
TCHAR achMsg[MAX_PATH];
_stprintf( achMsg, TEXT("Cannot find media file '%s'. ")
TEXT("Make sure you have valid installation of DirectX SDK"),
achName);
::MessageBox( NULL, achMsg, TEXT("Error"), MB_OK);
if( phr )
{
*phr = hr;
return;
}
}
if( !pDevice )
throw E_POINTER;
if( a<0.01f || a>0.5f )
throw E_INVALIDARG;
D3DXVECTOR3 vecDiff = vLB - vLT;
if( D3DXVec3LengthSq( &vecDiff )< 0.001f )
throw E_INVALIDARG;
if( m_fU < 0.001f || m_fV < 0.001f )
throw E_INVALIDARG;
CHECK_HR(
hr = DXUtil_FindMediaFileCb( achTexturePath, sizeof(TCHAR)*MAX_PATH, achName ),
DbgMsg("CPlane::CPlane: cannot find bitmap file %s in SDK media folder", achTexturePath));
// load texture
ASSERT( g_pEnvFormat );
CHECK_HR(
hr = D3DUtil_CreateTexture( pDevice, achTexturePath, &m_pTexture, *g_pEnvFormat ),
DbgMsg("CPlane::CPlane: failed to create the texture, hr = 0x%08x", hr));
// initialize geometry
// POSITION
// corners
memcpy( &(m_V[0].Pos), &vLB, sizeof(D3DVECTOR));
memcpy( &(m_V[1].Pos), &vLT, sizeof(D3DVECTOR));
memcpy( &(m_V[2].Pos), &vRB, sizeof(D3DVECTOR));
memcpy( &(m_V[3].Pos), &vRT, sizeof(D3DVECTOR));
// TEXTURE COORD
m_V[0].tu = 0.f; m_V[0].tv = fV;
m_V[1].tu = 0.f; m_V[1].tv = 0.f;
m_V[2].tu = fU; m_V[2].tv = fV;
m_V[3].tu = fU; m_V[3].tv = 0.f;
// corners are transparent, middle vertices are opaque
m_V[0].color = D3DCOLOR_RGBA( 0xFF, 0xFF, 0xFF, 0xFF);
m_V[1].color = D3DCOLOR_RGBA( 0xFF, 0xFF, 0xFF, 0xFF);
m_V[2].color = D3DCOLOR_RGBA( 0xFF, 0xFF, 0xFF, 0xFF);
m_V[3].color = D3DCOLOR_RGBA( 0xFF, 0xFF, 0xFF, 0xFF);
}
catch( HRESULT hr1 )
{
RELEASE( m_pTexture );
hr = hr1;
}
if( phr )
{
*phr = hr;
}
}
Example#9
File: billboard.cpp Project: grakidov/Render3D
//-----------------------------------------------------------------------------
// Name: InitDeviceObjects()
// Desc: This creates all device-dependent managed objects, such as managed
// textures and managed vertex buffers.
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::InitDeviceObjects()
{
// Initialize the font's internal textures
m_pFont->InitDeviceObjects( m_pd3dDevice );
// Create the tree textures
for( DWORD i=0; i<NUMTREETEXTURES; i++ )
{
if( FAILED( D3DUtil_CreateTexture( m_pd3dDevice, g_strTreeTextures[i],
&m_pTreeTextures[i] ) ) )
return D3DAPPERR_MEDIANOTFOUND;
}
// Create a quad for rendering each tree
if( FAILED( m_pd3dDevice->CreateVertexBuffer( NUM_TREES*4*sizeof(TREEVERTEX),
D3DUSAGE_WRITEONLY, D3DFVF_TREEVERTEX,
D3DPOOL_MANAGED, &m_pTreeVB ) ) )
{
return E_FAIL;
}
// Copy tree mesh data into vertexbuffer
TREEVERTEX* v;
m_pTreeVB->Lock( 0, 0, (BYTE**)&v, 0 );
INT iTree;
DWORD dwOffset = 0;
for( iTree = 0; iTree < NUM_TREES; iTree++ )
{
memcpy( &v[dwOffset], m_Trees[iTree].v, 4*sizeof(TREEVERTEX) );
m_Trees[iTree].dwOffset = dwOffset;
dwOffset += 4;
}
m_pTreeVB->Unlock();
// Load the skybox
if( FAILED( m_pSkyBox->Create( m_pd3dDevice, _T("SkyBox2.x") ) ) )
return D3DAPPERR_MEDIANOTFOUND;
// Load the terrain
if( FAILED( m_pTerrain->Create( m_pd3dDevice, _T("SeaFloor.x") ) ) )
return D3DAPPERR_MEDIANOTFOUND;
// Add some "hilliness" to the terrain
LPDIRECT3DVERTEXBUFFER8 pVB;
if( SUCCEEDED( m_pTerrain->GetSysMemMesh()->GetVertexBuffer( &pVB ) ) )
{
struct VERTEX { FLOAT x,y,z,tu,tv; };
VERTEX* pVertices;
DWORD dwNumVertices = m_pTerrain->GetSysMemMesh()->GetNumVertices();
pVB->Lock( 0, 0, (BYTE**)&pVertices, 0 );
for( DWORD i=0; i<dwNumVertices; i++ )
pVertices[i].y = HeightField( pVertices[i].x, pVertices[i].z );
pVB->Unlock();
pVB->Release();
}
return S_OK;
}