SMALL

분류 전체보기 103

모델이 화면에 표시되는 과정

오브젝트 모델이 화면에 표시되려면 먼저 SRT 변환 행렬을 통해 위치와 회전, 스케일이 모두 변환되어야 한다. 오브젝트의 중심점을 기준으로 모델이 위치하는 것이 로컬스페이스(Local Space)이다. 모델이 로컬스페이스에서 모니터에 표시되기까지 5단계의 변환 행렬이 행해져야 한다. Local Space ↓ World Space ↓ View(or Camera) Space ↓ Projection Space ↓ Screen(or Viewport) Space

'ID3D11Device'와 'ID3D11DeviceContext' 사용

수많은 GPU(그래픽카드)에 대한 하드웨어적인 연결을 마이크로소프트와 GPU제조사가 하도록 하며, 개발자는 DirectX에서 제공하는 ID3D11Device와 ID3D11DeviceContext를 통해 제공하는 기능에만 신경쓰면 되도록 설계된 COM 객체이다. COM(Component Object Model) 은 "객체의 내부를 노출하지 않고, 응용 프로그램이 호출할 수 있는 함수들만 노출하는 모델"을 의미한다. 따라서 COM객체는 인터페이스를 통해 참조하여 내부 함수를 호출하도록 설계되어 있다. ID3D11Device* _device; ID3D11DeviceContext* _deviceContext; 이런 식으로 쌩?포인터로 사용하게 되면, AddRef 함수나 Release 함수에 접근할 수 있다. 여..

[Unity/Android] 구글 오류 Error Unity AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.games.Games

프로젝트 빌드에는 성공했지만 로그캣에 이와 같은 오류와 함께 GooglePlay 로그인 및 기능이 실행되지 않았다. Error Unity AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.games.Games 해결 방법(Unity2022.2.7f1 기준) 1. ProjectSetting/Player/Publishing Settings으로 접근 2. Minify에 Release와 Dubug를 체크 3. Build에 'Custom Proguard File' 체크 4. Assets/Plugins/Android 폴더에 접근 5. proguard-user.txt 파일을 열어서 아래의 내용을 추가 -keep class com..

퍼사드 패턴(Facade Pattern)

퍼사드 패턴(Facade Pattern) Facade는 '건물의 정면'을 의미하는 단어로 복잡한 내부가 아닌 겉면의 모습만을 보여주는 것을 뜻함 어떤 소프트웨어의 다른 커다란 코드 부분에 대하여 간략화된 인터페이스를 제공해주는 디자인 패턴 Gof 디자인 패턴 분류에서 구조 패턴(Structural Pattern)에 해당 퍼사드 패턴은 객체 내부에 서브시스템(작동에 필요한 객체들)을 가지고 있다. 서브시스템의 메서드들을 통합(캡슐화)하여 클라이언트가 서브시스템의 각 기능들을 알지 못하더라도 원하는 순서에 따라 동작을 할 수 있도록 해준다.

OOP/디자인패턴 2022.08.15

DFS & BFS

깊이 우선 탐색(Depth-First Search:DFS) - 바이너리 트리를 순회할 때 사용하는 방법의 inorder, preorder, postorder를 사용 - 인접 노드를 타고 인접 노드가 없을 때까지 도달 후 다시 거슬러 올라오며 순회 Stack을 이용하여 구현 스택에 시작 노드를 넣어준 후 방문처리(Visited) 한다. 스택의 노드 하나를 꺼낸다(Pop). 꺼낸 노드가 인접(Adjacent) 노드가 있으며 방문하지 않았다면, 스택에 넣어준 후(Push) 방문처리한다. 스택이 비워질 때까지 2, 3번 과정을 반복한다. Recursion(재귀호출)을 이용한 구현 시작 노드를 먼저 방문처리 후 인접 노드를 방문한다. 방문한 인접 노드를 방문처리 후 인접 노드가 있다면 차례로 방문한다. 방문할 인..

튜플 (Tuple)

튜플(Tuple) - C# 7.0 이상에서 사용 가능한 간단한 데이터 구조 - 여러 데이터 요소를 그룹화하는 간결한 구문 초기화 방법 (다수의 자료) 변수명 = (자료형의 값); // 매개변수 이름 지정하지 않고 초기화 (double, int) t1 = (4.5, 3); Console.WriteLine(t1.Item1 + ", " + t1.Item2); // 매개변수 이름을 지정하여 초기화 (double Sum, int Count) t2 = (4.5, 3); Console.WriteLine(t2.Sum + ", " + t2.Count); // var 키워드를 사용하여 자료형 선언 생략 var fullHd = (1920, 1080); Console.WriteLine(fullHd.Item1 + ", " + ..

DAG(Directed Acyclic Graph) 알고리즘

유향 비순환 그래프(Directed Acyclic Graph, DAG) - 순환이 없도록 설계된 방향성을 가진 그래프이다. - 즉 어떤 정점이든 1회만 접근 가능하도록 비순환적(Acyclic)으로 만들어진 그래프이다. - 수학, 컴퓨터, 과학 등 여러분야에서 사용하는 용어이며, 높은 처리량에 우수하여 사물 인터넷과 소액 결제와 같은 많은 영역에서 활용될 수 있다. - 따라서 어떤 선행되어야 하는 것이 있는 경우를 표현할 때 유용하다. 위상정렬(Topological Sort) - DAG의 정점들을 순서화하기 위한 정렬, 즉 DAG 위에서만 동작 가능 - 우선순위를 표현하기 위해 사용하는 정렬 알고리즘 - 일반적으로 시간복도는 O(V + E)를 갖는다. DAG를 활용한 최단경로, 최장경로 - 위상순서 위에 ..

유니티에서 얼리얼으로 전환 Part-1 (Unity to Unreal Fundamentals)

프로젝트 생성(4.72.2 기준) - 유니티의 UnityHub와 같이 에픽게임즈 런처를 통해 엔진을 설치하고 프로젝트를 생성할 수 있다. - 최근 UnityHub에서도 템플릿을 제공하고는 있지만 언리얼이 조금 더 다양한 템플릿을 제공한다. 원하는 템플릿을 선택하거나 기본을 선택한 후 다음을 누른다. - 프로젝트 세팅 화면에서 먼저 비주얼스크립팅(블루프린트)으로 제작할 지, 코드 기반으로 할 지를 선택한다. - 이후 나머지 프로젝트 환경 설정을 선택한 뒤, 프로젝트 위치를 지정 및 프로젝트명을 작성한 다음 프로젝트 생성을 누르면 프로젝트가 생성된다. - Third Person 템플릿으로 생성한 프로젝트의 화면이다. - 하단 콘텐츠 브라우저는 유니티에서의는 프로젝트 창과 동일하며, 유니티는 Assets 폴더..

LIST