분류 전체보기
-
Scene Graph Rendering3D Graphics/OSG 2007. 8. 24. 18:54
원문 : http://www.nd.edu/~chuang1/summer03Images/scenegraph01.pdf Scene Graph Rendering Dirk Reiners OpenSG Forum dirk@opensg.org 이 수업에서 이 부분은 렌더링을 위한 씬그래프 시스템에 대해서 설명할 것이다. 씬그래프는 응용프로그램 개발을 단순화하고 이용 가능한 그래픽 하드웨어를 최적의 환경으로 사용할 수 있도록 도와줄 수 있다. 이 문서는 당신이 3D 컴퓨터 그래픽스에 대한 몇몇 기본 지식들을 가지고 있다고 가정한다. 만약 폴리곤, 방향성 광원(directional light source), 그리고 텍스처가 당신에게 아무런 의미도 없다면 당신은 이 수업을 따라가는데 문제를 느끼게 될 것이다. 이상적인 수준..
-
함수 포인터 인수Computer Language/C 2007. 8. 24. 16:50
함 수 포인터는 함수를 가리키고 있지만 어쨋거나 변수이기 때문에 함수의 인수로 전달될 수 있다. 함수를 함수의 인수로 전달한다는 것이 조금 이상하게 들리겠지만 이렇게 하면 함수 내부에서 어떤 함수롤 호출할 것인지를 호출측에서 지정할 수 있다. 함수 포인터가 아니라면 이것은 불가능하다. 함수 포인터를 인수로 받아들이는 함수의 예는 아주 많은데 대표적으로 퀵 소트 함수인 qsort 함수으 원형을 보자. void qsort(void *base, size_t num, size_t width, int(*compare)(const void*, const void*)); 이 함수는 base 번지에서 부터 width 폭을 가지는 num개의 값을 일정한 기준에 따라 정렬하는데 내부적으로 퀵 소트 알고리즘을 사용한다. 퀵..
-
포인터로 함수 호출하기Computer Language/C 2007. 8. 24. 16:49
그 렇다면 함수 포인터를 사용하는 이유는 무엇일까? 앞 예제의 경우 함수 포인터를 통해 간접적으로 func 함수를 호출했는데 그냥 func(2)를 호출하는 것이 훨씬 더 간단하고 직관적인데 왜 굳이 함수 포인터가 필요한가 말이다. 물론 이유가 있는데 언제나 한 단계를 더 거치면 여러 가지 기법들이 가능해 진다. 함수 포인터는 변수이기 때문에 조건에 따라 언제든지 다른 함수를 가리킬 수 있다. 물론 하나의 함수 포인터가 가리킬 수 있는 함수들의 원형은 모두 일치해야 한다. 함수 포인터를 인수로 사용하면 함수를 다른 함수에게 전달하는 것도 가능해지며 함수 퐁니터 배열이나 구조체를 통해 여러 개의 함수군을 통째로 바꿔치기 할 수 도 있다. 함수 포인터의 가장 쉬운 응용예로 조건에 따라 함수를 바꿔 가며 호출하..
-
함수포인터 타입Computer Language/C 2007. 8. 24. 16:49
함 수포인터 타입도 일종의 고유한 타입이다. 따라서 원형이 다른 함수 포인터끼리는 고다볼 대입할 수 없으며 함수으 인수로도넘길 수 없다. 정수형 포인터 변수(int *) 에 실수형 포인터 변수(double *) 의값을 대입 할 수 없듯이 말이다. 다음 코드를 보자. int (*pf1)(char *);void (*pf2)(double);pf1 = pf2; // 타입이 다르므로 에러 pf1 은 문자형 포인터를 인수로 취하고 정수형을 리턴하는 함수를 가리키는 함수 포인터이며 pf2는 실수를 인수로 취하고 리턴값이 없는 함수를 가리키는 함수 포인터이다. 두 변수가 가리킬 수 있는 함수의 원형이 다르기 때문에 pf2가 가리키는 번지를 pf1이 곧바로 대입 할수 없다. 만약 이것이 가능하다면 pf1로 함수를 호출할..
-
[펌] 함수포인터 정의Computer Language/C 2007. 8. 24. 16:48
출처 : http://blog.naver.com/itsatan 여기서는 함수 포인터에 대해 소개하고 개념적인 활용 방안에 대해서도 연구해 보기로 한다. 포인터라는 것이 원래 C/C++ 으 주제 중 가장 어렵고 난해한데 그중에서도 함수 포인터는 난해 함의 절정에 있다고 평가되는 어려운 주제이다. 처음부터 함수 포인터를 다 이해하기는 어려우므로 부담갖지 말고 가벼운 마음으로 읽어보기 바란다. 다행이 함수 포인터는 실전에서 사용빈도가 그리 높지 않으므로 모른다고 해서 당장 불편한 정도는 아니다. 함수 포인터란 함수를 가리키는 포인터이다. 포인터란 본래 메모리상의 번지를 저장하는 변수인데 함수 메모리에 존재하며 시작 번지가 있으므로 포인터 변수로 가리킬 수 있다. 일반적인 포인터는 변수가 저장되어 있는 번지를 ..
-
[펌] 포인터 캐스팅을 이용한 실제 인터페이스 변경Computer Language/C 2007. 8. 24. 16:44
출처 : 데브피아 제 목 [파샤] 포인터 캐스팅을 이용한 실제 인터페이스 변경 7006 0 whoom@hanmail.net 7006 0 0 작 성 자 문채후(whoom) 첨부 파일 작성시각 2005-01-14 오후 4:06:03 조 회 수 480 글 분 류 VC++ 일반 아래 최재욱님의 글을 보다가 문득 생각이나서 글을 적습니다 포인터 캐스팅을 이용한 인터페이스 변경 기법인데요 처음봤을때 너무 신기했던 거라서 ㅡ_ㅡ;; 다른분들도 신기해 해야할텐데 걱정이 앞섭니다 ^^ typedef struct interface; interface IBase { virtual void Play()=0; virtual void Show()=0; } Interface IObject : IBase { virtual void ..
-
클래스 맴버함수의 함수 포인터Computer Language/C 2007. 8. 24. 16:41
일반적으로 함수 포인터는 void* 로 캐스팅되지 않는다. 이는 type 이나 value 보다는 name 에 instantiation 되기 때문이다. 일반적으로 맴버 함수 포인터는 일반 함수 포인터와 다르다. 일반적으로 콜링컨벤션은 __cdecl, __stdcall, __fastcall 이 있는것으로 알려져 있으나 하나가 더 존재한다. 그것은 바로 __thiscall 맴버 함수 포인터는 특이하게 스코프(::*) 가 들어가 있다. (__thiscall 과 관련있음) 따라서 선언할때 아주 눈게 거슬리게 선언이 된다. (그래서 보통 typedef 로 짧게 만들어 놓고 씀) 문제는 다중 상속일때 발생한다. 단일 상속을 하게 되면 상속받은 클래스의 엔트리 포인트를 상속한 클래스의 엔트리로 변경하는 야매로 맴버함수..