일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Cartoon Rendering
- Cell Look
- 가상 바이트
- Private Bytes
- 3d
- AppSW
- VR
- Virtual Byte
- Three(Two) Tone Shading
- OculusMotionVectorPass
- 벡터
- Toon Shader
- working set
- Specular
- 게임 수학
- 개인 바이트
- ASW(Application SpaceWarp)
- 메모리 누수
- ColorGradingLutPass
- Windows Build
- Cell Shader
- URP
- 프로그래밍 기초
- URP로 변경
- 작업 집합
- C언어
- Rim Light
- Today
- Total
목록게임 프로그래밍(학습 내용 정리)/Modern C++ (6)
WinCNT
배열 포인트의 선언 int _tmp[10]; int(&_refTem)[10] = _tmp; 응용하면 _countof 혹은 ARRAYSIZE와 같은 같은 외계인 코드도 쓸 수 있다... https://stackoverflow.com/questions/4064134/arraysize-c-macro-how-does-it-work ARRAYSIZE C++ macro: how does it work? OK, I'm not entirely a newbie, but I cannot say I understand the following macro. The most confusing part is the division with value cast to size_t: what on earth does that acco..
unique_ptr 배타적 소유권 개념이 있는 스마트 소유권 하나의 스마트 포인터만이 특정 객체를 소유할 수 있도록, 객체에 소유권을 도입한 스마트 포인터 일반 포인터와는 달리 사용이 끝난 후에 delete 키워드를 사용하여 메모리를 해제할 필요가 없다 소유권 이전 unique_ptr 인스턴스는 move() 멤버 함수를 통해 소유권을 이전할 수는 있지만, 복사는 할 수 없다 소유권이 이전되면, 이전 u 인스턴스는 더 이상 해당 객체를 소유하지 않게 재설정된다 즉, unique_ptr에서는 =(연산자)로 값 카피가 일어나지 않는다, 이동은 가능하다(소유권 이전) B = A 불가능 B = move(A) 가능 /// /// unique_ptr 구현 예상 /// 복사 생성자를 삭제해서 값 복사가 일어나지 않도록..
메모리를 동적 할당할 경우는 반드시 delete를 해줘야 한다 문제는 Block 안(특히 함수 등)에서 메모리를 동적 할당할 경우이다 블록을 벗어나면 포인터 변수에는 접근할 수 없으니 해제가 불가능해진다 심지어 new-delete를 제대로 해줬다고 해도 다음과 같이 throw가 있으면 문제가 발생할 수 있다 void foo() { double* pDouble { new double }; *pDouble = 3.14; throw...; // delete pDouble; } malloc과 new의 차이 malloc - free의 경우 free할 때 소멸자가 호출되지 않는다 new - delete의 경우 delete할 때 자동으로 소멸자가 호출된다 즉, 객체(클래스) 생성에는 반드시 new - delete를 ..
lvalue(L-Value) - 변수 prvalue(Pure R-Value) - 순수(pure) rvalue xvalue(eXpiring value) - 소멸하는 값 glvalue = lvalue + xvalue 주소가 있는 것, 정체가 있는 것, 보관하고 있는 것 참조하기 위해서는 lvalue 참조자 & rvalue = prvalue + xvalue 이동시킬 수가 있으면 rvalue 참조하기 위해서는 rvalue 참조자 && move 함수(move semantics) 우측값 레퍼런스를 통해서, 기존에는 불가능하였던 우측값에 대한 (복사가 아닌) 이동의 구현이 가능해졌다. 좌측값도 이동을 시키고 싶다면 어떨까? C++ 11 부터 라이브러리에서, 좌측값을 우측값으로 바꾸어주는 move 함수를 제공 std:..
범위 기반 for문 범위 기반 for문은 일반적인 for문 보다 생산성을 높일 수 있는 문법이다 다음과 같은 일반적인 for문이 있다고 하자 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; // 일반 for문 for (size_t i = 0; i < 10; i++) { cout
auto 키워드는 어떻게 생겨났을까? C언어는 운영 체제(유닉스)를 만들기 위해 만든 언어 자료형도 운영 체제 제작 시, 프로그래머의 실수를 알 수 있도록 만들어 진 것 자료형으로 데이터들을 구분하면, 컴파일 에러 등으로 버그를 미리 파악할 수 있게 되고 결과적으로 런타임 에러를 줄일 수 있게 된 것이다 그러므로 프로그래밍할 때의 원칙은 자료형을 명확하게 하는 것이라 할 수 있다 반대로, 타입을 맞출 필요가 없는 경우에는 auto를 사용하여 생산성을 높일 수 있다 함수의 리턴 값을 auto로 받거나(C++ 18부터는 리턴에 auto 사용이 가능해짐), 긴 자료형을 축약하거나(std 사용 시 편리함) 등등 auto 키워드의 사용 예 std 사용 시 auto를 사용하면 편리하다(특히 iterator와 같은 ..