728x90
반응형
SMALL

전체 글 46

[C++] Container - List

저번에 알아봤던 vector에 이어 오늘은 list에 대하여 알아보자. 우선, list는 자료구조 시간에 배웠던 Linked List이다. Linked List(연결 리스트)? 우리는 앞서 배열이 연속된 메모리 공간을 할당 받는다는 사실을 공부했다. 그럼 List는 어떨까? List의 경우 연속된 공간으로 메모리 공간을 할당받지 않는다. 즉, 메모리에 접근하기 위해서 인덱스 값을 가지고 접근할 수 없다. 그러면 어떻게 되어 있을까? 대략 이런 구조로 되어 있다. 그림이 개판이긴 하지만, 현재 List는 양방향 연결리스트를 표현 한 것이다. 리스트를 처음본 사람들은 이해할 수 없을 것이다. 그 이유는, "어라? 앞서 배운 배열과 달리 접근하려면 인덱스가 아닌 현재 객체의 다음 객체를 가리키는 포인터를 이용..

Modern C++ 2021.07.19

[C++] Container - array, vector

이제부터 알아볼 것은 Modern C++에서 제공되는 Container에 대하여 알아볼 것이다. 어떤 Container가 있고, 어떤 특징을 가지는가?? 순서 컨테이너(Sequence Container) - 모든 요소를 특정 위치에 저장한 순서가 있는 모음 - 위치는 삽입한 시점과 위치에 따라 달라지며, 요소의 값과는 독립적 관계를 가짐. - 대체로 배열 또는 연결 리스트로 구현. > 종류 : array, vector, deque, list 연관 컨테이너(Associate Container) - 요소의 위치가 자신의 값과 특정 정렬 기준에 따라 정해지는 정렬 모음. - 삽입한 순서는 중요하지 않음. 오로지 요소의 값에 의해 순서가 결정. - 대체로 이진트리로 구현. > 종류 : set, multi_set..

Modern C++ 2021.07.18

[C++] SmartPointer - weak_ptr

저번 시간에 공부했던 unique_ptr, shared_ptr에 이어서 오늘은 weak_ptr에 대하여 공부해 보도록 한다. shared_ptr에서는 자신이 참조하고 있는 객체(메모리 주소)에 대해 reference counting을 함으로써, 객체의 수명에 직접적으로 관여한다. shared_ptr 객체 하나가 소멸되더라도, 동일한 메모리 주소를 참조하고 있는 다른 shared_ptr 객체가 있으면 참조하고 있던 메모리 주소의 객체는 소멸되지 않는다. - 저번 시간에 공부했던 순환참조의 내용이다. 이 순환참조를 해결하기 위해 나온 녀석이 weak_ptr이다. weak_ptr은 하나 이상의 shared_ptr 인스턴스가 소유하는 객체에 대한 접근은 제공하지만, 소유자의 수에는 포함되지 않는 스마트포인터다...

Modern C++ 2021.07.16

[DirectX12] 렌더링 파이프라인

오늘 알아볼 내용은 DirectX12에서의 렌더링 파이프라인이다. 렌더링 파이프라인(Rendering Pipeline)이란? - 3D 공간을 2D공간인 모니터(Screen Space)에 나타내기 위해 처리해주는 일련의 과정이다. 빨간색은 Shader에서 GPU로 데이터 송신, 노란색은 GPU에서 Shader로 데이터 송신 부분이다. 각각의 Shader에서 어떤 일을 담당하는지 살펴본다. InputAssembler(입력 조립기) : IA - 정점의 정보를 응용 프로그램에서 전달받는다. 여기서 받은 정점 데이터를 다른 파이프라인에서 사용할 수 있도록 프리미티브(Primitive)로 조립한다. 이 Primitive는 정점데이터를 어떤식으로 조립할지에 대한 정보이다. 대강 이런식으로 조립한다. VertexSha..

Direct3D12 2021.07.11

[C++] SmartPointer - shared_ptr

어제 알아봤던 unique_ptr에 이어서 shared_ptr에 대해 알아보도록 한다. shared_ptr? - 이름에 shared라는 문구가 붙었다. 이 의미는 무엇일까? 내 생각에는 unique와 반대로, 소유권을 공유할 수 있는 포인터인 것 같다. 찾아보니 그게 맞는 것 같다. 그럼 단순히 unique_ptr의 반대되는 개념일까? 궁금해서 인터넷을 찾아보았다. shared_ptr의 특징? - 포인터를 참조 카운팅을 통해 관리한다. - shared_ptr는 내부적으로 자원의 주소와 참조 Counting을 수행할 제어블록을 가진다. - 이 참조 Counting을 수행하는 제어블록이 있기 때문에, 하나 이상의 shared_ptr이 자원을 공유할 수 있다. - 자원을 소유한 shared_ptr의 객체 수가..

