묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결D3D12 프로그래밍 - 기초편
Descriptor를 복사하는 이유
안녕하세요 강의 잘 보고 있습니다. 공부를 하다가 의문점이 하나 생겼습니다. Descriptor Heap을 Shader Visible하지 않은 거에 내용을 채우고 렌더링시 Shader Visible한 Descriptor Heap으로 복사하여 사용하는 이유가 어떤 건가요?처음부터 CBV Pool의 Descriptor Heap을 Shader Visible로 사용해도 작동하던데, 혹시 시스템 메모리가 VRAM보다 상대적으로 메모리가 많아서 그런 건가요? 실제 사용할 Descriptor만 VRAM에 올려서 쓰려는 일종의 최적화 기법인가요?
-
미해결D3D12 프로그래밍 - 기초편
코드에 대한질문있습니다.
처음 디바이스 생성부분에서 어댑터를 순환하면서 Device 를 생성하는데저같은경우에는 그래픽카드를 2개 사용중인데 1080과 4090을 사용중인데 첫번째 어댑터에 1080으로 인식되면서 1080을 이용해서 Device 를 생성하는것 같은데 , 이럴경우 문제가되지않나요? 4090 을 이용못하는거아닐까요? } for (DWORD featerLevelIndex = 0; featerLevelIndex < FeatureLevelNum; featerLevelIndex++) { UINT adapterIndex = 0; while (DXGI_ERROR_NOT_FOUND != _factory->EnumAdapters1(adapterIndex, &pAdapter)) { pAdapter->GetDesc1(&AdapterDesc); if (SUCCEEDED(D3D12CreateDevice(pAdapter.Get(), featureLevels[featerLevelIndex], IID_PPV_ARGS(&_device)))) { break; } adapterIndex++; } if (_device) { break; }
-
미해결D3D12 프로그래밍 - 기초편
Comptr 을 안쓸시 메모리 해제순서
혹시 Comptr 을 안쓸시 메모리해제를 직접해주고있는데 ,Device 를 먼저 해제할시 ref값이 0 이 안나와서 DebugLeak 에 걸리게되던데D3D12 객체들의 메모리 해제할때도 순서가 중요한건가요?
-
해결됨D3D12 프로그래밍 - 기초편
raw pointer 쓰시는 이유가 따로 있으신가요?
혹시 ComPtr 안쓰시고 raw pointer 쓰시는 이유가 있으신가요?
-
미해결D3D12 프로그래밍 - 기초편
질문있습니다.
안녕하세요 공부하다가 몇가지 궁금한게 생겨 여쭤봅니다. 질문1) D3D12_DESCRIPTOR_RANGE ranges[2] ={{ D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 5, 0, 0, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND }, // b0 ~ b4{ D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 5, 0, 0, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND } // t0 ~ t4}; CD3DX12_ROOT_PARAMETER rootParameters[1] = {};rootParameters[0].InitAsDescriptorTable(_countof(ranges), ranges, D3D12_SHADER_VISIBILITY_ALL); 와 같이 루트시그니처에서 테이블의 사용범위를 넓게잡아두고사용할때만 Shader 에서 buffer를 정의 ( ex :cbuffer WVP: register(b0 )해서사용해주고있는데 테이블힙의 메모리 낭비를 제외하면 성능에 큰 악영향이 있을까요?런타임에 터지거나 하는 오류는 현재 없는데 궁금해서 여쭤봅니다. 질문2)제가 이해한게 맞는건지 모르겠습니다. 현재 영천님 의 코드처럼 pool 방식으로 디스크럽터를 넓게만들어두고 할당받는 방식으로 코드를 만들어보고있는데질문1의 방식처럼 rootSignature 를 만들었다고 하였을때 ,SetGraphicsRootDescriptorTable 함수인자에 핸들값을 넣을때그림에 빨간 화살표에 있는 선두에 있는 handle 값만 넣어주면RootSignature 에서는 b0~b5 ,t0~t5 의 총10개를 사용한다고 서명했기떄문에 ,DX에서 읽을때 10개단위로 읽어주기 때문에 10개가 모두 테이블에 바인딩되는 구조인가요?다음 오브젝트를 그릴때는 , 오프셋 10칸을 건너뛴 다음 b0 부터 할당받아서 테이블에 바인딩해주고
-
미해결
directx 12 공부 방법에 대해 여쭤봅니다.
directx12 강의를 듣고 있는데 강의를 듣다보면 모르는 개념도 너무많이 나오고 이게 따라한다고 습득이 되고 이해가 된다고 생각되지 않아서 여쭤봅니다. 현재 강의를 듣고 자료를 받아 코드를 보면서 하고있는데 아직 directx 초기화 부분을 하고 있는데 벌써 부터 막막하고 어떻게 효율적으로 공부를 해야할지 몰라서 여쭤봅니다..
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
혹시 강의에 나온 directx 12 장치관련 코드 구성에 대해서 참고할만한 자료가 있을까요?
강의가 가면갈수록 코드가 점점 방대해져서 관리할 클래스가 많아지는데, 저같은 초보는 클래스가 너무 복잡해서 처음부터 이걸 계획하고 만드는게 상상이 안가는데요. 혹시 "directx 12는 장치 설정하는 부분을 이런식으로 만드는게 정석이다" 할만한 방법론이 있는건가요? 저는 지금 deffered rendering까지 봤는데, 강의에서 그래픽스 이론 부분은 괜찮은데 장치와 관련된 부분은 가면갈수록 클래스 계층이 너무 방대해지고 점점 바뀌면서 이해하기 어려워지더라구요.. 혹시 directx12 장치관련해서 강의와 같이 보면 도움이 될만한 자료같은것이 없을까요? MSDN이 정확하지만, 원래 알고있는 사람만 읽을 수 있는 것 같아서요 ㅠㅠ