GLUT의 callback 함수 매커니즘은 대표적인 C-style이고 인터넷 검색을 하면 많은 자료를 찾을 수 있다. 이는 나중에 다룰 생각이고, 이번에는 지금까지 만든 코드를 실제로 GLUT에 적용해 보도록 하겠다. 본 예제는 M. Kilgard의 ‘A simple red cube drawn with minimal OpenGL calls.’를 바탕으로 변형한 것이다. 원본 소스는 여기서 다운로드 받을 수 있다. GLUT는 freeglut을 사용하였다. 지금까지 차분히… GLUT Application 계속 읽기
[카테고리:] 이전 블로그
태터툴즈, 블로거닷컴, VCL WordPress 등지에서 내보낸 블로그 글들.
Template Callback Class
복잡한 캐스팅 콜백 함수 단계에서 일어나는 것을 방지하기 위해 템플릿을 도입해 보았다. #include <iostream> // 전역변수 콜백 함수 포인터. // 어떤 라이브러리 어딘가에 있다고 가정한다. void (*g_callback)() = NULL; // callback과 상속 관계가 없는 데이터 저장 클래스 class storage { public: storage() {} ~storage() {} int& val() { return val_; } const int& val() const… Template Callback Class 계속 읽기
Data Class and Callback Class
스태틱 클래스 함수라도 자기 자신을 참조하는 스태틱 클래스 변수에 힘입어 자신의 비스태틱 멤버 변수 및 함수에 접근할 수 있게 되었다. 그러나 콜백 함수 내부에서 접근 제한이 불가능한 문제를 발견할 수 있었다. 이러한 문제는 데이터/콜백 클래스를 각기 완전히 분리를 하면 해결할 수 있다. #include <iostream> // 전역변수 콜백 함수 포인터. // 어떤 라이브러리 어딘가에 있다고 가정한다.… Data Class and Callback Class 계속 읽기
Static Variable
일반적인 클래스로는 c-style의 콜백을 처리할 수 없다는 것을 알았고, 이는 단순한 대처로는해결하기 힘듬을 알았다. 그렇다면 어떻게 클래스를 사용하면서도, c-style을 유지할 수 있을까? 한 가지 방법으로는 static 변수를 멤버 변수로 사용하는 방법이다. 그러나 이 방법은 그리 유용하지 못하다. 왜냐하면 static 멤버 변수는 클래스를 선언하지 않고도 사용 가능하며, 그 클래스가 모두 공유하는 변수이기 때문에, 사실상 전역 변수이나… Static Variable 계속 읽기
Callback and Class
C-Style의 callback 코드에 살짝 C++ 개념을 얹어 보자. #include <iostream> // 전역변수 콜백 함수 포인터. // 어떤 라이브러리 어딘가에 있다고 가정한다. void (*g_callback)(void) = NULL; // 우리는 C-Style의 함수가 아닌 class를 필요로 한다. // C++에서 class와 struct의 차이는 단지 private이 기본이냐, public이 기본이냐의 차이다. struct cb_class { // 라이브러리는 이 함수를 필요로 한다. // static… Callback and Class 계속 읽기
C-Style Callback
먼저 C-Style Callback이 무엇인지를 설명하고자 한다. 보다 기술적인 설명을 하는 것 보다 다음 코드를 읽으면서 이야기를 진행하자. #include <stdio.h> #include <stdlib.h> // 전역변수 콜백 함수 포인터. // 어떤 라이브러리 어딘가에 있다고 가정한다. void (*g_callback)(void) = NULL; // 우리가 직접 만들어야 하는 콜백 함수 // 라이브러리는 이 함수를 필요로 한다. void callback(void) { printf(“Our callback function… C-Style Callback 계속 읽기