Modern C++ 2021.07.11

C++ 11 복습 계획

C++ 11을 다시 공부해야 할 것 같다. 물론 17/20 버전을 공부하면 더 좋겠지만, 그 이전에 공부를 너무 안해서 간단하게 이 부분에 대해 알고 갈 필요가 있어보인다. - Container(Vector, List, Map ... ) >> 기본적 Container 사용법, 개념/원리, 최적화 관련 - Iterator >> 반복자 개념/원리 - Lambda >> 람다함수 사용법, 개념/원리 - SmartPointer >> 스마트포인터 (shared_ptr, weak_ptr, unique_ptr ..)의 사용법, 개념/원리 -- 앞으로의 공부 계획 >> DirectX3D12 - 인프런으로 강의 수강 중, 10강좌 정도 남음. 그래픽스 복습 겸 공부 중 >> Modern C++ - 강의를 들으면서 느낀게 ..

Modern C++ 2021.07.04

[Direct3D12] 과제2

[과제 내용] - 과제1을 Direct3D12를 사용하여 만들어라 + 물체의 6면에 각각 다른 색을 넣고, 마우스로 피킹했을 때, 그 면의 색깔대로 파티클의 색을 바꾸도록 한다. [후기] 처음에 했던 피킹도 어려웠는데 이걸 Direct의 렌더링으로 바꾸고 면의 색깔대로 파티클이 나오라고 해서 굉장히 힘들었었다. //광선은 모델 좌표계로 표현된다. XMVECTOR xmRayOrigin = XMLoadFloat3(&xmf3RayOrigin); XMVECTOR xmRayDirection = XMLoadFloat3(&xmf3RayDirection); float fNearHitDistance = 10000000; float fHitDistance; /*메쉬의 모든 프리미티브(삼각형)들에 대하여 픽킹 광선과의 충돌..

Direct3D12 2019.11.01

[Direct3D12] 과제1

[과제 소개] 교수님이 WinAPI를 가지고 3D 게임의 프레임워크를 만들어서 학생들에게 뿌려주셨다. 우리는 그 프레임워크의 기본적인 구조만 가지고 비행기 게임을 만들어야 했다. 과제의 내용은 이러했다. ◆ 플레이어가 움직일 때 상/하/좌/우 방향에 사각형들을 그려 공간의 입체감을 표현해야 함. ◆ 플레이어와 적은 이 공간을 벗어날 수 없음 ◆ 공간의 반대쪽 끝에 적 보스가 있음. ◆ 적 보스는 플레이어를 향하여 총을 발사할 수 있음.(적 보스의 모양 ,이동, 무기 등은 각자 설정) ◆ 플레이어가 보스를 제거하면 게임이 종료 됨. ◆ 적은 4종류이며 색상은(Red,Blue,Green,Pink)으로 구분함. ◆ 모양은 육면체이고 크기가 다를 수 있음. ◆ (Blue,Green,Pink)색상의 적은 플레이어..

Direct3D12 2019.11.01

[Unity] 게임엔진 과제1

탱크 게임 [과제에 대한 목표와 가정] Tank게임예제의 바닥의 크기를 4배로 만든다. 여러 오브젝트를 배치한다. > 교수님이 주신 에셋을 활용하여 배치할 것이다. 플레이어 탱크의 목숨은 4개, 죽을 때마다 랜덤 장소에서 리스폰된다. > Player_Ctrl 클래스를 만들어 피격, 리스폰 관련한 코드를 구현할 것이다. 적 탱크는 움직인다. 지능을 가지고 있고, 맵에 있는 오브젝트와 충돌하면 방향을 바꾼다. 그리고 플레이어를 발견하면 공격한다. > Enemy_Ctrl 클래스를 만들어 적이 환경또는 다른 적과 부딪혔을 경우 랜덤으로 방향을 바꾸도록 하고, 플레이어와의 거리가 일정 거리 이하로 좁혀졌을 경우 공격을 하도록 코드를 구현할 것이다. 플레이어는 마우스로 적 탱크를 찍을 수 있다. 적을 찍으면 포신은..

Unity 2019.11.01
728x90
반응형
LIST