Game Development Reference
In-Depth Information
HRESULT hr;
V_RETURN(SceneNode::VOnRestore(pScene) );
V_RETURN (m_VertexShader.OnRestore(pScene) );
V_RETURN (m_PixelShader.OnRestore(pScene) );
// Force the Mesh to reload
Resource resource(m_sdkMeshFileName);
shared_ptr<ResHandle> pResourceHandle =
g_pApp->m_ResCache->GetHandle(&resource);
shared_ptr<D3DSdkMeshResourceExtraData11> extra =
static_pointer_cast<D3DSdkMeshResourceExtraData11>(
pResourceHandle->GetExtra());
return S_OK;
}
The really interesting bit happens in VRender() . After the calls to the shader Setup
Render() methods, notice how the vertex and index buffers get set:
HRESULT D3DShaderMeshNode11::VRender(Scene *pScene)
{
HRESULT hr;
V_RETURN (m_VertexShader.SetupRender(pScene) );
V_RETURN (m_PixelShader.SetupRender(pScene, this) );
//Get the Mesh
Resource resource(m_sdkMeshFileName);
shared_ptr<ResHandle> pResourceHandle =
g_pApp->m_ResCache->GetHandle(&resource);
shared_ptr<D3DSdkMeshResourceExtraData11> extra =
static_pointer_cast<D3DSdkMeshResourceExtraData11>(
pResourceHandle->GetExtra());
//IA setup
UINT Strides[1];
UINT Offsets[1];
ID3D11Buffer* pVB[1];
pVB[0] = extra->m_Mesh11.GetVB11( 0, 0 );
Strides[0] = ( UINT )extra->m_Mesh11.GetVertexStride( 0, 0 );
Offsets[0] = 0;
DXUTGetD3D11DeviceContext()->IASetVertexBuffers( 0, 1, pVB, Strides,
Offsets );
DXUTGetD3D11DeviceContext()->IASetIndexBuffer(extra->m_Mesh11.GetIB11(0),
extra->m_Mesh11.GetIBFormat11( 0 ), 0 );
Search WWH ::




Custom Search