1999 OpenGL S96M501 S96M596 S96M649
1 3 2 OpenGL 4 3 OpenGL 5 4 OpenGL 6 OpenGl : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 6 : : : : : : : : : : : : : : : : : : : : : 7 5 10 OpenGL : : : : : : : : : : : : : : : : : : : : : : : : : : : : 10 Windows98 : : : : : : : : : : : : : : : : : : : : : : : : : : : 11 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 11 6 12 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 13 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 13 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 13 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 15, : : : : : : : : : : : : : : 15 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 16 7 17 : : : : : : : : : : : : : : : : : : 17 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 18 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 18 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 19 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 19 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 20 (,, ) : : : : : : : : 20 : : : : : : : : : : : : : : : : : : : : : : : : : : : 21 : : : : : : : : : : : : : : : : : : : : : : : 22 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 23 8 25 OpenGL : : : : : : : : : : : : : : : : : : : : : : : : : : : 25 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 25 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 25 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 26 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 26 1
9 28 10 29 11 30 12 31 13 32 2
1 OpenGL, Microsoft,Windows95,WindowsNT,, 3,OpenGL OpenGL 3
2 OpenGL OpenGL 1980 SGI( ) IRIS GL (Graphics Library) SGI, IRIS GL SGI,, OpenGL,OpenGL ARB(Architecture Review Bord),SGI,IBM,DEC,SONY,NEC,E&S, Microsoft(WindowsNT),Integraph OpenGL Windows NT version35, API,, 4
3 OpenGL OpenGL 1 OpenGL,,X-Window 3 PEX,X-Window UNIX X-Window, X-Window,X (MS Windows X ),OpenGL, 2 OpenGL,, OpenGL, 5
4 OpenGL OpenGl OpenGL OpenGL,,,,, OpenGL, OpenGL,, OpenGL 1, 2-3,,,, 4, 5 6 7 8 9 10 11 NURBUS(NON-UniformRational B-Splin) 12 6
, ², ²,, ² X-Window UNIX ² Windows NT NT new technology,, ², ²,, ² ², ²,, ² ², ² OpenGL, 7
² OpenGL, ² ² RGBA, ², ² RGBA ² RGBA A A 10, 0,0 ², ², ²,,,, ², ² NURBUS(Non-UniformRational B-Splin), ²,, 8
²,,,,, 9
5 OpenGL OpenGL OpenGL,,,,,,,, OpenGL, OpenGL,, OpenGL X Window System UNIX Windows95 Window98 NT, OS OpenGL,,,,,OpenGL ² gl ² glu ² aux, #include <GL/glh> #include <GL/gluh> #include <auxh> /* windows <GL/glauxh>, 10
Windows98 OpenGL, Visual C++, Windows98 OpenGL, Visual C++,Visual C++ Version60,OpenGL,, Visual C++ Version60,Windows ² #include GL/glh #include windowsh ² #include GL/auxh #include GL/glauxh ² CALLBACK, 1,, [ ] [ ] ), [ ],,Opengl32lib Glu32lib Glauxlib,,, 1 11
6 3D, 2 OpenGL,, 1,,, 2 ( ) ( 1 ) ( ) 3,,, 1 : 2 : 3 : 4, : 5 : 6, glviewport(0,0,400,400); /* glmatrixmode(gl_projection);glloadidentity(); /* glortho(-20, 20, -20, 20-20, 20); /* glmatrixmode(gl_modelview);glloadidentity(); /* gllookat(00,00,20, 00,00,00, 00,10,00); /* 12
, glviewport() glviewport(0,0,400,400); void glviewport(glint x,glint y,glsizei w,glsizei h) (x,y), w, h, (00),, glmatrixmode(gl PROJECTION); glloadidentity();,glmatrixmode() "GL PROJECTION",glLoadIdentity(), void glmatrixmode(mode) "MODE", GL PROJECTION GL MODELVIEW GL TEXTURE void glloadidentity(void) 4 4,glLoadMatrix(),, " ",, ( ),, 2, 13
63 14
,, ( ),glfrustum(), glu gluperspective(),gluperspective() void gluperspective(gldouble fv,gloduble a,gldouble n,gldouble f) "fv",xy, 0 180 "a", (w/h) "n" "f", gluperspective(400,6400/4800,01,200); /* 40, 133, "n" "f", ( ) glmatrixmode(gl_modelview);/* glloadidentity();/* glulookat(00,00,50, 00,00,00, 00,10,00); /* (0,0,5), (0,0,0), Y glu glulookat(),, ( ) Z,,,,OpenGL 2,,,,OpenGL glulookat(), glulookat() 3D ( ),, glulookat() glmatrixmode() 15
void glulookat(gldouble Ex,GLdouble Ey,GLdouble Ez, GLdouble Cx,GLdouble Cy,GLdouble Cz, GLdouble Ux,GLdouble Uy,GLdouble Uz), (Ex,Ey,Ez), (Cx,Cy,Cz), " ", (Ux,Uy,Uz) "10", "00" glmatrixmode(gl_modelview);/* glloadidentity();/* glulookat(00,00,50, 00,00,00, 00,10,00); /* (0,0,5), (0,0,0), Y,,,, OpenGL void gltranslate f f j d g (TYPE x,type y,type z) void glrotate f f j d g (TYPE angle,type x,type y,type z) "angle" "x","y","z" glmatrixmode(gl_modelview); glloadidentity(); gltranslatef(100,00,00); glrotatef(300,00,10,00); auxwireteapot(10);, X 30, X 100,glTranslate() glrotate(), 16
7 OpenGL,,,, ( ),,,,,, OpenGL,AUX #include "glosh" #include <GL/glh> #include <GL/gluh> #include <GL/glauxh> void CALLBACK Key_space(void) { exit(-1); } void CALLBACK display(void) { glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); auxwireteapot(10); glrotatef((gldouble)roty,00,00,20); gltranslatef (10,00,00); glflush(); auxswapbuffers(); } void CALLBACK Reshape(GLint w,glint h) 17
{ glviewport(0,0,w,h); glmatrixmode(gl_projection); glloadidentity(); gluperspective(60,(glfloat) w/(glfloat) h,10,200); glmatrixmode(gl_modelview); glloadidentity(); gltranslatef (20,10,10); glulookat(50,00,50, 10,00,00, 00,10,00); } int main(void) { /* auxinitdisplaymode(aux_double AUX_RGBA AUX_DEPTH); auxinitposition(0,0,600,600); auxinitwindow("window name"); /* auxreshapefunc(reshape); auxkeyfunc(aux_space,key_space); /* auxmainloop(display); return(0); },,,, 1 auxinitdisplaymode(aux_double AUX_RGBA AUX_DEPTH); 2 auxinitiposition(0,0,400,400); 3 auxinitwindow("window name"); auxdisplaymode(aux DOUBLE j AUX RGBA j AUX DEPTH); OpenGL ""j"" 18
, AUX INDEX, RGB 8 RGBA AUX RGBA AUX SINGLE,,,, AUX DOUBLE, OpenGL, OpenGL Z-buer, auxinitdisplaymodede(), opengl,, glenable GL DEPTHTEST, auxinitposition(int x,int y,int w,int h) (x,y), w, h auxinitiwindow(char titlestring) titlestring 19
,,, (AUX auxmainloop) AUX, ² (,, ) ² ² ²,, ( ), auxreshapefunc(reshpe); auxkeyfunc(aux SPACE,Key dpace); Windows,, CALLBACK ( ) void CALLBACK Display(void) f g void CALLBACK Resheape(int w,int h) f g (,, ) void CALLBACK auxreshapefunc((function)(int w,int h)) 20
,, (w,h),,,glviewport(),,,, main ; auxreshapefunc(reshape); ; void CALLBACK Reshape(int w, int h); f, g void CALLBACK auxmousefunc(int button,int mode, void(function)(aux EVENTRIC)) "button" "mode", (function) AUX EVENTRIC,, data[aux MOUSEX]data[AUX MOUSEY] "button"( ) "mode"( ) main ; auxmousefunc(); ; void ; f /* /* g 21
void CALLBACK auxkeyfunc(key,void (function)(void)) (KEY) KEY 71 main ; auxkeyfunc(); ; void ;,, 22
71: AUX A "A" AUX LEFT AUX RIGHT AUX Z "Z" AUX UP AUX a "a" AUX DOWN AUX SPACE SPACE AUX Z "z" AUX ESCAPE ESC AUX 0 "0" AUX RETURN RETURN AUX 9 "9",auxMainLoop void auxmainloop(void(displayfunction)(void)),opengl, (displayfunction) main ; auxmainloop(display);/* display ; void display(void);, auxmainloop() display,,glclear() void glclear(mask) "MASK" "j"(or) GL_COLOR_BUFFER_BIT 23
GL_DEPTH_BUFFER_BIT GL_STENCIL_BUFFER_BIT GL_ACCUM_BUFFER_BIT,, glflush(),aux auxswapbuer(),, void auxswapbuer(void),,,,,,,,,,, auxswapbuer(),,,auxswapbuer(),, 24
8 glbegin() glend(),glvertex() 9, glvertex()( ),glcolor()( ), glbegin() glend(), OpenGL auxinitdisplaymode(), OpenGL,, RGB 3 RGBA 2,RGBA, RGBA " (Red)"," (Green)"," (Blue)"," (Alpha)" "00" "10",RGB OpenGL glcolor() glcolor() glcolor3f(r,g,b); R,G,B glcolor3f(), "A" "10" OpenGL glclearcolor() glclear(), glclearcolor() void glclearcolor(glclampf r,glclampf g,glclamp a) RGBA GLclampf "00" "10", "00" glvertex() glcolor() glbegin(gl\_polygon); glcolor3f(00,10,00);glvertex3f(-10,10,00);/* 25
glcolor3f(00,10,00);glvertex3f(-10,-10,00);/* glcolor3f(00,00,10);glvertex3f(10,-10,00);/* glcolor3f(10,10,10);glvertex3f(10,-10,00);/* glend();,,,,,opengl,,,,opengl,,, Nv Nv N Nv N Nv N Nv N Nv N (a) (b) 6: OpenGL, ( ),, void glshademodel(mode), 26
glshademodel(gl_smooth) glshademodel(gl_flat);,, 27
9, OpenGL,, 28
10,OpenGL 3, 3 29
11 [1],OpenGL,,, 1995 [2] C++,, SOFTBANK BOOKS, 1998 [3]C/C,,, 1999 [4] C,,, 1996 [5]C, M J,, 1998 [6] C,,, 1987 30
12 1,, 11 31