[DX11 입문 제6장] Box 출력 문제를 도와주세요

GPG 시리즈 관련 질답, 논의 공간.

Moderator: 류광

비회원

Box 출력 문제를 도와주세요

Post by 비회원 »

Box 출력 예제를 받아서 출력을 하는데는 성공을 했습니다

그런데 제가 새롭게 생성한 Actor 클래스에서 똑같이 초기화해 주고 버퍼를 만들고
출력을 하게 햇는데 화면에 어떠한것도 보이지 않습니다 무엇이 문제인지 잘모르겟습니다

도와주세요


아래는 코드 입니다.

void BoxApp::DrawScene()
{

md3dImmediateContext->ClearRenderTargetView( mRenderTargetView, reinterpret_cast<const float*>( &Colors::LightSteelBlue ) );
md3dImmediateContext->ClearDepthStencilView( mDepthStencilView, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0 );

md3dImmediateContext->IASetInputLayout( mInputLayout );
md3dImmediateContext->IASetPrimitiveTopology( D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST );


XMMATRIX world = XMLoadFloat4x4( &mWorld );
XMMATRIX view = XMLoadFloat4x4( &mView );
XMMATRIX proj = XMLoadFloat4x4( &mProj );
XMMATRIX worldViewProj = world*view*proj;

mfxWorldViewProj->SetMatrix( reinterpret_cast<float*>( &worldViewProj ) );



actor->Render( md3dImmediateContext, mfxWorldViewProj );


HR( mSwapChain->Present( 0, 0 ) );

}



void CActor::Render( ID3D11DeviceContext* deviceContext , ID3DX11EffectMatrixVariable* worldViewProj )
{

UINT stride = sizeof( Vertex );
UINT offset = 0;
deviceContext->IASetVertexBuffers( 0, 1, &m_VertexBuffer, &stride, &offset );
deviceContext->IASetIndexBuffer( m_IndexBuffer, DXGI_FORMAT_R32_UINT, 0 );

mfxWorldViewProj = worldViewProj;

D3DX11_TECHNIQUE_DESC techDesc;
mTech->GetDesc( &techDesc );
for ( UINT p = 0; p < techDesc.Passes; ++p )
{
mTech->GetPassByIndex( p )->Apply( 0, deviceContext );

// 36 indices for the box.
deviceContext->DrawIndexed( 36, 0, 0 );
}

}

초기화 부분은 모두 동일하게 작성하엿습니다
류광
Posts: 3805
Joined: 2001-07-25 09:00
Location: GPGstudy
Contact:

Post by 류광 »

예제의 Box::DrawScene 중 일부를 CActor::Render로 뺀거죠? 제시하신 코드만으로는 잘 모르겠네요. 일단은 가장 깊은 곳에 있는 for 루프부터 차근차근 점검해 보시고요. 책의 예제에는 생략된 오류 점검 코드도 일일이 추가해 보시길 권합니다. 예를 들어 ID3DX11EffectTechnique::GetDesc가 돌려준 HRESULT 값을 점검하는 등으로요.

그리고 아마도 장면 그리기 코드를 좀 더 유연하게 개선하고 싶으신 것 같은 데, 그리기 작업의 분할 문제는 한 장면에 여러 개의 모형이 등장하는 예제들, 이를테면 제17장 CubeMap 예제를 참고하는 것이 도움이 될 것 같습니다.
Post Reply