Monthly Archives: April 2012
중간고사답안
lecture9
Vector/Matrix/Plane Class
Vector3/4 Class
Matrix4x4 Class
Plane Class
Quaternion Class
http://dis.dankook.ac.kr/lectures/cg10/entry/Vector-Matrix-Plane-Class
lecture8
lecture7
Trigonometry
OpenGL Single vs Double Buffer
OpenGL single buffer vs double buffer – draw geometry primitives
http://www.opengl.org/resources/code/samples/glut_examples/examples/sb2db.c
OpenGL single buffer vs double buffer – draw a square
OpenGL Display List
OpenGL Picking
4155373035.zip
pick1.cpp (selection mode)
-display 함수에서는 정상적으로 객체를 그린다.
-mouse 함수에서 마우스의 위치값(x,y)를 가지고
-glSelectBuffer로 네임스택 버퍼를 지정한다.
-glRenderMode를 GL_SELECT로 지정하여 선택모드로 전환한다.
-glInitNames으로 네임스택을 초기화한다.
-gluPickMatrix를 사용하여 뷰볼륨을 지정한 후
-glPushName/glPopName 또는 glLoadName을 사용하여 네임스택이름을 지정하여
객체를 그리면, picking 연산이 가능해진다.
-glRenderMode를 GL_RENDER로 바꾸면, hit record가 네임스택 버퍼에 저장된다.
-네임스택 버퍼를 처리(processHits) 하여, 해당 객체 ID를 넘겨주어 Pick한다.
http://www.lighthouse3d.com/opengl/picking/index.php?openglway3
pick2.cpp (bounding box)
-display 함수에서는 정상적으로 객체를 그린다.
-mouse 함수에서 마우스의 위치값(x,y)를 가지고
-각 객체의 bounding box를 안에 들어왔는지 확인하여,
해당 객체 ID를 넘겨주어 Pick한다.
pick3.cpp (back buffer)
-display 함수에서는 정상적으로 객체를 그린다.
-mouse 함수에서 마우스의 위치값(x,y)를 가지고
-GL_DITHER 를 비활성화한후, 각 객체마다 color code된 그림을 그린다.
-glReadPixel 로 마우스 위치의 pixel 색을 받아와서 해당 객체의 color와 비교하여,
해당 객체 ID를 넘겨주어 Pick한다..