All posts by kpark

OpenGL Display List

8688955335.zip
눈사람을 36개 그렸을 때, 렌더링 속도에 큰 차이가 없음
Display List 사용한 경우 Frame Rate이 59.94 정도 나옴
Display List를 사용하지 않은 경우 Frame Rate이 59.98 정도 나옴






사용자 삽입 이미지 사용자 삽입 이미지

눈사람을 3600개 그렸을 때, 렌더링 속도에 차이가 보임
Display List 사용한 경우 Frame Rate이 13.0 정도 나옴
Display List를 사용하지 않은 경우 Frame Rate이 2.77 정도 나옴





사용자 삽입 이미지 사용자 삽입 이미지

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한다..

HW1

그래픽스 프로그래밍(321190) 실습 #1


– 2D graphics & interaction


(321190)


강사: 박경신


20123279196159882.hwp


 


제출 방법: 2011410() 12시까지


(e-learning 강의실에 실행파일과 소스코드와 리포트를 전부 “CG12_학번이름_숙제1.zip”으로 묶어서 제출하도록 합니다. 또한, 소스코트 폴더에 .cpp만 담지 말고 비주얼 스튜디오에서 만든 프로젝트 폴더를 담기 바랍니다.)


 


참고자료: logo_starter.zip


 


0. Display window 크기는 600 x 600gluOrtho2D(-10, 10, -10, 10)를 사용한다.



http://blog.designdb.com/emjaydesign/bbs/dblogView.asp?catPKID=2&sGb=&sTxt=&oDm=1&bbsType=&page=98&bbsPKID=19356#heads


 


1. ‘움직이는 로고(Logo)’ 클래스를 작성한다. 자기 자신의 이름으로 로고 디자인을 만든다. (20)


자기 자신의 이름을 중심에 놓고 재미있는 로고를 만든다.


로고와 배경이미지는 반드시 움직이는 개체이어야 한다.


 


2. 다양한 기하 속성 (attributes, color, line width, etc)을 이용하여, 로고 주변에 여러 가지 재미있는 배경 이미지를 추가한다. (20)


수학적인 공식 또는 기본색이나 모양을 변형하여 적어도 3개 이상의 다른 배경 이미지 (Geometry)을 구성하여 만든다. (예를 들어, 날아다니는 잠자리, 나비, 풍선, 각종 캐릭터 등)



3. ‘움직이는 로고메인 프로그램을 작성한다. (20)


-mouse


왼쪽 마우스 버튼을 누르면, 화면에 배경화면 이미지 (, 2번에서 구성한


Geometry 중 랜덤하게 하나)가 나타나 움직인다.


-keyboard


-spacebar-key를 누르면, 움직이는 로고를 다시 처음부터 볼 수 있다.


-q-key 또는 ESC-key를 누르면, 프로그램을 종료한다.


 


4. 창의성, 소스코드 주석처리, 리포트 (40)