C 또는 C++ 언어에서, 구조체 또는 배열을 초기화할 때 memset 함수를 사용하는 것을 종종 볼 수 있습니다. #ifdef CPP // C++에서는 cstring 헤더를 사용합니다(string.h 를 사용해도 됩니다) #include #elif #include #endif int main() { int array[100]; memset(array, 0, sizeof(array)); ... ] 이 때 사용하는 memset 함수의 시그니처는 다음과 같습니다 : void* memset(void* ptr, int value, size_t num); 주의사항 일반적으로 0으로 초기화하고자할 때 memset은 유용한 선택이 될 수 있지만, 그 외의 경우 얘기가 다릅니다. memset 함수는 cpluscplus..
저번 포스팅에서 간략하게 DXGI가 무엇인지, 무슨 역할을 수행하는지에 대해서 간략히 배웠습니다. 이와 관련하여 추가로 찾아보신 분들은 DXGI 개념을 이해하는 것이 어렵지 않을 것입니다. 하지만, 개념을 안다고 DXGI를 안다고 할 수는 없습니다. DXGI 개요를 바탕으로 DXGI API를 자유자재로 사용할 수 있어야 하기 때문입니다. 이번 포스팅에서는 DXGI와 관련된 각종 구성요소(함수, 구조체/인터페이스 등...)들을 살펴보면서 DXGI을 살펴보도록 하겠습니다. IDXGIFactory IDXGIFactory는 IDXGIObject를 상속받은 인터페이스(구조체로 선언됨)로 DXGI 객체들을 생성하는 메소드를 구현하며 다음과 같은 기능을 수행할 수 있습니다 : 소프트웨어 어댑터 생성(IDXGIFact..
Direct3D를 학습하다 보면, Direct3D를 초기화하는 부분에서 부가 API들이 출몰하기 시작합니다. 그 중 DXGI를 이해하는 데 어려움을 겪고 있었기 때문에 정리하게 되었습니다. DXGI(DirectX Graphics Infrastructure) 는 Microsoft 문서에서 다음과 같이 설명하고 있습니다 : DXGI (Microsoft DirectX Graphics Infrastructure)는 그래픽 어댑터 열거, 디스플레이 모드 열거, 버퍼 형식 선택, 프로세스 간(예 : 응용 프로그램과 데스크탑 창 관리자(DWM) 간) 자원 공유, 렌더링된 프레임을 디스플레이하기 위한 창 또는 모니터에 표시하는 작업을 처리합니다. DXGI는 Direct3D 10, 11, 그리고 12에서 사용됩니다. 대..
이번 포스팅에서는 C++ 언어 기반의 YSE 사운드 라이브러리에 대해 알아보겠습니다. 일반적으로 C++에서 널리 알려진 라이브러리 중 하나는 fmod 라이브러리이며, YSE 라이브러리는 아마 들었을 때 생소한 라이브러리이라 생각합니다. 저 역시 최근에 우연한 기회를 통해서 YSE 라이브러리의 존재에 대해서 알게 되었습니다. 관련 자료를 찾던 중, 국내에 기초적인 레퍼런스마저 존재하지 않는 것으로 꽤나 애먹었었는데, 혹시 YSE 라이브러리에 대한 사용을 고민 중인 분들에게 도움이 되고자 포스팅하게되었습니다. YSE 라이브러리란? YSE 라이브러리는 C++ 기반의 오디오 라이브러리(audio library)입니다. YSE 홈페이지에서는 다음과 같이 설명하고 있습니다 : YSE는 C++ 오디오 라이브러리입니다..
DirectX12 외에도 일반적인 선형 대수 및 DirectX 응용 프로그램에 공통적인 그래픽 수한 연산을 위한 SIMD(single instruction multiple data) 친화적인 C++ 형식(type) 및 함수를 제공합니다. 이 라이브러리는 Windows 32-bit(x86), Windows 64-bit(x64), Windows RT 플랫폼에서 SSE2 및 ARM-NEON 인트린직(instrinsic) 지원을 Visual Studio 컴파일러를 통해서 최적화된 버전으로 지원합니다. 이번 포스팅에서는 그 중에서 벡터의 표현을 나타내는 데 사용할 수 있는 XMFLOAT 및 XMVECTOR의 차이에 대해서 알아보겠습니다. XMVECTOR XMVECTOR 타입은 DirectXMath에서 사용되는 핵..
두 함수 모두 눈에 보여지는 결과로써는 두 함수 모두 현재 윈도우를 종료하는 것처럼 보이기 때문에 차이가 없을 수 있다고 생각할 수 있지만, 두 함수는 로직 상의 차이로 인해 적절한 상황에 맞게 구분되어 사용되어야 합니다. PostQuitMessage 함수 시그니처 : void PostQuitMessage(int nExitCode); PostQuitMessage 함수는 메시지 큐에 WM_QUIT을 포스트하는 함수입니다. 메시지 큐에서 해당 메시지(WM_QUIT)를 읽으면, 메시지 루프의 조건식이 거짓으로 반환되면서 루프를 탈출하게 됩니다. 하지만, 종료를 위한 어떠한 처리를 하지 않고 단순히 메시지 루프만을 탈출하기 때문에 프로세스가 가지고 있는 각종 핸들을 놓아주거나(release), 파괴하는 등의 처..
펜윅 트리는 효과적으로 요소를 업데이트하고 수 배열의 구간합을 계산할 수 있는 자료구조입니다. 위키피디아에서는 다음과 같이 정의하고 있습니다 : 펜윅 트리 또는 바이너리 인덱스드 트리 는 효과적으로 요소를 업데이트하고 수 배열의 구간합을 계산할 수 있는 자료구조입니다. 1989년 Boris Ryabko에 의해 처음 제안되었으며 1992년 추가로 수정되었습니다. 펜윅 트리는 Peter Fenwick에서 이름이 유래하였습니다. 일반 배열과 비교했을 때 구간 합에 대해 배열은 선형 시간이 필요하며, 이는 배열 요소를 업데이트하는 데에도 똑같이 적용됩니다. 펜윅 트리는 두 가지 작업 모두에 대해 O(log n) 시간에 수행할 수 있습니다. 이러한 자료구조 필요한 이유는 다음 상황들에 대해 효율적으로 처리할 수 ..
이번 포스팅에서는 행렬의 곱셈의 구현과 최적화 방법에 대해서만 집중적으로 분석합니다. 행렬에 관한 내용은 행렬 대수 포스팅을 읽어보시거나 다른 레퍼런스를 확인하시면 되겠습니다. 행렬의 곱셈은 왼쪽 행렬의 i번째 행, j번째 열에 있는 요소에 대해 왼쪽 피연산자 행렬의 i번째 행과 오른쪽 피연산자 행렬의 j번째 열을 내적한 값을 산출한다고 행렬 대수에서 언급했습니다. 그림으로 나타내면 다음과 같습니다. 이것을 구현하는 것은 어려운 일이 아닙니다. 빠르게 작성된 행렬 곱셈 연산의 구현은 다음과 같습니다 : #include using namespace std; /* 빠르게 작성된 2x2 행렬을 곱하는 코드 */ int main() { int a[2][2] = { 1,2,3,4 }; int b[2][2] = {..
- Total
- Today
- Yesterday
- Perforce Streams
- C++ Compile error
- P4 Streams
- DXGI
- code copyright
- C++
- 행렬
- UE4
- c++ 핫 리로드
- c++ hot reload
- P4 Stream
- Visual Studio C1083
- 퍼포스 개요
- Perforce Stream
- 언리얼 엔진
- 코드 저작권
- C# 익명함수
- C# 람다식
- C# lambda expression
- Auto
- MSVC C1083
- visual studio 핫 리로드
- GoogleTest
- 알고리즘
- game hot reload
- visual studio hot reload
- 구간합
- 퍼포스 스트림
- 구글테스트
- C7568
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |