VanQussong
'DirectX11' 카테고리의 글 목록 (2 Page)

DirectX11

DirectX11/AR

AR50_ClassNote_1

24/03/20 1교시 주제 : 구조화 버퍼 개선 작업 내용 : 시스템 메모리와 GPU 버퍼간의 데이터를 양방향으로 이동 가능하게 구현 CStructuredBuffer::Create() : 구조화 버퍼를 생성해주는 함수인 Create() 함수는 아래와 같이 선언되어 있다. int Create(UINT _ElementSize, UINT _ElementCount, SB_TYPE _Type, bool _bSysMemMove, void* _InitialData = nullptr); 입력받는 인자중 "_bSysMemMove" 의 값에 따라 추가로 생성되는 버퍼가 생긴다. 참고로 해당 값이 true 이면 시스템 메모리와 GPU 버퍼간에 데이터 이동이 있음을 의미하고 false는 데이터 이동이 발생하지 않음을 의미한..

DirectX11/Rookiss

콜백 함수

특징 : 콜백 함수는 전달인자로 다른 함수에 전달되는 함수를 뜻한다. 함수의 동작을 완료하기 위해 외부 함수 내부에서 호출된다. 콜백함수는 함수 포인터 또는 람다 함수 등을 이용해 외부 함수에 전달된다. 예시 : #include class Item { public: int itemId = 0; int rarity = 0; int ownerId = 0; }; class FindByOwnerId { public: bool operator()(const Item* item) { return (item->ownerId == ownerId); } public: int ownerId; }; class FindByRarity { public: bool operator()(const Item* item) { retur..

DirectX11/Rookiss

함수 객체 (Function Object)

객체가 함수처럼 동작한다고 하여 함수 객체라고 한다. 함수 호출 연산자 : () 연산자는 "함수 호출 연산자" 라고 불린다. 해당 연산자를 overloading 하여 함수 객체를 구현할 수 있다. 예제 : class Functor { public: void operator()() { std::cout

DirectX11/Rookiss

함수 포인터

미리보기 : // Function Pointer /////////////////////////////// case1 typedef void (HELLO)(void);// 시그니처 : void (void) HELLO* fn = &PrintHello; (*fn)(); /////////////////////////////// case2 typedef void(*PHELLO)(void); PHELLO pfn = &PrintHello; (*pfn)(); /////////////////////////////// case3 void (*HELLO2)(void); HELLO2 = &PrintHello; HELLO2(); /////////////////////////////// case4 using HELLO3 = vo..

DirectX11/Rookiss

비트 연산

언제 사용? : 비트 단위의 조작이 필요한 경우 비트 플래그 (Bit Flag) 1Byte는 8bit로 이루어져 있고, 바이트의 개별 비트를 "비트 플래그"라고 한다. 주의 사항 : 시프트 연산시 비트들이 왼쪽, 오른쪽으로 밀려나는데... right shift 연산시 원본값의 부호에 따라서 새롭게 왼쪽에서 생성되는 비트의 값이 달라진다... 때문에 정신건강을 위해서 비트연산시 사용하는 값을 unsigned 로 선언하여 "양(+)" 의 부호를 가지도록 설정하고 사용하자 비트 연산의 종류 : 1. bitwise not (~) 일반적인 "not (!)" 연산자와는 다르다. 단일 숫자의 모든 비트를 대상으로 0->1 , 1->0 으로 뒤바꾸는 연산을 진행한다. 101010 -> 010101 2. bitwise ..