[UE] StaticClass
UE52023. 11. 29. 17:56[UE] StaticClass

공식 문서를 읽어보면 UClass::StaticClass는 "return a object representing this class at runtime"이라고 합니다. 즉 런타임에 클래스를 나타내는 UClass 객체를 반환 한다고 되어 있습니다. 그럼 UClass객체는 뭔지부터 살펴보기 전에 언리얼을 '프로퍼티 시스템' 혹은 '리플렉션'에 대해서 먼저알아 보도록 하겠습니다. 리플렉션(Reflection)이란? 프로그램 실행시간에 자기 자신을 조사하는 기능입니다. C++에서는 해당 기능을 지원하지 않기 때문에 언리얼에서 자체적으로 만든 시스템입니다. 프로퍼티 시스템이라고도 불립니다. 해당 기능은 언리얼 에디터의 디테일 패널, 직렬화, GC, Network Reflication, 블루프린트/C++ 커뮤니케이..

[C++] 스마트 포인터
CPP2023. 9. 14. 10:20[C++] 스마트 포인터

이번글은 C++의 스마트 포인터에 대한 글입니다. 스마트 포인터 C++이후에 나온 언어들을 보면은 C#, JAVA 등등은 '가비지 컬렉터'라고 불리는 '자원 청소기'가 내장되어 있습니다. 프로그램 상에서 더이상 사용하지 않는 자원들을 자동으로 해제 해주기 때문에 사용자가 굳이 메모리 해제를 일일히 신경쓰면서 작업할 필요가 없습니다. 하지만 우리의 C++의 경우 이딴건 지원을 하지 않습니다! (이게 매력인거 같습니다) 그래서 스마트 포인터를 사용하는데 스마트 포인터를 사용하는 가장 큰 이유는 'RAII'때문입니다. Resource Acquisition Is Intialization이라는 말인데요 '오브젝트와 자원 획득과의 초기화를 같이한다(생명주기를 같이한다)'라는 말입니다. (따라서 모든 스마트 포인터는..

[C++] union (DX Matrix)
CPP2023. 9. 4. 12:14[C++] union (DX Matrix)

이번글은 union 키워드에 대한 간단한 글입니다! union union이란? A union is a special class type that can hold only one of its non-static data members at a time. 라고 합니다! 해석하면 한번에 하나의 non-static 데이터 멤버를 가질 수 있다고 합니다. 약간 카멜레온을 생각해주시면 될거같습니다. 어쩔때는 A였다가 어쩔때는 B였다가 하는 식으로요(저는 이렇게 이해했습니다) 아니면 키워드 그대로 '연합체'느낌으로 받아 드리셔도 될거같습니다. 우리는 하나의 연합체다ㅎㅎ 그래서 메모리도 공유한다. 또한 union은 다른 데이터 멤버중에 가장큰 크기를 가지는 데이터 타입의 크기를 할당받습니다. 바로 예시코드를 보면서 이..

[자료구조] 뻐꾸기 해싱
자료구조2023. 8. 27. 11:26[자료구조] 뻐꾸기 해싱

