월 44,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
언리얼이나 유니티 만지기 전에 directx 해보는게 좋다해서 시도 중인데
일단 초기화 부분을 보고 있는데, 솔직히 머릿속에 들어오는게 거의 없습니다. 여기서 제가 학습 목표로 해야할게 정확히 어떤건가요. direct x 의api 이해하기? 아니면 대충 이런 과정을 통해 삼각형이 만들어진다? 제가 directx 로 게임 만들건 아니기는 한데, 너무 어려워서 질문드립니다. 그리고 원래 directx 공부할 때 초기화 부분을 이렇게 직접 짜는 경우가 많나요? 저 같은 초심자도 이렇게 짜야 하나요? win32api 같은 경우에는 그래도 뭔가 틀을 던져 주는데, directx 는 그런 거 없이 전부 스스로 해야 하나요? 이 강좌에서 전체적으로 제가 얻어야할 게 정확히 뭘까요. 3D 그래픽이 어떤 과정을 통해 화면에 표시되는지 실습하면서 이해하기 대충 여기서 끝내면 되는 걸까요? 아니면 이걸로 만들 수 있어야 하는 건가요? c++ , 자료구조 공부한 다음에, 언리얼 조금 맛보면서 이번 강의를 듣고 있는데, 보면서도 제가 정확히 뭘 하고 있는지 모르겠습니다. 이걸 공부하면 언리얼 엔진 다루는데 도움이 되는 걸까요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
오류가납니다..
제것도 빌드하면 이런오류가 생기고 루키스님이 하신걸 압축풀어도 똑같습니다 사실 처음에 새 프로젝트 만들고나서 바로 세미콜론이 없다는 이상한 오류가 계속나서 윈도우 SDK버전을 내려주니까 해결이됐는데 그게또 문제인건지..
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
프러스텀에서 사용하는 행렬에 대해서
안녕하세요. 행렬에 관해서 궁금해서 질문 남깁니다. 선생님께서는 카메라와, 투영행렬 역행렬 그리고, 곱으로 행렬을 구하셨자나요 구글링 일부 블로그에서는 프러스텀 컬링 절두체를 만들 때는 뷰행렬에다가 투영행렬을 곱하는 것으로 설명되어 있는데, 선생님께서 하신거랑은 다른 개념인건가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
커맨드리스트나 큐가 저장되는 메모리가 어디인가요??
인터넷 글을 참조하면서 복습하는데 헷갈려서 질문드립니다. 리스트나, 큐, 할당자,리소스가 저장되는 주체가 일반적으로 알고있는 컴퓨터의 메모리인가요? 아니면 그래픽카드 내에 있는 메모리인가요??
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
링크에러와 EntryPoint에러
안녕하세요. 소스를 다 작성하고 빌드를 했는데 X3084 에러가 뜹니다. 검색해서 보니 default.hlsl파일 속성에서 EntryPoint Name을 PS_Main으로 하면 해결이 된다고 해서 했는데 이번에는 Error X3084 'numthreads(X,Y,Z)' attribute expected, where 'X,Y,Z' are the dimensions of the thread group 에러가 뜹니다. 이거는 검색해도 안나오네요.. 어떻게 해결하면 될까요.. 그리고 링크에러는 shader에서 나는것 같은데 해결방법을 모르겠습니다..
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
Projection 변환행렬
Projection 변환행렬 관련해서 질문있습니다. 다름이 아니라 800x600과 같은 비율에 대한 보정값때문에 Projection 행렬을 만들때 (x,y,z,1)에서 x값에 미리 강의에 나오는 r이라는 요소로 나눠주는것에서 의문점이 생겼습니다. 나눠준다는건 그럴 수 있겠다고 납득이 되는데, 왜 y값에는 나눠지 않는건가요? 화면 비율과 같은 보정값을 해주기 위해서인데, 강의에서는 오른쪽으로 화면이 늘어날때 사각형이 똑같이 늘어나는것을 방지하고자 r값을 미리 나눠줬다고 설명하신것 같은데, 그렇다면 위로 늘리는 것도 처리해줘야하지 않나 궁금합니다. 즉, y값에도 똑같이 r로 미리 나눠줘야하지 않나 궁금합니다. 왜 x값에만 r로 나눠주고 끝냈는지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
회전행렬은 따로따로 곱해지는건가요?
아직 뒷부분 강의인 쿼터니언을 듣지 못한 상태입니다만, 미리 간단하게 질문이 있습니다. 저희가 SRT에서 배운 Rotation 행렬은 제가 알기로는 오일러각을 이용한 방식으로 알고 있습니다. 그러나 이 방식이 가장 큰 문제가 되는건 짐벌락 현상때문이라고 알고 있었는데, 짐벌락 현상이 일어나는 이유를 설명해야할때, Rotation 행렬을 만들때 Z축, Y축, X축 회전 행렬을 각각 구하게되는데, 임의의 (x,y,z) 회전을 해야할때, 회전행렬은 Z축, Y축, X축을 한번에 하나의 행렬로 계산하는게 아니라, 각 축의 회전을 담당하는 회전행렬들을 정해진 순서대(Z->Y->X)로 곱해서 처리한다라고 알고 있고, 그래서 한 축씩 회전행렬을 곱해서 처리하다보니, 회전하는 축이 다른 축과 90도를 회전했을때 겹쳐지는 순간이 발생하고, 그때 문제가 발생할 수 있어서 그것을 짐벌락 현상이라고 이해하고 있는데, 제가 이해한게 맞을까요? 기술면접에서 이렇게 설명해도 괜찮을지 의문입니다. 그래서 쿼터니언처럼 x,y,z축 회전을 한번에 순서와 무관하게 한번에 처리하는 행렬을 만든것이라고 알고 있구요. 이건 후반부 강의를 들으면 배울 수 있을것 같습니다. 다만, 이 강의에서 회전행렬에 대해서 공부할때, 제가 말씀드린 부분으로 이해해도 괜찮은건지, 오류가 없는지 궁금해서 질문 남겨봅니다.
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
좌표계 변환에 대해
좌표계 변환에 대해 궁금증이 생겨서 질문 남깁니다. 강의 초반부분에서 유니티 짱을 통해서 로컬좌표와 월드좌표계를 설명해주셨는데요, 이 부분에서 궁금증이 생긴게, 카메라 좌표계로 최종적으로 변환되어야할때, 각 물체들의 좌표값은 각각의 물체의 로컬 좌표계에서 카메라 좌표계로의 변환 행렬을 곱해서 카메라 좌표계의 좌표값을 얻어내는지, 아니면 이미 이전에 유니티의 Inspector에 있는 Transform 정보에 있는 World좌표계의 값으로 하는지 궁금합니다. 저는 개인적으로 후자일것 같은데, 후자가 좀 아쉽다고 느껴진건, 이미 한번 로컬좌표계에서 월드 좌표로 변환을 해줬는데, 또 번거롭게 거기서 카메라 좌표계로 바꿔준다는게 뭔가 좀 아쉽다는 생각이 들었습니다. 만약 그것이 최종 목적과도 같은 무언가였다면, 각각의 물체의 로컬좌표값을 카메라좌표 변환 행렬을 곱해서 처리했으면 어땠을까, 라는 생각이 들었습니다. 관련해서 선생님의 의견이 너무 궁금해서 못참고 올려봅니다ㅎ
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
M 행렬에 대해서
내용을 듣다가 의문점이 생겨서 질문을 남겨봅니다! M 행렬을 곱한다는건 이해가 가는데, M행렬을 굳이 만들지 않고, v벡터와 동일한 형태의 벡터를 만들어서 그냥 둘끼리 더하는 연산을 해줬으면 그래도 됐지 않았을까 생각되는데 왜 굳이 행렬을 곱하려고 한건가요? v = (x,y,z) v2 = (k1,k2,k3) v1 + v2 = (x+k1, y+k2, z+k3) 이렇게 제가 원하는 translation 결과값을 얻을수도 있는데 왜 굳이 행렬을 어렵게 곱해서 결과를 얻어내려고 했는지 그 이유를 잘 모르겠습니다ㅠ
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
GEngine이 empty입니다
1:17:41처럼 EnginePch.cpp에서 처럼 unique_ptr<Engine> GEngine = make_unique<Engine>(); 로 만들어줬는데도 불구하고 void Game::Init(const WindowInfo& info) { GEngine->Init(info); } GEngine이 empty라고 뜨면서 디버그 모드로 실행하면 저 부분에서 Exception이 일어납니다. 이 경우는 EnginePch.cpp에 있는 저 라인을 실행하지 못해서 그런건가요, 아니면 저 문장을 실행은 했지만 어디서 설정을 잘못해서 못 읽어들여서 그런건가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
hlsli 내용이 이해가 안갑니다
강의에 나온 쉐이더 부분의 코드를 보다가, 원래 코드는 ouput.color += offset1로 되어있었는데, offset0으로 해서 실행해 보았습니다. 그런데 최종 결과는 여전히 같더군요. <실행 결과> offset0이 의미하는것과 offset1이 의미하는것이 무엇인지 궁금합니다. 그리고 위와 같이 TEST_B0와 B1은 각각 다른 버퍼와 연결된 레지스터들을 의미한다고 이해했는데, 그 오른쪽에 b0과 b1은 해당 레지스터를 말하는거구요. 그렇다면 offset0은 b0에 해당하는 내용이므로, 밑의 VS_Main 함수 내부에서 color값을 조정할때는 offset0으로 색깔을 조정해줬어야 한거 같은데, 강의에서는 이 부분에 대해서 offset1로 색깔은 다르게 지정하셨는데 이유가 뭘까요? 그리고 위의 사진과 같이 원래라면 VS_Main은 들어오는 변수가 b0에 대한 내용인지 b1인지를 구별하기 위해서 offset0과 offset1을 if문 같은 조건문으로 구별해서 설계를 했어야 할것 같은데, 그 문법이 따로 없이 알아서 동작하는것이 이해가 안갔습니다. 쉐이더 문법이란걸 알지만, 이 부분에 대해서 간단하게라도 설명해주시면 감사하겠습니다!
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
헤더파일에서 매크로 선언은 전방선언 없이 어떻게 사용 가능한가요?
간단한 매크로 변수와 관련된 질문 하나 부탁드립니다ㅠ SwapChain 클래스를 구현할때, ComPtr<ID3D12Resource> _renderTargets[SWAP_CHAIN_BUFFER_COUNT]; 이란 코드를 넣는데, 이때 더블 버퍼링을 의미하는SWAP_CHAIN_BUFFER_COUNT enum 상수를 넣는 내용이 있습니다. 꼼꼼이 공부하다보니, 매크로는 전처리 단계에서 처리되어 실제 원본 값으로 바뀌는것을 알고 있는데, 이때 헤더에서는 이 매크로에 대한 정보를 헤더파일에 include 해주지 않은 상태인데도 어떻게 문제없이 작동하는지 궁금합니다. (매크로는 EnginePch.h 에 있는데, 이 헤더를 SwapChain.h에서 추가하지 않은 상태입니다.) 매크로 변수가 뭔지 알기 위해서는 전처리기는 cpp파일로 이동해서 include된 pch.h에 접근하고 거기서 EnginePch.h에 접근해야만 비로소 SWAP_CHAIN_BUFFER_COUNT 이 무엇을 의미하는지 알게되는데, 이것과 비교하여 컴파일러의 컴파일 단계에서는 헤더파일을 빌드할때 정보가 필요한 헤더파일이 딱히 없어도 전방선언만 해주면 통과되는것으로 알고 있습니다. 그렇다면 전방선언도 하지 않은 매크로가 통과되는건 전처리기 단계에서는 컴파일러와 다르게 모든 소스코드를 뒤져본다는 것으로 이해하는게 맞는걸까요? 위에서 적은대로, cpp 까지가서 해당 정보가 있는지 확인하고, 그 헤더들을 다 뒤져보는 과정이 전처리기에 숨어있는지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
그래픽카드와 d3d12.h 컴파일 관련
컴퓨터로 공부할때는 문제가 없었는데, 8년전에 산 노트북으로 작업할때 이상하게 _device가 초기화되지 않는 문제를 알게되었습니다. 정확히 문제가 되는 지점은 Device의 Init함수에서 ::D3D12CreateDevice(nullptr, D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&_device)); 이 부분이 실행되어 Device가 만들어져서 _device에 정보가 들어가야하는데 저의 노트북에서 자꾸 0x00000000 으로 나오면서 생성되지 않는것을 알게되었습니다. 혹시 오래된 노트북이 그래픽카드 문제로 DirectX12를 지원하지 않으면 프로그램 개발도 안되는건가, 싶어서 구글링을 해보니, 제 노트북 그래픽카드는 삼성노트북의 내장 그래픽으로 intel Graphics 4000인데, DirectX11 까지 지원한다고 나와있더군요. 그래서 ::D3D12CreateDevice 함수가 제대로 실행되지 않은 이유가 그래픽카드 자체에서 DirectX12 라이브러리를 참조할 수 없기 때문에 그런건지 궁금합니다. 제가 생각한대로 각 컴퓨터의 그래픽카드 사양이 만약 DirectX12를 지원하지 못한다면, 프로그램 개발도 안되는건가요? DirectX12를 지원하지 않는 그래픽카드는 ::D3D12CreateDevice 함수를 사용할 수 없다는 생각이 맞는건가요? (저는 바보처럼, 프로그램 개발은 그래픽카드에 영향을 딱히 안받을줄 알고 있었는데 그게 아닌가 무척 궁금합니다!)
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
안녕하세요. get함수와 관련해서 질문드립니다.
안녕하세요. get함수 관련해서 질문드립니다. 수업에서도 get 함수가 많이 사용하고 있잖아요. 강사님께서는 const와 레퍼런스 타입으로 사용할때고 있고, 그냥 value로 반환하시기도 하시던데, 1.). 저는 이런식으로 get함수를 사용하고 있는 데 오버인가요? 아니면 잘 사용하고 있는건가요? const int& GetFindRoad() const { return SelectRoad; } 2) 더불어 수업이랑 벗어난 내용입니다만,,, Effective c++ 책을 보면 레퍼런스 타입으로 객체를 리턴하게 되면 임시객체가 생성되고, 생명주기가 길어져서 되도록 피하라고 하는데, 그러면 복사되는 객체를 반환해야 효율이 좋은것일까요? 수업외 질문해서 죄송합니다
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
강의이해
dx가 처음이라 사용되는 함수도 많고 해서 한번에 이해가 다 되지 않고 대충 00은 자료를 전달하는 클래스이고 00은 그걸 받아 자료를 출력하는 클래스로 동작한다 대충 이런 느낌으로 보고 있는데 이런 느낌으로 봐도 괜찮은가요? 처음에는 대충 굴러가는 느낌만 보고 완강 후 2~3번 다시 볼 계획입니다
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
프레임 및 텍스쳐 관련 질문입니다
강의 영상을 보면 프레임 제한 없이 프레임이 2천 이상 뽑히는 것을 볼 수 있는데요. 저는 프레임이 모니터 주사율에 맞게 VSync가 걸립니다. 드라이버 제어판이나 리바튜너 같은 프로그램으로 글로벌 프레임 제한은 따로 걸어두지 않았습니다. 문제는 아니지만 궁금해서 질문 드립니다. 또 질문이 하나 더 있는데요. 텍스쳐 파일을 불러오는 API를 보면 DDS, TGA, HDR, WIC의 4가지로 나뉘어져 있는데 왜 앞의 3개의 확장자를 가지는 파일에 대하여 별도의 API를 가지는지 궁금합니다. 또 텍스쳐를 jp(e)g나 png로 불러올 경우 채도가 높아지는 듯 한 느낌을 받는데 왜 이런 결과가 나오는지도 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
디버깅 결과와 '디버그 하지 않고 시작'이 서로 다르게 작동합니다
Component 강의 수강 후부터 발생한 문제입니다. 디버깅(F5)를 하면 클라이언트가 정상적으로 실행되지 않지만, 디버그 하지 않고 실행(ctrl+F5)을 하면 정상적으로 실행됩니다. 디버그 하지 않고 실행시 코드를 변경하고 실행하면 제대로 반영됩니다. 그런데 디버깅을 하면 아래와 같은 문제가 뜨면서 클라이언트가 실행되지 않습니다ㅠㅠ 올려주신 코드와 일일히 비교해보기도 하고 호출 스택을 따라가면서 잘못된 부분이 있나 찾아봤지만 rootSignature도 제대로 make_shared 한 후 초기화도 진행해서 왜 정의되어 있지 않다고 뜨는지 모르겠습니다... 이 문제를 해결하려면 어느 부분을 살펴보는 것이 좋을까요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
패턴에 관해 질문 합니다.
영상 내에서 싱글턴 패턴에 대해 설명하여 패턴을 활용하면 좀 더 효율적으로 코드를 만들 수 있을 것 같은 느낌이 들었습니다. 패턴은 공부해두면 좋은지 궁금합니다. 'Part3: 자료구조와 알고리즘', 'Part4: 게임 서버'를 익히고 공부해보려는데 선수 지식이 부족하지는 않은지 궁금합니다. 'GoF의 디자인 패턴'과 '게임 프로그래밍 패턴' 책으로 패턴을 학습하려는데 괜찮은 책인지 그 외 패턴에 관한 좋은 자료가 있으면 알려주면 감사하겠습니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
38분경 행렬 곱이 이해가 안가서 질문 드립니다..
I^2 = -E라고 하셨는데 [0 -1] [0 -1] = [1 0] [-1 0] [-1 0] [0 1] 아닌가요? I가 [ 0 i] [ i 0] 인데 잘 못 쓰신건가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
질문 드립니다
현재 수업 Lighting까지 듣고있는데요. 듣던 중 이 수업에 대한 이해도가 어느정도여야 학습이 잘된지 확신이 안서서 질문 드립니다. 지금 함수를 보면 그 함수의 상세한 구현 방식이나 인자들의 쓰임새를 알기 보다는 함수의 대략적인 쓰임새와 중요 인자들만 이해하는 정도로 학습을 하고 있는데요... 혼자서 코드를 안보고 작성할 정도의 이해 해야할까요?