opengl 참고
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 |