메시지 처리 (및 창 만들기)가 보조 스레드에서 수행되는 동안 모든 렌더링이 기본 스레드에서 수행되는 다중 스레드 프로그램을 만들려고합니다. 초기화 함수에서 다음 코드 줄을 SwapChain->GetBuffer(0, __uuidof(ID3D10Texture2D), (void**)&back_buffer);
초기화 함수를 주 스레드에서 배치 될 때 액세스 위반 오류 (0xc0000005) 생성합니다.DirectX 10 IDXGISwapChain :: GetBuffer 다중 스레드 CTD 오류
보조 스레드에 초기화 기능을 넣지 않고이 오류를 해결하려면 어떻게해야합니까?
편집 : 관련 코드 here을 모두 게시했습니다.
Application.cpp의 라인 49에
[Minimal, Complete, and Verifiable example] (https://stackoverflow.com/help/mcve) 또는 적어도 초기화 부분을 제공하지 않으면 정확히 무엇이 잘못되었는지 추측 할 수 없습니다. 별도의 렌더링 스레드를 사용하는 접근 방식이 효과적 일 수 있지만 선호되는 경우에도 가능한 교착 상태를 처리하고 DXGI 메서드에 대한 동시 호출을 방지하려면 세심한주의를 기울여야합니다. – VTT
관련 코드가 모두 포함 된 GitHub 저장소에 대한 링크를 작성했습니다. –
코드에 오류 처리가 없습니다. 모든 HRESULT 반환 값을 검사하고 DX 호출이 실제로 성공했는지 확인해야합니다. – VTT