해시 테이블 이번글은 뻐꾸기 해싱(Cuckoo Hashing)에 대한 글입니다! 해시 테이블의 핵심은 '해싱'입니다. '해싱'이란 각각의 주어진 데이터를 최대한 고유한 숫자 값으로 표현하여 나중에 해당 데이터의 유무를 확인하거나 해당 데이터에 대응하는 원본 데이터를 추출 하는 작업입니다. 그리고 주어진 데이터로 부터 고유한 숫자 값을 계산하는 함수를 '해시 함수'라고합니다. 그래서 해시 함수를 무엇을 정하느냐에 따라 해시 함수를 통해 나오는 '해시 값'이 각기 달라지겠지만 가장 일반적인 방법으로는 입력 받은 데이터 : x 가 있을 때 (x % n)으로 '해시 값'을 반환합니다. 이런 방법으로 해시 맵을 구성하여 데이터를 넣다보면 n이 7이라 가정을 했을 때 x가 3, 10 순으로 들어오게 된다면 (x %..

[백준] 2696 중앙값 구하기
알고리즘2023. 8. 26. 11:29[백준] 2696 중앙값 구하기

https://www.acmicpc.net/problem/2696 2696번: 중앙값 구하기 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 수열의 크기 M(1 ≤ M ≤ 9999, M은 홀수)이 주어지고, 그 다음 줄부터 이 수열의 원소가 차례대로 주 www.acmicpc.net 이번글은 백준사이트의 중앙값 구하기에 대한 설명입니다. 먼저 평균값과 중앙값은 다릅니다. 1 2 3 4 5가 있을 때 평균은 1+2+3+4+5 / 5 가 평균값이고 중앙값은 말 그대로 1~5사이에 있는 딱 중앙에 있는 값을 의미합니다. 그리고 우선 시간제한이 1초라는점과 입력값의 최대치를 확인해줍니다. TC가 1000이고 하나의 TC에 대한 M의 입력이 9999입니다...

[DX] Multi Sampling
컴퓨터 그래픽스/DirectX2023. 8. 23. 16:40[DX] Multi Sampling

이번 글은 DirectX11의 멀티 샘플링에 대한 글입니다. 에일리어싱이란? 아래의 사진은 그냥 그림판에다가 선을 하나 그린 모습입니다. 이를 확대해서 보면은 아래처럼 이렇게 자글자글하게 보이는 것을 확인할 수 있습니다. 이러한 현상을 '에일리어싱(Aliasing)'또는 '계단 현상'이라고합니다. 에일리어싱을 완화하는 기능을 '안티 에일리어싱'이라고 하며 언리얼에서는 당연히 '안티 에일리어싱'기능을 제공합니다. 자세한 글은 https://docs.unrealengine.com/5.2/ko/anti-aliasing-and-upscaling-in-unreal-engine/ 안티 에일리어싱 및 업스케일링 언리얼 엔진에서 사용 가능한 안티 에일리어싱 옵션을 살펴봅니다. docs.unrealengine.com 위..

[C++] initializer_list
CPP2023. 8. 23. 15:07[C++] initializer_list

이번 글은 std::intializer_list 생성자에 대한 글입니다! C++11부터 지원된 문법이며 '경량 프록시 오브젝트(lightweight proxy objet)'라고 합니다. '프록시'에 대한 부분은 https://d-yong.tistory.com/49 해당 블로그를 참고해주세요! 간단하게 말하면 뭔가 '대리인 객체'? 대신 생성해주는 느낌으로 이해하시면 될꺼같습니다. 왜냐하면 std::initalizer_list가 실제 리스트 요소를 포함 하지는 않고, 리스트의 요소에 대한 포인터를 포함하고 있기 때문입니다. 문법은 아래처럼 '중괄호'를 통해 빠르고 간편하게 std::vector를 초기화 할 수 있게 되었습니다. std::vector vec = {1, 2, 3}; 주의할 점은 생성자들 중에 ..

[C++] 가변 길이 템플릿과 후행 리턴 타입
CPP2023. 8. 20. 18:38[C++] 가변 길이 템플릿과 후행 리턴 타입

arr = [1, 3.14, 0x16] 위의 파이썬 코드는 아무 문제 없시 사용이 가능합니다 하지만 이를 C++에서 구현을 하려면 어떻게 해야할까요? 이를 C++에서 구현하기 위해서는 '가변 길이 템플릿', '후행 리턴 타입', 'common_type'에 대한 개념이 필요합니다 먼저 가변 길이 템플릿부터 알아보도록 하겠습니다. 가변 길이 템플릿 이란 의 두번째 템플릿 매개변수 typename뒤에오는 '...' 를 의미합니다. 이를 템플릿 파라미터 팩이라고 부릅니다. print(1, 3.14, 0x16) 파이썬에서 print함수는 처럼 막 바로 출력이 가능합니다. 이를 C++로 구현을 하면은 template void Print(T arg) { std::cout

image