본문 바로가기
반응형

분류 전체보기515

Euclid algorithm 유클리드의 소거법은 알고리즘을 설명하는데 자주 등장합니다. 그 이유 중 하나는 알고리즘(Algorithm)이란 말을 자주 사용하게 된 계기가 되었기 때문일겁니다. 유클리드의 소거법은 두 개의 숫자를 나눌 수 있는 최대 자연수를 찾는 과정을 기술하고 있습니다. E. 유클리드의 알고리즘 : m과 n이 주어졌을 때, 두 수를 나눌 수 있는 가장 큰 자연수를 찾는다. E1 : m과 n이 같다면 알고리즘을 종료한다. m이 원하는 답이다. E2 : m이 n보다 크다면 m ← m-n을 하고 그렇지 않다면 n ← n-m을 한다. E3 : E1 으로 돌아간다. 위의 알고리즘 E를 C 언어 함수로 만들면 아래와 같습니다. int foo(int m, int n) { while(m != n) { if( m > n ) m = .. 2011. 9. 19.
The Art of Computer Programming 2010.10.10. 제가 개인적으로 읽고 있는 책입니다. 이 책은 Donald E. Knuth라고 하는 분이 쓰신 책인데요. 역작이라고 할 수 있습니다. 그러나 이 책을 읽기 위해서는 수학에 대해서 이해도가 높아야 하죠. 그렇지 않다면 조금 읽고서.. "이해 안 가"하면서 버릴만한 책이죠. 류광씨가 번역한 책이 한빛미디어를 통해서 판매되고 있으니 굳이 원서를 볼 이유는 없습니다. 오탈자가 좀 있는 것은 그런가 보다 이해하면 됩니다만.. 틈나는대로 이 책에 대해서 글을 올릴까 합니다. 물론 책 전체를 다 번역한다는 것은 아닙니다. 제가 이해하는 부분을 쓰기 때문에 혹시 책을 보면서 알고 싶으신 내용있으면 같이 풀어나갔으면 합니다. CHAPTER ONE 1.1 알고리즘(Algorithms) 알고리즘이란 것.. 2011. 9. 19.
알파 오브젝트 정렬 며칠전에 알파 블렌딩 때 오류가 난나는 분의 문의 메일을 받았는데, 이유는 그것이 아니었지만, 알파 블렌딩에서 필요한 요소 기술들을 많이 모르고 있어서 여기에 소개하고자 합니다. 알파 블렌딩을 할 때, 제일 먼저 신경 써주어야 하는 것은 그리는 순서입니다. 불투명 오브젝트는 Z-Buffer(또는 뎁스버퍼)의 도움으로 그리는 순서에 상관없이 카메라로부터 가까운 거리의 오브젝트는 먼 거리의 오브젝트를 가리게 됩니다. 그러나 투명 오브젝트는 Z-Buffer의 도움을 받을 수가 없죠. 그리는 순서에 따라서 결과값이 달라지게 됩니다. 예를 들어서 노란색에 50% 투명도를 가지고 있는 오브젝트 A와 파란색에 50% 투명도를 가지고 있는 오브젝트 B가 있다고 하죠. A 오브젝트가 B 오브젝트에 비해서 카메라로부터 거.. 2011. 9. 19.
렌더러 생성 게임브리오에서는 여러가지 렌더러(Open GL, DirectX 8, DirectX 9, PS2)를 지원하고 있다. 그렇기 때문에 렌더러를 생성할 때 일반화된 프로그램을 작성할 수 없다. 게임브리오에서는 렌더러별로 Create 함수를 이용하여 렌더러를 생성하도록 하고 있다. 모든 렌더러는 NxRenderer 클래스를 상속받고 있으며, 모든 렌더러 함수들은 가상함수로 제공됨으로써 게임브리오 응용 프로그램에서 생성한 렌더러가 실행될 수 있도록 되어있다. Create 함수를 이용한 가상 클래스 생성에 대한 설명은 http://cafe.naver.com/dxgameprogramming/36 을 참조하길 바란다. 렌더러 생성은 다음과 같은 형태로 진행된다. 1) 렌더러 파라미터 검사 - 렌더러 파라미터는 현재 설치.. 2011. 9. 19.
프로그램 제작에서의 기술장벽 세상에는 많은 프로그래머가 있다. 과연 프로그래머에게 있어서 프로그램을 작성하는 기술은 어떻게 달라질까? 이것에 대한 해답을 찾기 위해서 하나의 예제를 들어볼까 한다. C 언어에서 for 루프를 이용하여 1부터 100까지 모두 다 더하는 프로그램을 짜보도록 한다. #include void main() { int i; int sum = 0; for( i = 1 ; i 2011. 9. 19.
스마트포인터 3D 그래픽 프로그램에는 많은 수의 오브젝트들이 생성된다. 이 오브젝트들은 메모리 절감이나 속도 향상을 위해서 공유되어 사용된다. 오브젝트의 공유는 장점도 있지만 단점도 존재한다. 오브젝트의 생성은 자유롭지만 소멸에 대해서는 자유롭지 못하다. 그래서 참조횟수(Reference counter)라는 것을 이용하여 참조횟수가 0이 되면 소멸하도록 만든다. 참조횟수라는 개념은 대부분의 그래픽 엔진(게임 엔진 포함)이 가지고 있다. 게임브리오 엔진은 NiRefObject 클래스가 참조횟수를 관리한다. 참조횟수를 증가하고 감소하기 위해서 게임브리오에서는 IncRefCount 함수와 DecRefCount 함수를 사용하고 있다. 프로그래머는 잘 짜여진 원칙에 의해서 참조횟수를 조절해주어야 할 것이다. 그렇지 않다면, .. 2011. 9. 19.
728x90