Chapter 5 Lighting glut Init Display ModeGLUTDEPTH gl
- Slides: 93
Chapter 5. 라이팅(Lighting)
은면제거 예제 glut. Init. Display. Mode(GLUT_DEPTH | …); gl. Enable(GL_DEPTH_TEST); … while (1) { gl. Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); get_viewing_point_from_mouse_position(); draw_3 d_object_A(); draw_3 d_object_B(); } 2009 -2학기
빛이 비춰진 구 그리기: light. c #include <GL/glut. h> #include <stdlib. h> void init(void) { GLfloat mat_specular[] = { 1. 0, 1. 0 }; GLfloat mat_shininess[] = { 50. 0 }; GLfloat light_position[] = { 1. 0, 0. 0 }; gl. Clear. Color (0. 0, 0. 0); gl. Shade. Model (GL_SMOOTH); gl. Materialfv(GL_FRONT, GL_SPECULAR, mat_specular); // 추가하기 gl. Materialfv(GL_FRONT, GL_SHININESS, mat_shininess); // 추가하기 gl. Lightfv(GL_LIGHT 0, GL_POSITION, light_position); // 추가하기 2009 -2학기
gl. Enable(GL_LIGHTING); gl. Enable(GL_LIGHT 0); gl. Enable(GL_DEPTH_TEST); } void display(void) { gl. Clear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glut. Solid. Sphere (1. 0, 20, 16); gl. Flush (); } 2009 -2학기
void reshape (int w, int h) { gl. Viewport (0, 0, (GLsizei) w, (GLsizei) h); gl. Matrix. Mode (GL_PROJECTION); gl. Load. Identity(); if (w <= h) gl. Ortho (-1. 5, -1. 5*(GLfloat)h/(GLfloat)w, -10. 0, 10. 0); else gl. Ortho (-1. 5*(GLfloat)w/(GLfloat)h, -1. 5, -10. 0, 10. 0); gl. Matrix. Mode(GL_MODELVIEW); gl. Load. Identity(); } 2009 -2학기
void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: exit(0); break; } } 2009 -2학기
int main(int argc, char** argv) { glut. Init(&argc, argv); glut. Init. Display. Mode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glut. Init. Window. Size (500, 500); glut. Init. Window. Position (100, 100); glut. Create. Window (argv[0]); init (); glut. Display. Func(display); glut. Reshape. Func(reshape); glut. Keyboard. Func(keyboard); glut. Main. Loop(); return 0; } 2009 -2학기
조명의 속성 gl. Light*() 의 pname 매개변수에 대한 기본 값 매개변수 이름 기본값 설명 GL_AMBIENT (0. 0, 1. 0) Ambient 라이트의 세기 GL_DIFFUSE (1. 0, 1. 0), (0. 0, 1. 0) Diffuse 라이트의 세기 GL_SPECULAR (1. 0, 1. 0), (0. 0, 1. 0) Specular 라이트의 세 기 GL_POSITION (0. 0, 1. 0, 0. 0) 조명의(x, y, z, w) 위치 GL_SPOT_DIRECTION (0. 0, -1. 0) 조명의(x, y, z) 방향 GL_SPOT_EXPONENT 0. 0 스포트라이트 지수 GL_SPOT_CUTOFF 180. 0 스포트라이트 절단각 GL_CONSTANT_ATTENUATION 1. 0 감쇠율 상수 GL_LINEAR_ATTENUATION 0. 0 선형 감쇠율 GL_QUADRATIC_ATTENUATION 0. 0 2009 -2학기 2차 감쇠율
그림 5 -2 GL_SPOT_CUTOFF 매개변수 GL_SPOT_CUTOFF 2009 -2학기
gl. Lightfv(GL_LIGHT 1, gl. Lightfv(GL_LIGHT 1, GL_AMBIENT, Light 1_ambient); GL_DIFFUSE, Light 1_diffuse); GL_SPECULAR, Light 1_specular); GL_POSITION, Light 1_position); GL_CONSTANT_ATTENUATION, 1. 5); GL_LINEAR_ATTENUATION, 0. 5); GL_QUADRATIC_ATTENUATION, 0. 2); gl. Lightfv(GL_LIGHT 1, GL_SPOT_CUTOFF, 45. 0); gl. Lightfv(GL_LIGHT 1, GL_SPOT_DIRECTION, spot_direction); gl. Lightfv(GL_LIGHT 1, GL_SPOT_EXPONENT, 2. 0); gl. Enable(GL_LIGHT 1); 2009 -2학기
조명 이동하기 조명의 위치에 대해 회전 변환이나 이동 변환을 적용, 오브젝트를 중심으로 움직이기 위해서는 l 모델변환 수행 후, 조명의 위치 지정하는 방법 사용 예제 5 -5 독립적으로 이동하는 광원 static GLdouble spin; void display(void){ GLfloat light_position[] = { 0. 0, 1. 5, 1. 0}; gl. Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); gl. Push. Matrix(); glu. Look. At(0. 0, 5. 0, 0. 0, 1. 0, 0. 0); gl. Push. Marix(); gl. Rotated(spin, 1. 0, 0. 0); gl. Lightfv(GL_LIGHT 0, GL_POSITION, light_position); gl. Pop. Matrix(); glut. Solid. Torus(0. 275, 0. 85, 8, 15); gl. Pop. Matrix(); gl. Flush() 2009 -2학기 }
모델링 변환으로 조명 움직이기 [예제 5 – 6] #include <GL/glut. h> #include <stdlib. h> static int spin = 0; /* 모델변환을 호출한 뒤 조명의 위치 리셋, 조명을 워드 좌표계상의 *새로운 위치에 놓는다 육면체는 조명의 위치 */ void init(void) { gl. Clear. Color (0. 0, 0. 0); gl. Shade. Model (GL_SMOOTH); gl. Enable(GL_LIGHTING); gl. Enable(GL_LIGHT 0); gl. Enable(GL_DEPTH_TEST); } 2009 -2학기
void display(void) { GLfloat position[] = { 0. 0, 1. 5, 1. 0 }; gl. Clear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); gl. Push. Matrix (); glu. Look. At (0. 0, 5. 0, 0. 0, 1. 0, 0. 0); gl. Push. Matrix (); gl. Rotated ((GLdouble) spin, 1. 0, 0. 0); gl. Lightfv (GL_LIGHT 0, GL_POSITION, position); 2009 -2학기
gl. Translated (0. 0, 1. 5); gl. Disable (GL_LIGHTING); gl. Color 3 f (0. 0, 1. 0); glut. Wire. Cube (0. 1); gl. Enable (GL_LIGHTING); gl. Pop. Matrix (); glut. Solid. Torus (0. 275, 0. 85, 8, 15); gl. Pop. Matrix (); gl. Flush (); } 2009 -2학기
void reshape (int w, int h) { gl. Viewport (0, 0, (GLsizei) w, (GLsizei) h); gl. Matrix. Mode (GL_PROJECTION); gl. Load. Identity(); glu. Perspective(40. 0, (GLfloat) w/(GLfloat) h, 1. 0, 20. 0); gl. Matrix. Mode(GL_MODELVIEW); gl. Load. Identity(); } void mouse(int button, int state, int x, int y){ switch (button) { case GLUT_LEFT_BUTTON: 2009 -2학기
if (state == GLUT_DOWN) { spin = (spin + 30) % 360; glut. Post. Redisplay(); } break; default: break; } } void keyboard(unsigned char key, int x, int y){ switch (key) { case 27: exit(0); break; } } 2009 -2학기
void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: exit(0); break; } } 2009 -2학기
int main(int argc, char** argv) { glut. Init(&argc, argv); glut. Init. Display. Mode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glut. Init. Window. Size (500, 500); glut. Init. Window. Position (100, 100); glut. Create. Window (argv[0]); init (); glut. Display. Func(display); glut. Reshape. Func(reshape); glut. Mouse. Func(mouse); glut. Keyboard. Func(keyboard); glut. Main. Loop(); return 0; } 2009 -2학기
2009 -2학기
2009 -2학기
시점에 따라 광원 움직이기 l l 시점에 위치를 그러면 여기서 따라 조명을 움직이게 하려면 뷰잉 변환 이전에 조명의 지정해야 함 뷰잉 변환을 빛과 시점에 동시에 적용 조명이 눈 좌표계에 저장된다. 예제 5 -7 시점에 따라 이동하는 광원 GLfloat light_position[] = {0. 0, 1. 0}; gl. Viewport(0, 0, (GLint) w, (GLint) h); gl. Matrix. Mode(GL_PROJECTION); gl. Load. Identity(); glu. Perspective(40. 0, (GLfloat) w / (GLfloat) h, 1. 0, 100. 0); gl. Matrix. Mode (GL_MODELVIEW); gl. Load. Identity(); gl. Lightfv(GL_LIGHT 0, GL_POSITION, light_position); 2009 -2학기
static GLdouble ex, ey, ez, upx, upy, upz; void display (void) { gl. Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); gl. Push. Matrix(); glu. Look. At(ex, ey, ez, 0. 0, upx, upy, upz); glut. Solid. Torus(0. 275, 0. 85, 8, 15); gl. Pop. Matrix(); gl. Flush(); } 2009 -2학기
gl. Light. Model*()의 pname 매개변수 값 매개변수 이름 기본값 설명 GL_LIGHT_MODEL_ AMBIENT (0. 2, 1. 0) 전체 장면의 ambient RGBA 세기 GL_LIGHT_MODDEL_ LOCAL_VIEWER 0. 0 또는 GL_FALSE Specular 반사 각도를 계 산하는 방법 GL_LIGHT_MODEL_ TWO_SIDE 0. 0 또는 GL_FALSE 단면 라이팅과 양면 라이 팅 중에서 하나 선택 GL_LIGHT_MOD DEL_COLOR_CONTROL GL_SINGLE_COLOR Specular 컬러를 ambient 및 diffuse 컬러와 별도로 계산할지 여부 2009 -2학기
전역적 ambient 라이트 l 각각의 광원으로 부터 장면에 ambient 라이트를 형성할 수 있다. l 전역적 ambient 라이트에 대한 RGBA 세기를 지정하려면 GL_LIGHT_MODEL_AMBIENT 매개변수를 사용 l l glfloat lmodel_ambient[] = { 0. 2, 1. 0 }; gl. Light. Modelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); 2009 -2학기
pname 매개변수에 대한 기본값 매개변수 이름(pname) 기본값 설명 GL_AMBIENT (0. 2, 1. 0) 재질의 ambient 컬러 GL_DIFFUSE (0. 8, 1. 0) 재질의 diffuse 컬러 GLAMBIENT_AND_DIFFU SE 재질의 ambient & diffuse 컬러 GL_SPECULAR (0. 0, 1. 0) 재질의 specular 지수 GL_SHININESS 0. 0 Specular 지수 GL_EMISSION (0. 0, 1. 0) 재질의 emissive 컬러 GL_COLOR_INDEX (0, 1, 1) ambient, diffuse, specular 컬러 인덱스 2009 -2학기
예제 5 -8 다양한 재질 속성: material. c #include <stdlib. h> #include <GL/glut. h> void init(void) { GLfloat ambient[] = { 0. 0, 1. 0 }; GLfloat diffuse[] = { 1. 0, 1. 0 }; GLfloat specular[] = { 1. 0, 1. 0 }; GLfloat position[] = { 0. 0, 3. 0, 2. 0, 0. 0 }; GLfloat lmodel_ambient[] = { 0. 4, 1. 0 }; GLfloat local_view[] = { 0. 0 }; 2009 -2학기
gl. Clear. Color(0. 0, 0. 1, 0. 0); gl. Enable(GL_DEPTH_TEST); gl. Shade. Model(GL_SMOOTH); gl. Lightfv(GL_LIGHT 0, GL_AMBIENT, ambient); gl. Lightfv(GL_LIGHT 0, GL_DIFFUSE, diffuse); gl. Lightfv(GL_LIGHT 0, GL_POSITION, position); gl. Light. Modelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); gl. Light. Modelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view); gl. Enable(GL_LIGHTING); gl. Enable(GL_LIGHT 0); } 2009 -2학기
void display(void) { GLfloat no_mat[] = { 0. 0, 1. 0 }; GLfloat mat_ambient[] = { 0. 7, 1. 0 }; GLfloat mat_ambient_color[] = { 0. 8, 0. 2, 1. 0 }; GLfloat mat_diffuse[] = { 0. 1, 0. 5, 0. 8, 1. 0 }; GLfloat mat_specular[] = { 1. 0, 1. 0 }; GLfloat no_shininess[] = { 0. 0 }; GLfloat low_shininess[] = { 5. 0 }; GLfloat high_shininess[] = { 100. 0 }; GLfloat mat_emission[] = {0. 3, 0. 2, 0. 0}; gl. Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 2009 -2학기
gl. Push. Matrix(); gl. Translatef (-3. 75, 3. 0, 0. 0); gl. Materialfv(GL_FRONT, GL_AMBIENT, no_mat); gl. Materialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); gl. Materialfv(GL_FRONT, GL_SPECULAR, no_mat); gl. Materialfv(GL_FRONT, GL_SHININESS, no_shininess); gl. Materialfv(GL_FRONT, GL_EMISSION, no_mat); glut. Solid. Sphere(1. 0, 16); gl. Pop. Matrix(); 2009 -2학기
gl. Push. Matrix(); gl. Translatef (-1. 25, 3. 0, 0. 0); gl. Materialfv(GL_FRONT, GL_AMBIENT, no_mat); gl. Materialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); gl. Materialfv(GL_FRONT, GL_SPECULAR, mat_specular); gl. Materialfv(GL_FRONT, GL_SHININESS, low_shininess); gl. Materialfv(GL_FRONT, GL_EMISSION, no_mat); glut. Solid. Sphere(1. 0, 16); gl. Pop. Matrix(); 2009 -2학기
gl. Push. Matrix(); gl. Translatef (3. 75, 3. 0, 0. 0); gl. Materialfv(GL_FRONT, GL_AMBIENT, no_mat); gl. Materialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); gl. Materialfv(GL_FRONT, GL_SPECULAR, no_mat); gl. Materialfv(GL_FRONT, GL_SHININESS, no_shininess); gl. Materialfv(GL_FRONT, GL_EMISSION, mat_emission); glut. Solid. Sphere(1. 0, 16); gl. Pop. Matrix(); 2009 -2학기
gl. Push. Matrix(); gl. Translatef (-3. 75, 0. 0); gl. Materialfv(GL_FRONT, GL_AMBIENT, mat_ambient); gl. Materialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); gl. Materialfv(GL_FRONT, GL_SPECULAR, no_mat); gl. Materialfv(GL_FRONT, GL_SHININESS, no_shininess); gl. Materialfv(GL_FRONT, GL_EMISSION, no_mat); glut. Solid. Sphere(1. 0, 16); gl. Pop. Matrix(); 2009 -2학기
gl. Push. Matrix(); gl. Translatef (-1. 25, 0. 0); gl. Materialfv(GL_FRONT, GL_AMBIENT, mat_ambient); gl. Materialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); gl. Materialfv(GL_FRONT, GL_SPECULAR, mat_specular); gl. Materialfv(GL_FRONT, GL_SHININESS, low_shininess); gl. Materialfv(GL_FRONT, GL_EMISSION, no_mat); glut. Solid. Sphere(1. 0, 16); gl. Pop. Matrix(); 2009 -2학기
gl. Push. Matrix(); gl. Translatef (1. 25, 0. 0); gl. Materialfv(GL_FRONT, GL_AMBIENT, mat_ambient); gl. Materialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); gl. Materialfv(GL_FRONT, GL_SPECULAR, mat_specular); gl. Materialfv(GL_FRONT, GL_SHININESS, high_shininess); gl. Materialfv(GL_FRONT, GL_EMISSION, no_mat); glut. Solid. Sphere(1. 0, 16); gl. Pop. Matrix(); 2009 -2학기
gl. Push. Matrix(); gl. Translatef (3. 75, 0. 0); gl. Materialfv(GL_FRONT, GL_AMBIENT, mat_ambient); gl. Materialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); gl. Materialfv(GL_FRONT, GL_SPECULAR, no_mat); gl. Materialfv(GL_FRONT, GL_SHININESS, no_shininess); gl. Materialfv(GL_FRONT, GL_EMISSION, mat_emission); glut. Solid. Sphere(1. 0, 16); gl. Pop. Matrix(); 2009 -2학기
gl. Push. Matrix(); gl. Translatef (-3. 75, -3. 0, 0. 0); gl. Materialfv(GL_FRONT, GL_AMBIENT, mat_ambient_color); gl. Materialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); gl. Materialfv(GL_FRONT, GL_SPECULAR, no_mat); gl. Materialfv(GL_FRONT, GL_SHININESS, no_shininess); gl. Materialfv(GL_FRONT, GL_EMISSION, no_mat); glut. Solid. Sphere(1. 0, 16); gl. Pop. Matrix(); 2009 -2학기
gl. Push. Matrix(); gl. Translatef (-1. 25, -3. 0, 0. 0); gl. Materialfv(GL_FRONT, GL_AMBIENT, mat_ambient_color); gl. Materialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); gl. Materialfv(GL_FRONT, GL_SPECULAR, mat_specular); gl. Materialfv(GL_FRONT, GL_SHININESS, low_shininess); gl. Materialfv(GL_FRONT, GL_EMISSION, no_mat); glut. Solid. Sphere(1. 0, 16); gl. Pop. Matrix(); 2009 -2학기
gl. Push. Matrix(); gl. Translatef (1. 25, -3. 0, 0. 0); gl. Materialfv(GL_FRONT, GL_AMBIENT, mat_ambient_color); gl. Materialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); gl. Materialfv(GL_FRONT, GL_SPECULAR, mat_specular); gl. Materialfv(GL_FRONT, GL_SHININESS, high_shininess); gl. Materialfv(GL_FRONT, GL_EMISSION, no_mat); glut. Solid. Sphere(1. 0, 16); gl. Pop. Matrix(); 2009 -2학기
gl. Push. Matrix(); gl. Translatef (3. 75, -3. 0, 0. 0); gl. Materialfv(GL_FRONT, GL_AMBIENT, mat_ambient_color); gl. Materialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); gl. Materialfv(GL_FRONT, GL_SPECULAR, no_mat); gl. Materialfv(GL_FRONT, GL_SHININESS, no_shininess); gl. Materialfv(GL_FRONT, GL_EMISSION, mat_emission); glut. Solid. Sphere(1. 0, 16); gl. Pop. Matrix(); gl. Flush(); } 2009 -2학기
void reshape(int w, int h) { gl. Viewport(0, 0, w, h); gl. Matrix. Mode(GL_PROJECTION); gl. Load. Identity(); if (w <= (h * 2)) gl. Ortho (-6. 0, -3. 0*((GLfloat)h*2)/(GLfloat)w, -10. 0, 10. 0); else gl. Ortho (-6. 0*(GLfloat)w/((GLfloat)h*2), -3. 0, -10. 0, 10. 0); gl. Matrix. Mode(GL_MODELVIEW); gl. Load. Identity(); } 2009 -2학기
void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: exit(0); break; } } 2009 -2학기
int main(int argc, char** argv) { glut. Init(&argc, argv); glut. Init. Display. Mode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glut. Init. Window. Size (600, 450); glut. Create. Window(argv[0]); init(); glut. Reshape. Func(reshape); glut. Display. Func(display); glut. Keyboard. Func (keyboard); glut. Main. Loop(); return 0; } 2009 -2학기
Lightmaterial 튜토리얼 2009 -2학기
l l gl. Color. Material()을 호출한 뒤에는 GL_COLOR_MATERIAL을 인 자로 하는 gl. Enable() 호출 l 그러면, 장면을 그릴 때마다 gl. Color*()를 사용하여 현재 컬 러를 변경하거나, gl. Material*()로 재질을 변경할 수 있다. 정점들의 재질 속성을 하나씩 변경하려면 gl. Color. Material()을 사 용해야 한다 gl. Enable(GL_COLOR_MATERIAL); gl. Color. Material(GL_FRONT, GL_DIFFUSE); gl. Color 3 f(0. 2, 0. 5, 0. 8); // diffuse 반사 변경. . // 오브젝트를 그림 gl. Color. Material(GL_FRONT, GL_SPECULAR); gl. Color 3 f(0. 9, 0. 0, 0. 2): // specular 반사 변경. . // 다른 오브젝트를 그림 gl. Disable(GL_COLOR_MATERIAL); 2009 -2학기
예제 5 -9 gl. Color. Material() 사용하기: colormat. c #include <GL/glut. h> #include <stdlib. h> GLfloat diffuse. Material[4] = { 0. 5, 1. 0 }; void init(void) { GLfloat mat_specular[] = { 1. 0, 1. 0 }; GLfloat light_position[] = { 1. 0, 0. 0 }; gl. Clear. Color (0. 0, 0. 0); gl. Shade. Model (GL_SMOOTH); gl. Enable(GL_DEPTH_TEST); 2009 -2학기
gl. Materialfv(GL_FRONT, GL_DIFFUSE, diffuse. Material); gl. Materialfv(GL_FRONT, GL_SPECULAR, mat_specular); gl. Materialf(GL_FRONT, GL_SHININESS, 25. 0); gl. Lightfv(GL_LIGHT 0, GL_POSITION, light_position); gl. Enable(GL_LIGHTING); gl. Enable(GL_LIGHT 0); gl. Color. Material(GL_FRONT, GL_DIFFUSE); gl. Enable(GL_COLOR_MATERIAL); } 2009 -2학기
void display(void) { gl. Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glut. Solid. Sphere(1. 0, 20, 16); gl. Flush (); } void reshape (int w, int h) { gl. Viewport (0, 0, (GLsizei) w, (GLsizei) h); gl. Matrix. Mode (GL_PROJECTION); gl. Load. Identity(); 2009 -2학기
if (w <= h) gl. Ortho (-1. 5, -1. 5*(GLfloat)h/(GLfloat)w, -10. 0, 10. 0); else gl. Ortho (-1. 5*(GLfloat)w/(GLfloat)h, -1. 5, -10. 0, 10. 0); gl. Matrix. Mode(GL_MODELVIEW); gl. Load. Identity(); } 2009 -2학기
void mouse(int button, int state, int x, int y) { switch (button) { case GLUT_LEFT_BUTTON: if (state == GLUT_DOWN) { diffuse. Material[0] += 0. 1; if (diffuse. Material[0] > 1. 0) diffuse. Material[0] = 0. 0; gl. Color 4 fv(diffuse. Material); glut. Post. Redisplay(); } 2009 -2학기
case GLUT_MIDDLE_BUTTON: if (state == GLUT_DOWN) { diffuse. Material[1] += 0. 1; if (diffuse. Material[1] > 1. 0) diffuse. Material[1] = 0. 0; gl. Color 4 fv(diffuse. Material); glut. Post. Redisplay(); } break; 2009 -2학기
case GLUT_RIGHT_BUTTON: if (state == GLUT_DOWN) { diffuse. Material[2] += 0. 1; if (diffuse. Material[2] > 1. 0) diffuse. Material[2] = 0. 0; gl. Color 4 fv(diffuse. Material); glut. Post. Redisplay(); } break; default: break; } } 2009 -2학기
void keyboard(unsigned char key, int x, int y) { switch (key) { case 27: exit(0); break; } } 2009 -2학기
int main(int argc, char** argv) { glut. Init(&argc, argv); glut. Init. Display. Mode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glut. Init. Window. Size (500, 500); glut. Init. Window. Position (100, 100); glut. Create. Window (argv[0]); init (); glut. Display. Func(display); glut. Reshape. Func(reshape); glut. Mouse. Func(mouse); glut. Keyboard. Func(keyboard); glut. Main. Loop(); return 0; } 2009 -2학기
- Glut idle function
- Glut init
- Init 7
- Grafcet init
- Android installd
- Failed to init ageia physics sdk
- Wireshark
- Dvst stands for in computer graphics
- In random scan display, the frame buffer holds ….
- Raster scan display and vector scan display
- Gl
- Managing customer information to gain customer insights
- Glut 種類
- Glutsolid
- With lines
- Glut draw text
- Glutattachmenu
- Glutwire
- Protezoik
- Kata polyhedral bersal dari kata?
- Glut solid torus example
- Gl/glut.h
- Glut solid torus example
- Glut is ours
- Gl line strip example
- ¿qué es la homeostasis y ejemplos
- Lenhinger
- Glut
- Glut receptors
- Glut timer
- Glut sensible a insulina
- Glut functions
- Glykogenéza
- Glut menu example
- Font pixel
- Opengl 설치
- Glut thy sorrow on a morning rose
- Glut dependiente de insulina
- Install glut linux
- Gl/glut.h
- Chapter 16 section 1 hitlers lightning war
- Chapter 18 visual merchandising and display
- The physical outline of a display
- Monocular cues
- Merchandising color wheel
- Mccandless lighting
- 4 functions of stage lighting
- Split lighting
- Spherical harmonics lighting
- Spherical harmonics lighting
- Lighting matlab
- Three point lighting examples
- Rembrandt lighting diagram
- Longitudinal uniformity street lighting
- Science fiction lighting
- Local lighting examples
- Renender
- Image-based lighting
- Floor plan adalah
- Ac 150/5345-42
- Example of front lighting
- Urban lighting
- Dialux emergency lighting tutorial
- Delta tech industries
- Security lighting texas
- Alsf 2 approach lighting system
- Akdot
- Instrument hold line
- Airport lighting cans
- What is the orbital diagram for sulfur
- Theatre lighting designer salary
- Lc&d lighting controls
- Lighting designers baltimore
- Led shipyard lighting
- Dspm inverter
- Delaware lighting system
- Mise en scene lighting
- Massimo lighting
- General lighting
- Cahaya utama yang berfungsi sebagai penerang pokok
- Lighting in film analysis
- Single battery system in train lighting
- Lighting models in computer graphics
- Airport reference point symbol
- Tv studio lighting setup
- Ncc street lighting
- Types of artificial light
- Entstehung der glühbirne
- Diy led reef lighting
- Katus lighting
- Konsep dasar pencahayaan adalah
- Types of artificial lighting
- Argus smoke detector
- Networked outdoor lighting