opengl 참고

Computer_Graphics : 2011. 2. 5. 08:56
반응형
출처 : http://developersnote.springnote.com/pages/5657289

Primary textbook

pauline Baker and Donald Hearn. Computer Graphics

 

local illumination

 

hermit curve

 

버퍼를 지우는 것보다는 지우려는 색상으로 framebuffer를 채우는 것이 더 빠르다.

 

브래즈넘 알고리즘

 

Scan-line Algorithm

 

super sampling

색상을 결정을 주변의 색을 더해서 평균해 그 pixel의 색상을 결정한다.

 

Weighted Filtering

Cone Filter / Gaussian Filter

splat

 

Cohen-Sutherland Algorithm

 

clipping

line clipping : parametric algorithm

polygon clipping : weiler-atherton algorithm

 

 

glut

glutTimer function은 일정 시간 후 자기 자신을 재귀적으로 호출하도록 설정해야함

마지막 value는 counter 수치로 한번  불릴때 마다 1씩 떨어짐

 

사원수

짐볼락 : 회전축이 겹치면서 나타나는 연산 오류

쿼터니안은 회전 이동만 처리 가능

http://www.g-matrix.pe.kr/feature/3dengine/eulerangle.htm

http://www.g-matrix.pe.kr/feature/3dengine/quaternion.htm

 

http://gamedev.net/reference/articles/article1095.asp
http://www.gamasutra.com/features/19980703/quaternions_01.htm(아 이디 필요함)
http://gamedev.net/reference/articles/article1691.asp
http://freefall.freehosting.net/articles/quaternions_1.html
http://www.daimi.au.dk/~mbl/cgcourse/wiki/_files/shoemake94.pdf

 

viewport와 view frustum 비율을 어떻게 맞출 것인가?

glFrustum와 gluPerspective의 사용 구분

near plane을 1.0로 잡았다면 가로 세로 비에 있어서 작은 쪽이 최소 1 이상이어야한다. 그리고 그 비율대로 near plane의 ratio를 결정한다.

    GLfloat ratio = 0.0f;
    GLfloat windowScalingRatio = 0.0f;
    GLfloat w = 0.0f, h = 0.0f;
    if (width <= height) {
        w = 1.0;
        h = (GLfloat)height / (GLfloat)width;
    } else {
        w = (GLfloat)width / (GLfloat)height;
        h = 1.0f;
    }

    static GLfloat nearPlaneWidth = w, nearPlaneHeight = h;

    GLSize2f winScaleRatio = {(GLfloat)width / (GLfloat)windowSize.width,
                             (GLfloat)height / (GLfloat)windowSize.height };
   
    if (width <= height) {
        nearPlaneWidth = nearPlaneWidth * winScaleRatio.width;
        nearPlaneHeight = nearPlaneHeight * winScaleRatio.height;
        glFrustum(-(GLfloat)nearPlaneWidth/2.0f , (GLfloat)nearPlaneWidth/ 2.0f ,
            -(GLfloat)nearPlaneHeight/2.0f, (GLfloat)nearPlaneHeight/2.0f,
            1.0, 500.f);
    } else {
        nearPlaneWidth = nearPlaneWidth * winScaleRatio.width;
        nearPlaneHeight = nearPlaneHeight * winScaleRatio.height;
        glFrustum(-(GLfloat)nearPlaneWidth/2.0f, (GLfloat)nearPlaneWidth/2.0f ,
            -(GLfloat)nearPlaneHeight/2.0f, (GLfloat)nearPlaneHeight/2.0f,
            1.0, 500.f);
    }

 

K-DOP

 

raycasting

각 버터에 픽셀 하나당 카메라에서 출발하는 레이를 쏴서 제일 먼저 충돌하는 폴리곤을 찾아낸다.

 

local illumination

화면에 각 픽셀을 결정하기 위해서 카메라에서 해당 window pixel로 ray를 쏴서 어느 폴리곤의 primitive가 화면에 보여지는 지 찾고 다시 그 픽셀에서 광원쪽으로의 빛을 고려해서 색상을 결정한다.

 

석고 표면은 난반사가 잘일어나서 뽀송뽀송하다.

 

gouraud shading은 색상값의 보간

pong shading은 노말값의 보간

오픈지엘은 gouraud shading이 기본이다.

 

B-SPLINE

NURBS

 

텍스쳐 매핑 좌표는 버텍스에서 텍스쳐의 uv 좌표계로 점을 역으로 계산한다.

 

mipmap은 여러개 크기의 텍스쳐를 미리 만들어 놓는것이다.

minification : 텍스쳐의 여러개 색상이 하나의 픽셀에 표현될 때

magnification : 하나의 텍스쳐 색상이 여러개의 pixel에 표현이 될때

 

 

HDR(High dynamic range rendering)

 

Summed Area Tables

 

Reflection mapping

 

블랜딩

RGBA 에서 alpha 값을 불투명도를 삼아서 두 색상의 곱에 대한 기여도로 사용한다.

반응형

'Computer_Graphics' 카테고리의 다른 글

Android openGL ES 잡동사니  (0) 2010.09.25
3D 모바일 OpenGL ES 강좌 예제  (0) 2010.07.26
T&L(Transform & Lighting)  (0) 2008.03.18
Posted by Real_G