분류 전체보기
-
[Unreal Engine 5] UE5 시작하기 : 언리얼 에디터 둘러보기Unreal Engine 5._ 2022. 7. 7. 16:14
지난 글 [설치부터 실행까지] 에서 UE5를 설치하기까지의 과정을 살펴보았습니다. 이번 글에서는 언리얼 에디터를 가볍게 둘러보도록 하겠습니다. 1. 프로젝트 생성하기 더보기 언리얼 프로젝트 브라우저에서 언리얼 프로젝트를 생성할 수 있습니다. 최근 프로젝트에서 생성한 프로젝트를 살펴보거나, 아래에서 새 프로젝트를 추가로 생성할 수 있습니다. 이번에는 템플릿 팩에 있는 일인칭 프로젝트를 생성하도록 하겠습니다. 프로젝트 디폴트 설정입니다. 블루프린트 / C++ 및 타겟 플랫폼 등을 설정할 수 있습니다. 영구적인 설정이 아니며, 이후 프로젝트 진행 중 변경이 가능합니다. 프로젝트 위치를 선택하는 항목입니다. 프로젝트가 저장될 디렉토리와 프로젝트 이름을 설정할 수 있습니다. 모든 설정이 완료된 후 생성을 누르면 ..
-
[Unreal Engine 5] UE5 시작하기 : 설치부터 실행까지Unreal Engine 5._ 2022. 7. 5. 16:46
언리얼 엔진 5를 시작하기 위해 필요한 가장 기초적인 단계를 짚어보도록 하겠습니다. 1. Epic Games Launcher 다운로드 더보기 에픽게임즈 런쳐는 에픽게임즈에서 운영하는 ESD 입니다. 스팀과 유사한 게임 소프트웨어 유통망으로써, 스팀을 아시는 분이라면 이해하기 수월하실 듯 합니다. 에픽게임즈는 이러한 자사의 유통망에, 자사의 게임 엔진인 언리얼 엔진 또한 포함시켜 운영하고 있습니다. 에픽게임즈 We develop cutting-edge games and cross-platform game engine technology! www.epicgames.com 위 링크를 통해, 에픽게임즈 런쳐를 다운로드하실 수 있습니다. 2. 회원가입 더보기 다운받은 설치 파일을 통해 런쳐를 설치후 실행하시면, ..
-
[Effective Modern C++] std::move와 std::forwardC++/Effective Modern C++ 2022. 6. 30. 14:02
C++11에 제안된 이동 시맨틱(Move semantics)은 이동 생성자와 이동 배정 연산자를 사용합니다. 위 함수들을 사용함으로써 복사 연산을 이동 연산으로 대체하는 것에 의의가 있으며, 이것은 함수의 비용이 줄어든다는 장점을 가지고 있습니다. 또한 복사 연산을 제한하는 객체 (std::unique_ptr과 같은)를 이동 연산으로 이동할 수 있다는 특징이 있습니다. 이번 글에서는 이동 시맨틱에 사용되는 함수들인 std::move와 std::forward에 대해 살펴볼 것 입니다. 1. 개요 더보기 std::move와 std::forward는 각각 이동, 전달이라는 의미를 가진 함수입니다. 하지만, 이들 함수가 실제로 이동과 전달을 수행하지는 않습니다. 이들 함수를 사용한 코드의 결과를 보면 이동과 전..
-
[WinAPI] Edit Control에서 Enter키 입력 받기C++/미분류 2022. 6. 22. 12:39
WinAPI의 Edit control은 사용자의 입력을 받는 컨트롤 중 하나입니다. 때때로는 설계 방식에 따라, 이 입력 도중 Enter키를 통해 특정 상호작용을 해야 할 때가 있습니다. 이번 글에서는 그에 대해 다루어 보도록 하겠습니다. 1. UI 설정 더보기 글에서 목표하는 바는 Edit control에서 Enter키가 개행 이외의 방법으로 작동 되게 하는 것 입니다. 이를 위해 간단하게 Edit Control이 있는 UI를 만들어 보도록 하겠습니다. 코드 및 형태는 아래와 같습니다. #include #include #include #include #include #define ID_EDIT 100 static TCHAR szWindowClass[] = _T("DesktopApp"); static T..
-
[Visual Studio] LNK2019, LNK1120C++/미분류 2022. 6. 13. 14:35
LNK2019 : main"int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 함수에서 참조되는 확인할 수 없는 외부 기호 LNK1120 : 1개의 확인할 수 없는 외부 참조입니다. 위 메시지는 프로그램의 진입점을 찾지 못해서, 혹은 설정이 잘못되어서 출력되는 메시지 입니다. 발생 원인은 여러가지가 존재하겠지만, 제가 겪어본 사례들과 해결 방법을 나열해보도록 하겠습니다. 1. 프로젝트 구성 형식 변경 더보기 프로젝트 속성 페이지 (프로젝트 우클릭 -> 속성)에서 구성 형식을 변경합니다. CUI, GUI의 경우에는 애플리케이션으로 설정할 수 있습니다. main함수가 필요하지 않은 라이브러리 (.lib, .dll)의 경우는 각각 상황에 맞게 설정할 수 있습니다. 2..
-
[Visual Studio] Solution & ProjectC++/미분류 2022. 6. 7. 18:04
프로젝트(Project)는 일반적으로 하나의 실행 파일, 혹은 그에 준하는 무언가(라이브러리 등)의 결과를 산출합니다. 하지만, 이것이 특정 문제의 "해답"이라고 볼 수 없거나, 한 개의 프로젝트로 묶기에는 연관성이 떨어지는 경우가 존재합니다. 예를 들어, 특정 라이브러리를 만든다거나, 서버와 클라이언트로 나뉘어있는 경우가 그럴 수 있습니다. Visual Studio, 그리고 대부분의 IDE는 이러한 상황을 능동적으로 다룰 수 있는 기능이 있습니다. 이번 글에서는 이에 관해 다루어 보도록 하겠습니다. 1. 솔루션과 프로젝트 만들기 및 추가 더보기 솔루션은 프로젝트들을 담을 수 있는 컨테이너 입니다. 프로젝트가 모여서 솔루션이 된다고 생각해도 무방할 것 같습니다. Visual Studio는 처음 프로젝트를..
-
[Effective Modern C++] Pimpl idiomC++/Effective Modern C++ 2022. 6. 1. 16:17
Pimpl 관용구 (Pimpl idiom)은 빌드 최적화 및 클라이언트 의존성 해소를 위한 디자인 패턴 입니다. 이번 글에서는 Pimpl에 대한 기본적인 구현 방식을 살펴보도록 하겠습니다. 1. Pimpl 더보기 Pimpl의 기본적인 구현 방식은 자료 멤버들을 특정 객체로 대체하고, 그 특정 객체를 포인터를 통해 간접적으로 접근하는 것 입니다. 예제를 살펴보도록 하겠습니다. class MyClass { public: MyClass(); ... private: std::string name; std::vector data; Object obj_1, obj_2; // Custom class }; 위와 같이 정의된 클래스가 있을 경우, 클라이언트는 , , object.h를 포함해야 합니다. 그리고 이것은 컴파..
-
[Effective Modern C++] Smart pointer : std::make_unique<>, std::make_shared<>C++/Effective Modern C++ 2022. 5. 25. 12:03
이전 글에서 스마트 포인터 중 std::unique_ptr, std::shared_ptr, std::weak_ptr에 대하여 살펴보았습니다. 스마트 포인터를 생성할 때에는 Raw pointer와 유사하게 new연산자를 사용하는 방법이 있고, 표준 라이브러리에 존재하는 std::make_unique, std::make_shared와 같은 함수를 사용하는 방법이 있습니다. 생성하는 방법은 두 가지지만, 특정 경우를 제외할 경우 new연산자 보다는 make함수를 사용하는 것이 권장됩니다. 이번 글에서는 두 종류의 make함수와 이것이 new와 비교하여 가지는 장점이 무엇인지 살펴보도록 하겠습니다. 1. 코드 중복 (Duplicate) 더보기 make함수들의 장점으로 보일 수 있는 가장 간단한 예시는 아래 예제..