이번 글은 DirectX11의 멀티 샘플링에 대한 글입니다. 에일리어싱이란? 아래의 사진은 그냥 그림판에다가 선을 하나 그린 모습입니다. 이를 확대해서 보면은 아래처럼 이렇게 자글자글하게 보이는 것을 확인할 수 있습니다. 이러한 현상을 '에일리어싱(Aliasing)'또는 '계단 현상'이라고합니다. 에일리어싱을 완화하는 기능을 '안티 에일리어싱'이라고 하며 언리얼에서는 당연히 '안티 에일리어싱'기능을 제공합니다. 자세한 글은 https://docs.unrealengine.com/5.2/ko/anti-aliasing-and-upscaling-in-unreal-engine/ 안티 에일리어싱 및 업스케일링 언리얼 엔진에서 사용 가능한 안티 에일리어싱 옵션을 살펴봅니다. docs.unrealengine.com 위..
이번 글은 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}; 주의할 점은 생성자들 중에 ..
arr = [1, 3.14, 0x16] 위의 파이썬 코드는 아무 문제 없시 사용이 가능합니다 하지만 이를 C++에서 구현을 하려면 어떻게 해야할까요? 이를 C++에서 구현하기 위해서는 '가변 길이 템플릿', '후행 리턴 타입', 'common_type'에 대한 개념이 필요합니다 먼저 가변 길이 템플릿부터 알아보도록 하겠습니다. 가변 길이 템플릿 이란 의 두번째 템플릿 매개변수 typename뒤에오는 '...' 를 의미합니다. 이를 템플릿 파라미터 팩이라고 부릅니다. print(1, 3.14, 0x16) 파이썬에서 print함수는 처럼 막 바로 출력이 가능합니다. 이를 C++로 구현을 하면은 template void Print(T arg) { std::cout
https://www.boost.org/ Boost C++ Libraries Welcome to Boost.org! Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications www.boost.org 위의 링크에 접속하여 Download에 들어가 줍니다. 요기서 자신의 OS에 맞는 파일을 다운로드 해주시면 됩니다. 저는 다운한다음에 D드라이브의 Bo..
이번글은 C++11의 constexpr키워드에 대한 글입니다! constexpr과 상수 constexpr 키워드는 어떤 객체나 함수 앞에 붙일 수 있는 키워드로, 어떤 객체나 함수의 리턴 값을 컴파일 타임에 값을 알 수 있다 라는 의미를 전달합니다. 컴파일러가 컴파일 타임에 어떤 식(표현식)을 결정할 수 있다면 해당 식을 '상수식(constant expression)'이라고 합니다. 여기서 상수는 무엇일까요? 상수는 '변하지 않는 값'입니다. 그래서 선언과 동시에 정의(초기화)해야합니다. 이런 특징을 가지는 상수에는 두 종류가 있습니다. 바로 '컴파일 시간 상수(compile-time constant)', '런타임 상수(runtine constant)'입니다. 런타임 상수의 예부터 보면은 int a; s..
이번글은 페이징에 대한 글입니다. 이전에 https://cjbworld.tistory.com/36 스와핑에 대해서 설명하던 도중 '외부 단편화'를 해결하는 방법으로 잠깐 소개했었는데요, 이번글은 외부 단편화를 해결하기도 하고 메모리 보다 큰 프로세스를 '적재' 할 때에도 사용되는 '가상 메모리'에 대한 정리글입니다! 가상 메모리란? 가상 메모리는 실행하고자 하는 프로세스의 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 도 큰 프로세스를 실행할 수 있게하는 기술 입니다. 이런 가상 메모리를 관리하는 기법 중에는 크게 '페이징'과 '세그멘테이션'이 있지만 페이징에 대해 알아보도록 하겠습니다. 아무튼 가상 메모리를 관리하는 기법인 '페이징'을 사용하는 외부 단편화 문제와 물리 메모리의 크기보다 더 큰 프..
이전에 힙을 구현한적이 있는데 다시 정리해서 구현한 글입니다. 힙? 힙이란? '이진트리'이면서 '완전 이진트리'입니다. 힙은 max heap, min heap으로 나뉩니다. 중요한 점은 heap은 '완전 이진트리'라는 점입니다. 이진트리는 자식의 최대 개수가 두개인 트리의 형태를 의미합니다. 완전 이진트리는 마지막 레벨을 제외하고 모든 레벨이 완전히 채워져 있는 이진트리입니다. 트리에 대한 개념은 https://code-lab1.tistory.com/8
이번글은 Minimum cost Spanning Tree 줄여서 MST인 '최소 비용 신장 트리'에 대한 글입니다. 먼저 MST가 무엇인지 알아보기 전에 '경로(Path)'가 무엇인지 알아보도록 하겠습니다. 경로(path) ''경로(path)'란? 특정 그래프에서 정점과 정점을 잇는 간선을 순서대로 나열한 것을 의미합니다. 그리고 동일한 간선(edge)를 중복하여 포함하지 않는 경로를 '단순 경로(simple path)'라고합니다. 이런 그래프가 있을 때 정점 A에서 C까지 이르는 경로는 A-B-C. A-D-C, A-B-D-C, A-D-B-C 정도가 있겠군요. 단순경로가 아닌 경우에는 이를테면 A-D-B-A-B-C 같은 경우가 있습니다. 최소 비용 신장 트리 A-B-D-A의 경우에는 단순경로입니다. 위에..