본문 바로가기

분류 전체보기75

6. 삼각형 회전 시키기 GLM을 사용해서 삼각형을 회전시키는 것은 매우 간단하다. 회전 행렬에 원하는 각도만큼 넣기만 하면 끝이다. (물론 진짜 행렬 연산을 구현했다면 코드가 2배는 길어졌을 것이다.) 1 호도(Radian) 값 설정 회전을 한다는 것은 각도를 변경한다는 의미가 된다. 컴퓨터는 호도(Radian)으로 빠르게 연산하기 때문에 미리 1 호도값을 설정해서 사용하면 편리하다. ▼ 호도는 상수로 설정 해준다. const GLint WIDTH = 720, HEIGHT = 480; //--------------------------------------------- // 1 호도값 const float toRadians = 3.14159265f / 180.0f; //--------------------------------.. 2021. 1. 25.
22. 참조(&)와 포인터(*) 차이 참조(&)는 CPP에서 추가된 새로운 기능이다. 이전에 13. 포인터(Pointer) 에서 등장했었기 때문에 이번에는 둘의 차이점만 간단하게 정리한다. ▼ 참조(&)는 선언과 동시에 초기화가 되어야 한다. int main() { int base = 5; int *pointer; pointer = &base; // OK int &reference; reference = &base; // ERROR return (0); } 코드에서 보는 것처럼 참조(&)를 포인터(*)처럼 선언 후 따로 초기화하려고 하면 에러가 발생한다. int *reference = base; 와 같이 선언과 동시에 초기화를 진행해줘야 한다. 불편해 보일 수도 있지만 이러한 규칙 때문에 참조(&)는 무조건 초기화가 되기 때문에 매번 nul.. 2021. 1. 25.
21. 인라인 지정자(Inline) 인라인(inline) 지정자는 CPP에서 추가된 새로운 기능이다. 보통 함수와 같이 사용되고 둘을 묶어서 인라인 함수라고 부른다. 컴파일러에게 코드를 풀어서 작성하라고 지시하는 기능을 하는데 C의 매크로와 동일한 역활을 한다. 작성법이 기존 함수와 같은 것도 있고 무엇보다도 컴파일할 때 디버깅이 편리해졌다. ▼ 인라인 함수 예시 #include // INLINE FUNCTION inline int Compare(int lhs, int rhs) { return (lhs - rhs); } int main() { int A = 10; int B = 5; // CODE if (Compare(A, B) > 0) printf("A is Bigger then B\n"); // COMPILER int lhs = 10;.. 2021. 1. 25.
20. 헤더 재정의 방지(Include Guard) CPP에서 전처리기를 사용하여 헤더 재정의 방지한다. #ifndef, #define, #endif C와 CPP 표준에서 사용하는 헤더 재정의 방지 방법이다. 다르게 말하면 유닉스, 리눅스, FreeBSD, 윈도우, 맥OS 등 모든 운영체제에서 다 작동한다. 그래서 거의 대부분의 C++ 오픈소스 프로젝트들은 이 방법을 사용하고 있다. 가장 널리 사용되고 권장되는 방법이다. ▼ C/CPP 표준 #ifndef _POINT2D_H_ #define _POINT2D_H_ class Point2D { public: Point2D(); ~Point2D(); }; #endif 전처리기 명령어(ifndef) 이름대로 _POINT2D_H_ 가 재정의 되어 있지 않다면 재정의한다. #pragma once 마이크로소프트社의 비.. 2021. 1. 25.