C++

[DirectX12] #Part 2 - Direct 3D 기초 "DirectX12를 이용한 3D 게임 프로그래밍 입문" 서적의 Part 2, "Direct3D의 기초"에 해당하는 내용입니다. 현재, 게임 개발에 입문하여 기초지식을 습득하여 기록하기 위함이며, 개념 이해와 예제코드 작성을 진행. ID3D12Device::CheckFeatureSupport 메서드 HRESULT ID3D12Device::CheckFeatureSupport ( D3D12_FEATURE Feature; void *pFeatureSupportData; UINT FeatureSupportDataSize ); 1. Feature: CheckFeatureSupport를 통해 지원 여부를 점검할 기능들의 종류 (a) D3D12_FEATU..
[DirectX12] #Part 2 - Direct 3D 기초 "DirectX12를 이용한 3D 게임 프로그래밍 입문" 서적의 Part 2, "Direct3D의 기초"에 해당하는 내용입니다. 현재, 게임 개발에 입문하여 기초지식을 습득하여 기록하기 위함이며, 개념 이해와 예제코드 작성을 진행. DXGI? DirectX Graphics Infrastructure는 여러 그래픽 API들에 공통인 그래픽 관련 작업들이 존재하는 API입니다. 예를 들면, 화면 모드 전환, 디스플레이 어댑터나 모니터, 지원되는 디스플레이 모드 같은 그래픽 시스템 정보의 열거 등의 기능은 DXGI가 제공합니다. DXGI의 핵심 인터페이스 중 하나로 IDXGIFactory 인터페이스가 있습니다. 이 인터페이스는 IDXGISwapCh..
[Effective C++] #28_예외 안전성 확보 Scott Meyers의 "Effective C++" 를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 5장 '구현', 항목 29 "예외 안전성이 확보되는 그날 위해 싸우자" 에 해당하는 내용입니다. 예외 안전성 보장에 실패한 예제 class PrettyMenu { public: ... void changeBackground(std::istream& imgSrc); ... private: Mutex mutex; image *bgImage; int imageChanges; }; //changeBackground 함수 내부 정의 void PrettyMenu::changeBackground(std::istream& img..
[Effective C++] #27_캐스팅은 절약하고 또 절약하자! Scott Meyers의 "Effective C++" 를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 5장 '구현', 항목 28 "내부에서 사용하는 객체에 대한 핸들을 반환하는 코드는 되도록 피하자" 에 해당하는 내용입니다. 멤버의 참조자를 반환하는 멤버 함수들의 최대 접근도 class Point { public: Point(int x, int y); ... void setX(int newVal); void setY(int newVal); ... }; struct RecData { Point ulhc; // upper left-hand corner Point lrhc; // lower right-ha..
[DirectX12] #Part 2 - Direct 3D 기초 "DirectX12를 이용한 3D 게임 프로그래밍 입문" 서적의 Part 2, "Direct3D의 기초"에 해당하는 내용입니다. 현재, 게임 개발에 입문하여 기초지식을 습득하여 기록하기 위함이며, 개념 이해와 예제코드 작성을 진행. 엘리어싱 효과 모니터의 해상도를 결정하는 픽셀들은 무한히 작지 않습니다, 따라서 모니터 화면에 임의의 선을 끊김 혹은 계단 현상없이 출력하는 것은 불가능합니다. 선을 픽셀 배열들로 근사하다 보면 생기는 현상이죠. 위 그림과 같이 삼각형 변에서도 이와 비슷한 엘리어싱 효과가 나타납니다. 1. 초과표본화(Supersampling) 단순히, 모니터의 해상도를 키워, 픽셀의 크기를 줄이면 해결할 수 있는 문제입니다. 하지..
[DirectX12] #Part 2 - Direct 3D 기초 "DirectX12를 이용한 3D 게임 프로그래밍 입문" 서적의 Part 2, "Direct3D의 기초"에 해당하는 내용입니다. 현재, 게임 개발에 입문하여 기초지식을 습득하여 기록하기 위함이며, 개념 이해와 예제코드 작성을 진행. "자원"과 자원을 참조하는 "서술자" 렌더링 과정에서 GPU는 자원들에 자료를 기록하거나, 자원들로부터 자료를 읽어 들인다. 그리기 명령을 제출하기 전에, 먼저 해당 그리기 호출이 참조할 자원들을 렌더링 파이프라인에 묶어야 합니다. 이를 Binding이라고 표현합니다. 하지만, 자원들이 렌더링 파이프라인에 직접 묶이지 않고, 해당 자원을 참조하는 서술자 객체가 바인딩 됩니다. 서술자 객체는 GPU에게 자신이 참조하..
[Effective C++] #27_캐스팅은 절약하고 또 절약하자! Scott Meyers의 "Effective C++" 를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 5장 '구현', 항목 27 "캐스팅은 절약, 또 절약! 잊지 말자"에 해당하는 내용입니다. Casting? 우리 말로 "형변환"으로 잘알려진 Casting은, 자료형간의 형변환 혹은 포인터 간의 형변환을 위해 사용됩니다. C언어의 Cast (T) A// A를 Typename으로 캐스트 합니다. T (A)// 함수 방식의 캐스트 class A { public: explicit A (int size); ... }; void doSoemthing(const A& a); doSomething(A(15));/..
[Effective C++] #26_변수 정의 Scott Meyers의 "Effective C++" 를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 항목은 5장 '구현', 항목 26 "변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘"에 해당하는 내용입니다. 변수 정의 변수를 정의하면 항상 부담해야 하는 비용이 두 가지가 있습니다. 하나는 프로그램 제어 흐름이 변수의 정의에 닿을 때 생성자가 호출되는 비용, 또 하나는 변수가 유효범위를 벗어날 때 소멸자가 호출되는 비용입니다. 변수를 일찍 정의 했을 때 std::string encryptPassword(const std::string& password){ using namespace std; string encryptedPas..
[Effective C++] #25_예외를 던지지 않는 swap Scott Meyers의 "Effective C++" 를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 항목은 4장 '설계 및 선언', 항목 25 "예외를 던지지 않는 swap에 대한 지원"에 해당하는 내용입니다. Concept namespace std { template void swap (T& a, T& b){ T temp(a); a = b; b = temp; } } CS 전공자라면, 한번쯤 해봤을 "swap"에 대한 구현입니다. 25번 항목은 C++의 STL에 포함된 swap의 효율적인 구현을 목표로 합니다. 먼저, swap은 말 그대로 "값의 맞바꾸기" 입니다. 코드를 통해 swap 알고리즘을 살펴보겠습니다. ..
Hardii2
'C++' 태그의 글 목록 (39 Page)