묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[게임 프로그래머 도약반] DirectX11 입문
좌표계 변환 행렬이랑 srt 변환 행렬
좌표계 변환 행렬이랑 srt 변환 행렬이랑 무슨 차이인가요local space에서 world space로 변할때는 srt 변환 행렬을 사용하고 local space에서 그 부모인 또 다른 local space로 변환할때는 좌표계 변환행렬을 사용하는 건가요
-
미해결[게임 프로그래머 도약반] DirectX11 입문
SRT 행렬중에 ppt 질문 있습니다.
이 행렬 계산 중에 v벡터를 전치해서 계산해야 저런 식이 나올 거 같은데 위의 계산과 아래의 계산의 차이는 뭔가요?
-
미해결[게임 프로그래머 도약반] DirectX11 입문
hlsl파일 컴파일
루키스님 항상 좋은 강의 감사합니다. 잘 듣고 있어요.궁금증이 생겼는데 shader파일은 두 가지의 빌드 방법이 있다는것은 알겠는데 설정 중에 특별하게 해준거라곤 main을 VS로 바꿔준 거 외에는 없는 것 같은데 어떻게 두 빌드 방법이 가능하게 되는건지 이해를 못해서 질문 남겼습니다
-
미해결D3D12 프로그래밍 - 기초편
Descriptor를 복사하는 이유
안녕하세요 강의 잘 보고 있습니다. 공부를 하다가 의문점이 하나 생겼습니다. Descriptor Heap을 Shader Visible하지 않은 거에 내용을 채우고 렌더링시 Shader Visible한 Descriptor Heap으로 복사하여 사용하는 이유가 어떤 건가요?처음부터 CBV Pool의 Descriptor Heap을 Shader Visible로 사용해도 작동하던데, 혹시 시스템 메모리가 VRAM보다 상대적으로 메모리가 많아서 그런 건가요? 실제 사용할 Descriptor만 VRAM에 올려서 쓰려는 일종의 최적화 기법인가요?
-
미해결[게임 프로그래머 도약반] DirectX11 입문
애니메이션 변환 행렬에 대해 질문이 있습니다.
제가 이해한 바로는애니메이션 변환 행렬은 T-pose 에서 root를 기준으로 하는 SRT의 역행렬 x 애니메이션이 움직인 로컬 SRT x 애니메이션이 움직인 root를 기준으로 하는 SRT로 구성되어 있다고 이해했습니다. 그래서 T-pose 에서 root를 기준으로 하는 좌표를 위의 변환 행렬에 곱을 하게되면 애니메이션이 동작한 root를 기준으로 하는 좌표로 변환된다고 이해했습니다. 그런데 VS 단계인MeshOutput VS(VertexTextureNormalTangentBlend input) 에서 애초에 input은 제가 지금까지 수업을 들으면서 이해한 바로는 이미 T-pose에서 로컬 좌표인 것으로 알고 있습니다.그러면 애니메이션 변환 행렬에서 굳이 T-pose 에서 root를 기준으로 하는 좌표계의 역행렬을 곱해줄 필요가 있는지 궁금합니다! T-pose 에서 root를 기준으로 하는 좌표계의 역행렬을 곱하는 이유는 T-pose의 로컬 좌표로 변환하기 위함인데 이미 input이 로컬이니까요!AI 답변으로 이해가 가는 경우도 있지만 아닌 경우가 많아서 답변을 해주셨으면 감사하겠습니다! 항상 잘 보고 있어요!
-
미해결[게임 프로그래머 도약반] DirectX11 입문
특정 fbx가 애니메이션으로 출력되지 않는 현상
안녕하세요 루키스님,올려주신 강의들 덕분에 많은 도움이 되어 늘 감사하고 있습니다 :) 본론으로 지금 현재 특정 fbx의 애니메이션이 출력되지 않는데 그 이유를 모르겠습니다.1. 정상적으로 출력되는 fbx - 스켈레톤이 하늘을 향하고 있음 (블랜더) -- 카쿠진 예제 모델2. 비정상적으로 출력되는 fbx - 하체와 팔쪽 스켈레톤의 삼각형이 루트에 반대 방향을 향하고 있음 (블랜더) 비정상적으로 출력되는 애니메이션 비정상적으로 출력되는 FBX파일은 Mixamo에서 다운을 받았습니다. 블랜더에서 봤을 때 삼각형(스켈레톤)의 방향이 루트와 반대인 매쉬가 랜더가 되지 않는다는 점을 확인했습니다. 아직 개념이 확실히 잡혀있지 않은 것도 있지만, 디버그하는데 여러가지 요인들이 복합적으로 얽혀 있어 원인을 당최 찾을 수가 없습니다.왜 랜더링이 되지 않는걸까요? 필요하시다면 관련 파일도 드리겠습니다바쁘실테지만 한번 체크해주신다면 진심으로 감사하겠습니다!
-
미해결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; }
-
미해결[게임 프로그래머 도약반] DirectX11 입문
RnderManger에서 Desc구조체에 변수 추가할때 컨스트버퍼 생성에서 오류원인
안녕하세요 강의 잘 보고있습니다. 6주차 카메라좌표 수정에서 쉐이더 파일에서 cbuffer VInv 변수를 추가하고 RnderManger에 GlobalDesc에 똑같이 변수를 추가했는데 Init()부분에서 globalBuffer = makeshared<ConstantBuffer<GlobalDesc>>(); _globalBuffer->Create(); globalEffectBuffer = shader->GetConstantBuffer("GlobalBuffer"); 쉐이더파일이랑 재대로 매핑이 안되는건지 이 부분에서 뻑납니다.. 원인이 잘 모르겠어서 질문 남깁니다..
-
미해결[게임 프로그래머 도약반] DirectX11 입문
Scene Update 부분 코드질문
강의에서는 저기 INSTANCING 부분이 없이 끝나는데 강의에서 SceneDemo에서 INSTANCING->Render(obj); f코드를 없애서 그런지 검은화면만 출력되는데 저 부분이 넣어야 제대로 동작을 하는 것 같아요. 저 코드를 넣는게 맞는거겠죠? 그리고 이미 _objects로 캐싱했는데 다시 temp에 넣고 INSTANCING->Render(temp); 이 코드를 실행하는 이유가 있을까요?
-
미해결[게임 프로그래머 도약반] DirectX11 입문
렌더링 계열 Set함수 순서
안녕하세요 루키스님 자체엔진을 만들어보는중에 의문이 생겨서 질문 드립니다ClearRenderTargetView와 ClearDepthStencilView를 먼저 호출OMSetRenderTargets, RSSetViewports 등의 렌더링 설정을 도와주는 Set계열함수를 작성Draw함수 호출이 과정에서 2번의 Set계열 함수들의 순서가 바뀌면 렌더링이 안될수 있나요?
-
미해결D3D12 프로그래밍 - 기초편
Comptr 을 안쓸시 메모리 해제순서
혹시 Comptr 을 안쓸시 메모리해제를 직접해주고있는데 ,Device 를 먼저 해제할시 ref값이 0 이 안나와서 DebugLeak 에 걸리게되던데D3D12 객체들의 메모리 해제할때도 순서가 중요한건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
Shader 관련 문제
Shader::Init을 할 때 마지막 줄DEVICE->Create...State(&m_PipelineDesc, IID_PPV_ARGS(&m_PipelineState));여기에서 desc세팅까지는 성공적으로 다 되는데 이 줄에서 state가 세팅되지 않고 NULL값으로 그대로 남아있습니다.혹시 몰라서 오타 검사나 프로젝트 속성이 다른지 체크했는데 이상 없었습니다.[코드][로컬 데이터] (추가)엔진.h의 멤버들은 정상적으로 초기화 되고 올려주신 파일을 실행했을 때는 정상적으로 작동하였습니다.Shader에서 문제가 있는거 같은데 코드상 차이는 안보입니다. 올려주신 코드내용을 복붙해도 같은 문제가 발생합니다.가끔씩 shader->Update()에 들어가기 전에 엑세스 위반 오류가 생깁니다
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
Load 부분에서 문제가 있어 질문드립니다
이런식의 오류가 뜨는대 텍스쳐를 로드하는 부분에서 키값의 추론이 제대로 안되는걸로 예상되는대 이유를 모르겠씁니다 혹시 예상가는 부분이 있을까요??
-
미해결[게임 프로그래머 도약반] DirectX11 입문
수강 문의
안녕하세요 루키스님. 이전에 수강전 문의 했던 학생입니다. 강좌를 구매해서 수강전 문의란이 사라져서 여기다가 질문올립니다. 궁금한 점은 3가지 입니다. DX11 2D까지만 공부하고 싶다면 섹션 어떤어떤것을 봐야할까요? OT때 포폴엔 적합하지 않은 강좌라고 하셨는데 이 말의 의미는 커리큘럼 목표가 그런 것이고, 제가 이 강좌 듣고 습득한 지식으로 혼자 포폴 만들라면 만들 순 있는거죠? 수강전 문의에 대한 연장선의 질문인데, 루키스님이 중견 이상 목표라면 C++를 공부하는게 좋다고 하셨습니다. 이 말의 뜻은 C#보다 C++이 아무래도 신경써야할 게 많다보니까(메모리 관리 등) 제가 비록 유니티쪽으로 가더라도 기초탄탄을 위해 배우라는 뜻이실까요? 여기부턴 여담인데, 사실 제가 C# 유니티만 배운게 아니고 C/C++/STL 도 공부하긴 했었습니다. 최근엔 안써서 까먹었지만.. 일단 이 강좌 구매는 해놨는데, WinApi부터 공부하고 시작해볼라고 지금 자연스레 C++ 리마인드하면서 공부하고 있긴합니다.
-
미해결[게임 프로그래머 도약반] DirectX11 입문
포인터변수선언, 바인딩 을 함수에 포함해도되나요
선생님 안녕하세요.인터페이스객체를 헤더에서 선언하고, 객체생성함수에서 스마트포인터변수의 주소를 얻고, 렌더함수에서 바인딩을 ,Init 함수에서 함수호출하시는데요. 이 과정 중...스마트포인터 선언대신,함수에서 지역변수로 만들어사용하고,렌더함수에서 바인딩 대신, 객체생성(디스크립션 포함) 함수안에서 디바이스컨텍스트 바인딩한후렌더함수에서 객체생성함수만 호출로 Init()함수 호출 없음바꾸면, 문제가 있을까요? 결과는 동일한거같습니다.
-
미해결[게임 프로그래머 도약반] DirectX11 입문
타입변환해도되나요+알파
[질문1]deviceContext->DrawIndexed(indices.size(), 0, 0);이런 에러가 떴는데요1>C:\Work\Programming\DX11\BasicFramework-uv\BasicFramework\Game.cpp(60,44): warning C4267: 'argument': conversion from 'size_t' to 'UINT', possible loss of data 이렇게 바꿔도되나요?deviceContext->DrawIndexed(staticcast<UINT>(_indices.size()), 0, 0); [질문2]우여곡절끝에(첨엔 TEXCOORD스펠링틀려서,두번째는 이미지파일을 프로젝트폴더밖에 둬서) 드디어 출력은 됬는데, 알파가 안빠집니다!뭘 고쳐야할까요? (한시간째 찾는중 ㅠㅠ)(이게 정상) ---------------------(추가)그리고,쌤... 수강전질문에 답변을 강의구매후,수강완료 한참후에 달아주셨어요 ㅋ담부턴 좀 빨리 ㅋㅋㅋ 3. [해결] 이 함수를 써서 해결했습니다. 알파. 근데,,쌤은 안써도됬는데, 왜 전 이거 써야한걸까요...??? void Game::SetBlendState(){ D3D11_BLEND_DESC blendDesc; ZeroMemory(&blendDesc, sizeof(blendDesc)); // 알파 블렌딩 활성화 blendDesc.RenderTarget[0].BlendEnable = TRUE; blendDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA; blendDesc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA; blendDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD; blendDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE; blendDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO; blendDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD; blendDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL; ID3D11BlendState* blendState; HRESULT hr = _device->CreateBlendState(&blendDesc, &blendState); CHECK(hr); // 블렌드 상태를 파이프라인에 설정 _deviceContext->OMSetBlendState(blendState, nullptr, 0xffffffff);}
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
강의에서 보여진 모습과 다른모양이 되어서 질문드립니다
아래와 같은 모양이 나오는대 디버그모드에서 값들은 다 Colorinfo 에 잘 들어갔고 specular 과 diffuse 에서 뭔가 문제가 있어보이는대 모르겠어서 질문드립니다 어느쪽을 중점으로 찾아봐야 하나요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
enumclass 질문입니다
46분 45초쯤에 enum 이라서 함수를 두개로 하셨다고 하셨는대 다른점과 이유를 알고싶습니다
-
해결됨D3D12 프로그래밍 - 기초편
raw pointer 쓰시는 이유가 따로 있으신가요?
혹시 ComPtr 안쓰시고 raw pointer 쓰시는 이유가 있으신가요?
-
미해결[게임 프로그래머 도약반] DirectX11 입문
잘 이해했는지 확인 받고 싶습니다(Normal Map)
안녕하세요 이번 강의를 잘 이해했나 의문이 들어서 질문 남깁니다먼저 제가 이해한 내용을 설명해보자면Normal Map이란 어떤 물체의 세부적 표현을 정점의 추가 없이표현하기 위해서 나온 기술?이고해당 Map의 각 픽셀의 RGB 값을 x, y, z로 해석하여float4 map = NormalMap.Sample(LinearSampler, uv);[0, 1] 구간으로 변환 후 3D 세상에서 표현하기 위해 [-1,1]구간으로 변환 한다float3 tangentSpaceNormal = (map.rgb * 2.0f - 1.0f);그리고 이 값을 World좌표계로 변환하기위해 탄젠트 스페이서에서의 t,b,n을 좌표 변환 공식?에 의해 [tx, ty, tz][bx, by, bz][nx, ny, nz] 행렬이 나오게 되고 이러한 TBN 행렬을 이용해서 World 좌표로 치환할 수 있다 이렇게 정리해봤는데 잘못 이해하거나 누락된 부분이 있을까요?