전체 글82 게임 개발에서 i++이 아니라 ++i를 사용하는 이유 게임 개발에서 i++이 아니라 ++i를 사용하는 이유 게임 개발을 하다 보면 반복문을 돌 때 i++이 아닌 ++i로 작성한 코드를 많이 보게 될 것이다. 그 이유는 아래와 같다. 즉 i++은 깊은 복사, ++i는 레퍼런스 반환. i++일 때는 복사 비용이 증가하기 때문에 해당 이터레이터의 규모가 클수록 성능 저하를 일으킬 수 있다. 실제 코드로 살펴보자. 기본 자료형의 연산자 오버로딩은 코드를 볼수가 없어서 stl vector 연산자 오버로딩 코드를 가져왔다. _Inc() 함수는 increase라서 값 더해주는 함수라고 생각해두고, 코드만 보면 전위는 레퍼런스 연산자로 그대로 객체에 값을 더해주고, 후위는 임시 객체를 만들어서 주는걸 볼 수 있다!! 사실 int와 같은 기본 자료형은 ++i를 안써도 최적.. 2023. 11. 2. [DX11] 원뿔 도형 만들기 (Cone Mesh) [DX11] 원뿔 도형 만들기 (Cone Mesh) 스포트라이트를 구현하기 위해 필요한 원뿔 메쉬를 만들어보자. 원뿔 도형은 한 점(0,0,0)에서 같은 길이의 직선으로 원을 그린 모양이다. 높이가 1이고 반지름이 0.5로 설정했다. 원뿔 도형이 실제 빛의 방향과 같게 해주어 계산을 편리하게 하고자 했다. 꼭짓점 (0,0,0) 생성. vecVtx(0)이다. 옆면을 그린다. 꼭짓점과 아래 두점을 연결한 삼각형들 입력한 정보로 새로운 메쉬 생성 (ConeMesh) 최종 결과 코드 // Cone Mesh fRadius = 0.5f; float fHeight = 1.0f; // Top v.vPos = Vec3(0.f, 0.f, 0.f); v.vUV = Vec2(0.5f, 0.f); v.vColor = Vec4(.. 2023. 5. 22. [DX11] 반사광 방향 벡터 유도하기 [DX11] 반사광 방향 벡터 유도하기 목표 : 광원 방향 벡터와 도형의 정점 normal 벡터만 가지고 반사 벡터를 알아내라. 주어진 상황을 그림으로 정리하면 다음과 같다. 추가적으로 vLight와 vNormal은 방향 단위 벡터로 크기는 1이다. 학창시절에 배운 과학기억을 되살펴보면 빛의 입사각과 반사각은 동일하다는 사실이 생각날것이다. 또한 벡터의 덧셈을 상기해본다면 다음과 같은 두벡터의 합이 우리가 원하는 벡터R이라는 사실도 알게될 것이다. 1. vA를 구해보자. | vA |는 수식을 통해 |vLight|*cosθ 이다. vLight 크기는 1이므로 |vA| = cosθ cosθ 는 내적을 통해서 구할 수 있다. 다만 내적을 할때 주의할 점이 있다. 우리가 원하는 cosθ는 오른쪽 이미지의 각도이.. 2023. 5. 15. [c++기초] #include <iostream> 헤더파일을 알고 싶었다. #은 전처리기다. 전처리기는 컴파일을 시작하면 우선적으로 처리한다. 씹어먹는 C++ - 공부 링크 참조 : https://modoocode.com/319 씹어먹는 C++ - modoocode.com 컴파일이란 우리가 비주얼 스튜디오나 어디선든지 소스코드를 작성하면, 그것이 실행 파일로 변환되기 위해서 필요한 과정들. 1. #이 붙은 전처리기 매크로 처리 (전처리 PreProcessing) 2. 작성한 소스 파일들을 어셈블리 명령어로 변환하는 컴파일 단계 (compile) 3. 어셈블리 코드들을 실제 기계어로 이루어진 목적 코드로 변환하는 어셈블 단계 (Assemble) 4. 각각의 목적 코드들을 모아 하나의 실행파일로 만들어주는 링킹 단계 (Linking) C는 .h를 붙여서 헤더 파일 확장자가 있다. .. 2023. 5. 9. 이전 1 2 3 4 ··· 21 다음