본문 바로가기

전체 글

(60)
WireFrame Rendering 정사각형 메시는 두개의 삼각형 메시의 정보로 이루어졌다.메시의 인덱스 버퍼와 버텍스 버퍼를 활용하여 와이어프레임 방식으로 정사각형을 그려보자. // 아핀 변환 행렬 ( 크기 ) Vector3 sBasis1(currentScale, 0.f, 0.f);Vector3 sBasis2(0.f, currentScale, 0.f);Vector3 sBasis3 = Vector3::UnitZ;Matrix3x3 sMatrix(sBasis1, sBasis2, sBasis3);// 아핀 변환 행렬 ( 회전 ) float sin = 0.f, cos = 0.f;Math::GetSinCos(sin, cos, currentDegree);Vector3 rBasis1(cos, sin, 0.f);Vector3 rBasis2(-sin, c..
삼각형 우리는 세 점을 잇는 선분을 그림으로서 삼각형을 구할 수 있다.직선, 반직선, 선분 등은 이전에 공부했었던 아핀 결합식에 스칼라 값의 범위에 따라 한 종류의 선을 만들 수 있었다. 지난, 아핀 결합식을 되뇌이면 다음과 같다.P = s * P1 + t * P2 + ( 1 - s - t) * P3 선형 독립 공간에서 두 개의 벡터 v , w가 존재한다면, 2차원 벡터 공간 내에서 모든 벡터를 구현할 수 있었다.이와 같이, 만약 3개의 벡터  v , w , z 가 선형 독립 공간으로 존재하면서 s , t  값을 [0, 1]로 제한하게 된다면 삼각형을 그릴 수 있게 되어진다.  이렇게 아핀 결합에서 모든 스칼라 값을 [0 , 1] 로 제한하게 된다면 한정한 결합을 컨벡스 결합이라고 한다.컨벡스 영역이란 두 점을..
다형성 객체 포인터 변수객체 포인터 변수는 객체의 주소 값을 저장하는 포인터 변수이다. Human이라는 클래스가 정의되었을 때, 다음과 같이 포인터 변수를 선언할 수 있다. Human *ptr; // 포인터 변수 선언ptr = new Human(); // 포인터 변수의 객체 참조 Human 형의 포인터 변수는 Human 객체 뿐만 아니라, Human을 상속하는 유도 클래스의 객체도 가리킬 수 있다.이를 심도있게 활용하여, '함수 오버라이딩(function overriding)' 의 특징이 가능해진다. 함수 오버라이딩함수가 오버라이딩이 된다면, 오버라이딩된 기초 클래스는, 유도 클래스의 함수에 의해 가려지게 된다. 그렇다면 , 오버 로딩vs 오버라이딩의 차이를 한번 살펴보자.오버로딩은 함수의 이름은 같지만 매개변..
C++ Static C++ static은 C의 static과 동일하다. C 언어에서의 static 함수의 개념을 정리하면 다음과 같다.- 전역 변수에서 선언된 static의 의미: 선언된 파일 내에서만 참조를 허용하겠다는 의미- 함수 내에서 선언된 static의 의미: 한번만 초기화 되고, 지역변수와 달리 함수를 빠져나가도 소멸되지 않는다. #include using namespace std;void Counter(){ static int cnt; cnt++; cout
참조자 참조자 (Reference)의 이해 참조자는 자신이 참조하는 변수를 대신하는 다른 별명이라고 생각하면 된다.예로, int * ptr = &num1;          int &num2 = ptr; 이 되었을 때, num2는 num1의 참조자가 되어지며, *ptr = *num2= num1에 변수에 접근할 수 있다는 것이다. 참조자의 특징으로는" 참조자는 수의 제한에 없으며, 참조자를 대상으로도 참조자를 선언할 수 있다"." 참조자는 변수에 대해서만 참조가 가능하며, 상수에 대한 선언이 불가능하다". int arr[3];int &ref1 = arr[0];int &ref2 = arr[1];int &ref3 = arr[2]; 위 예제와 같이, 참조자는 변수를 포함한 배열 내의 인덱스를 참조 또한 가능하다.  참조..
범위지정 연산자 Scope Resolution Operation(범위지정 연산자) - 지역 변수의 이름이 전역변수의 이름과 같을때, 전역변수는 지역 변수에 의해 가려진다는 특징이 있다. int val = 10;int Func(void){ val = 15; // 지역변수 val = 15 할당 ::val = 8; // 전역 변수 val = 8 할당} 예제와 같이, '범위지정 연산자 :: ' 을 변수 앞에 지정함으로서 Func()함수 내에서 전역변수에 접근할 수 있도록 한다.
함수 오버로딩 Function Overloading()의 이해 C 언어에서는 동일한 이름의 함수명을 허용하지 않는다. 하지만 C++ 에서는 함수 호출시 전달되는 매개변수의 인자값이 다르다면, 함수정의를 허용한다. 이러한 함수의 정의를 가르켜 '함수 오버로딩'이라고 한다. C++은 두 가지 정보를 기반으로 호출하는 함수를 찾는다.1. 함수의 이름2. 매개변수의 선언 매개변수의 개수가 다르거나, 전달되는 인수의 개수 및 자료형이 다르게 되면 함수의 오버로딩을 통해서 구분이 가능하다.즉, 함수의 반환형이 다른 것이 호출되는 함수를 구분하는 기준이 될 수 있다. #include void Func(void){ std :: cout
프로세스 프로세스 프로세스란 실행 중인 프로그램을 뜻한다. 현대의 컴퓨팅 시스템에서 작업의 단위이다.운영체제는 커널 안에서 병렬 처리로 여러 프로세스를 동시에 처리한다. 이로 인해 CPU들은 프로세스 중에서 다중화(multiplex)되어진다. 프로세스 개념프로세스의 현재 상태는 프로그램 카운터(PC)와 레지스터의 내용으로 나타낸다.프로세스 메모리 배치는 다음과 같다. - 텍스트 섹션 : 실행 코드- 데이터 섹션 : 전역 변수- 힙 섹션 : 프로그램 실행 중에 동적으로 할당되는 메모리- 스텍 섹션: 함수가 호출될 때 임시 저장 데이터 저장장소 (함수 매개변수, 복귀 주소 및 로컬 변수) 데이터 섹션의 크기는 고정적으로, 프로그램 실행 시간동안 크기가 변하지 않는다.스택 , 힙 섹션은 프로그램 동적 실행 중에 메모리..