1. Part1 4강 초기화2 부분의 CreateBackBuffer() 함수에서
지역변수 ID3D11Texture2D* back_buffer를 만드신 뒤에
swap_chain->GetBuffer 함수를 이용해서 back_buffer에 얻어올 버퍼의 주소를 back_buffer에 저장을 하신 것 까지는 이해가 되었는데
그 뒤에 CreateRenderTargetView()에서 해당 back_buffer가 가지고 있던 ID3D11Texture2D의 주소를 이용해서 RenderTarget View를 만들어주고 더 이상 쓰일일이 없기 때문에 Release 시켜주는 건가요?
RenderTargetView를 만들 때 내부적으로 계속 참조를 하는 것인지 만드는 순간에만 필요했던 거였는지 궁금했던 것이었습니다.
해제해주는 걸로 봐서 정황상 후자일 것 같긴한데.. 확신이 들지 않아 여쭤봅니다.
Part1 7강 강의에서 Input Assemblur 단계에서 들어온 자료가 Vertex Shader에서 입력받은 자료와 같아야 하기 때문에 InputLayout으로 컴퓨터에게 ~부터 ~까지 무슨 자료형으로 어떻게 처리해라 라고 알려준다고 하셨는데.
Excute 생성자에서 보면 Vertex Shader를 일부러 먼저 만드셨다고 하십니다. 순서상 InputLayout이 먼저 만들어져야 하는게 아닌가요?
ps 질 좋은 강의 감사합니다. 좋은 하루 되세요!
안녕하세요 게임클래스 입니다.
문의주신 질문에 대해 답변 드립니다.
--------------------------------------------------------------------
1.지역변수 ID3D11Texture2D* back_buffer 같은경우
스왑체인에 바인딩 되어있는 백버퍼 주소를 받아오는역할을 하고있는데 사용이 끝난 백버퍼 해제가아닌
지역변수로 사용이 다된 인터페이스 사용해제라고 보시면 됩니다.
실제로 백버퍼 해제이후 다시 겟버퍼를 이용해 주소를 받아오면 같은주소값이 다시 들어오는걸 디버깅으로 확인할수 있으며
스왑체인과 렌더타겟뷰가 같은 리소스를 사용할때 잠깐 바인딩용도로 백버퍼를 두었다가 해당 지역이 끝나기전에 용도가 더이상 없으므로 Release를 호출하는것일뿐 실제론 해제되진 않습니다.
간단하게 얘기하면,
학생분이 생각하고 있는게 맞습니다.
기본으로 설정되어있는 백버퍼 정보를 사용하기위해 잠깐 사용한 것 뿐이라 필요한 정보를 다쓰고 지워준것 입니다
2. 인풋레이아웃을 만들때는 컴파일된 쉐이더 주소,그리고 쉐이더 크기등이 필요하기 때문에 쉐이더를 먼저 만들어주는 부분입니다. 사실 그렇게 크게 중요하지는 않은 부분인데요. 장난감 로봇을 조립할때 어떤 파츠를 먼저 만들던 그게 중요한게 아니고 최종 조립할때 순서대로 조립하는 것이 중요한 것처럼, 결국 최종 Pipeline에 세팅된 상태에서 지정된 순서대로 조립되기 때문에 누가 먼저 만들어지던 상관이 없습니다.
------------------------------------------------------------------------------------------
감사합니다.