728x90

전체 글 930

DirectX 11 스터디 - MeshRenderer 컴포넌트 (GameObject 완)

렌더링 관련 처리를 담당해줄 MeshRenderer 컴포넌트를 생성. GameObject 에 몰려있던 Device, DeviceContext를 모두 MeshRenderer 로 이동시켜주고 MeshRenderer 의 Render() 함수를 호출해서 렌더링 처리를 하게 해준다. 이제 GameObject 는 DirectX COM 객체를 가질 필요가 없어짐. class GameObject : public enable_shared_from_this { public: GameObject(); ~GameObject() {} void Awake(); void Start(); void Update(); void LateUpdate(); void FixedUpdate(); shared_ptr GetFixedComponen..

DirectX 11 스터디 - Camera 컴포넌트

Camera 컴포넌트를 생성해서 View, Projection Matrix 를 갱신하고, 갱신한 값을 셰이더에서 참조, 연산하도록 수정. 먼저 기존에 GameObject 에서 TransformData 를 갱신하던 코드. Transform클래스의 UpdateTransform 함수에서 World좌표계 변환 Matrix를 만들었다. void GameObject::Update() { _transformData.matWorld = _transform->GetWorldMatrix(); _constantBuffer->CopyDate(_transformData); } void Transform::UpdateTransform() { Matrix matScale = Matrix::CreateScale(_localScale..

스마트 포인터 노트 auto_ptr, unique_ptr, shared_ptr, weak_ptr

비야네 스트로스트룹 "디자인 패턴 RAII (Resource Acquisition Is Initialization)" "자원의 획득은 초기화다" == "자원 관리를 스택에 할당한 객체를 통해 수행" C++11 이전 auto_ptr 이 등장. 많은 문제가 있었음. 참조 : Why is auto_ptr being deprecated? https://stackoverflow.com/questions/3697686/why-is-auto-ptr-being-deprecated " auto_ptr을 직접적으로 대체할 수 있는(또는 어쨌든 이에 가장 가까운) 것은 unique_ptr입니다. auto_ptr은 할당될 때 소유권을 이전합니다. unique_ptr도 소유권을 이전하는데, codification of move..

DirectX 11 스터디 - GameObject 의 첫 컴포넌트 Transform

GameObject 의 Scale, Rotation, Translation 을 처리할 컴포넌트를 생성해서 코드를 모듈화 해본다. Component 클래스를 만들고, 이 클래스를 상속받아 Transform 컴포넌트를 생성해줌. 유니티의 그것과 동일한 네이밍. 동일한 기능을 만들어본다. Transform 클래스를 만들고, GameObject 가 들고있던 _localScale, _localRotation, _localPosition 을 옮겨줌. 관련 Get/Set 메소드들도 모두 만들어준다. 로컬좌표계의 SRT 변환을 처리해줄 행렬 Matrix _matLocal 을 생성해주고, 이 행렬을 활용해서 월드좌표를 계산할 메소드 UpdateTransform() 함수를 만들어준다. #include "Component...

DirectX 11 스터디 - 고유 물체를 정의할 GameObject 만들기

여기까지 개발한 렌더링 처리 객체인 Pipeline, 그리고 물체마다 고유한 값을 가질 수 있는 객체들을 모아서 GameObject 를 만들어본다. 방향성은, 유니티 엔진의 GameObject 스타일로 만들고, Transform 처리는 컴포넌트 형태로 만들어 붙여보는 순서로 진행. 한번에 몰아서 구현하던 Game 클래스에서, 물체마다 고유한 값을 가져야 하는 객체들을 모두 GameObject 로 옮겨서 구현. class GameObject { public: GameObject(ComPtr device, ComPtr deviceContext); ~GameObject() {} void Update(); void Render(shared_ptr pipeline); private: ComPtr _device; ..

DirectX 11 스터디 - 모듈화 (2), 렌더링을 책임질 Pipeline클래스 작성

앞에서 Geometry, VertexData 부터 Output Merger 의 BlendState까지 모두 모듈화 해서 DX COM객체를 캡슐화 했고, 이번엔 모듈화한 객체들을 가지고 Rendering Pipeline 을 실제 수행하는 객체를 작성해본다. 파이프라인에서 고유하게 존재하고 사용되어야 하는 모듈들과, 3D 물체마다 값/설정이 변경되어야 하는 모듈을 구분한다. 3D 물체마다 설정이 변경되어야 하는 객체들을 별도로 그룹화 해서 PipelineInfo 구조체로 묶어준다. 렌더링 파이프라인에 이 구조체를 기준으로 설정을 바꿔서 태워주면 새로운 물체를 그릴 수 있게 됨. PipelineInfo 는 아래 구성 요소가 포함됨. 여기서 ConstantBuffer는 3D 메시마다 필요할 수도, 필요하지 않을..

로지텍 버티컬 마우스 MX VERTICAL, LIFT 직접 체험해보러 다녀왔습니다 (+ MX Master 3S 체험)

회사와 집 모두에서 트랙볼 마우스를 사용했는데, 집에서 쓰던 트랙볼이 수명을 다 해서 일반 마우스를 오래 쓰다보니 손목에 피로가 좀 쌓이는 느낌이에요. 게임 개발자라는 직업 특성상 마우스도 많이 사용하는데, 트랙볼 마우스가 망가진 이후에는 그냥 아무 마우스 집히는 걸 쓰고 있어서 좀 신경을 덜쓴 것 같습니다. 그래서 이번엔 버티컬 마우스를 써볼까 합니다. 친구에게 추천받기도 했던 로지텍 MX VERTICAL, 그리고 LIFT 두 제품을 고려 해보고 있었습니다. 장비에 투자를 해야 게임 개발도 더 잘 되지 않을까 하는 그런 느낌적인 느낌으로. 두 제품 모두 저렴한 가격대가 아니었기 때문에, 무턱대로 사기보다는 직접 만져보고 사봐야겠다는 생각으로 근처 로지텍 매장을 찾아서 방문해봤습니다. 가깝고 차로 가기 ..

DirectX 11 스터디 - 모듈화 (1)

앞선 스터디 과정에서는 하나의 클래스에 DirectX 객체들을 모두 모아서 구현했었음. 한 클래스에 모아서 구현했던 객체들과 개념, 동작들은 아래와 같음. DirectX 핵심 객체 : Device, DeviceContext, SwapChain Render Target : SwapChain 에서 백버퍼를 가져와서 RenderTarget 생성 RenderBegin : 렌더타겟뷰 셋팅, 클리어. 뷰포트 셋팅. RenderEnd : 에서 SwapChain->Present 호출해서 백버퍼 고속복사로 화면 갱신. Geometry 데이터 생성 및 관리 Vertex Buffer, Index Buffer 생성 Input Layout 생성 및 설정 Vertex Shader, Pixel Shader Texture 로드, S..

일본 유니티 개발자가 언리얼 엔진에 입문하면서 느낀 생각의 차이점

일본에서 10년간 유니티를 사용하다가 UE 를 이제 막 시작해서 1주일 정도 사용해본 분의 경험담. 표현 중 기억에 남는 재밌는 글이 있어서 스크랩. (원문 내용을 부분부분 스크랩 한 글이라 존댓말이 섞여있음.) 구성 - 원문 핵심 정리 - 전체 요약 원문 핵심 정리 결론부터 언리얼 엔진은 simple가 아니라 easy이다. 언리얼 엔진은 "(FPS|TPS|3D 액션 게임) 쯔꾸르"이다. 여기서 쯔꾸르 특성 참고. RPG를 만드는데 필요한 기능은 모두 갖추어져 있으며, 그 안에서 완결되는 것이라면 간단(easy)으로 만들 수 있습니다. 하지만, 아오오니 등이 유명한 것처럼 RPG 이외에도 만들 수 있습니다. 조금 힘들지만. 그래서 UE도 FPS/TPS/3D 액션 게임을 만드는 데 특화된 게임 엔진이라고 ..

유니티 덕분(?)에 핫해진 고도 엔진(Godot Engine)을 간단하고 빠르게 알아보자

유니티 엔진(Unitye Engine) 덕(?)분에 고도 엔진(Godot Engine)이 요즘 주변에서 많이 언급되고 있습니다. 어제 유니티의 새 가격 정책이 공개된 여파인 것 같습니다. (아래 링크) (유니티 엔진 새로운 요금 정책! 다운로드 수만큼 돈 내라? https://blog.naver.com/sorang226/223210350857 유니티 엔진 새로운 요금 정책! 다운로드 수만큼 돈 내라? 좀, 아니 많이 충격적입니다. 유니티로 개발한 게임에서 발생한 다운로드 수만큼 수수료를 더 지불하라니요... blog.naver.com 저도 아직 제대로 사용해 보진 않은 엔진인데요. 이번 기회에 조금 알아보면서 수집하고 정리한 내용들, 빠르게 공유해 봅니다. 이름의 유래부터, 무료인지 유료인지, 사용 언어..

728x90
반응형