$B%j%s%/(B
$B!&(BOpenGL(ver.2.1)$B$N3F4X?t(B($B>.J8;z$N(Bgl$B$N#2J8;z$G;O$^$k4X?t(B)$B$N@bL@(B
$B!&(BOpenGL$B$N(BProgramming Guide Book (ver1.1, $BDL>N@VK\(B)
8.1 OpenGL$B$K$*$1$kD>8rEj1F$NL@<(E*;XDj(B
$B$3$l$^$G$N(B(6$B@a(B,7$B@a$^$G$N(B)$B%W%m%0%i%`$G$O!"7k2LE*$KEj1FJ}K!$H$7$FD>8rEj1F$N7A$K$J$C$F$$$^$7$?!#(B
$B!ZDj<02=![(B
ic2_showMATRIX()$B$H$$$&4X?t$G!"$=$N;~E@$N(BMODELVIEW$B9TNs%9%?%C%/%H%C%W$H!"(BPROJECTIOn$B9TNs%9%?%C%/%H%C%W$H$N>uBV$rI=<($G$-$^$9!#(B
$B$3$l$K$h$C$F!"0J8e$N@bL@$G$O!"#3$B1& $B1& $B!ZM>CL![$3$NEj1F$N;~E@$G6/0z$K#3$B$?$@$7!"$3$N>l9g$O!"K>$`(BPROJECTION$B9TNs$r(B(OpenGL$B%i%$%V%i%j$N4X?t$K$h$C$FMQ0U$5$;$k$N$G$O$J$/(B)$B<+J,$G7W;;$9$kMQ0U$9$kI,MW$,$"$j$^$9!#(B
8.2 $B%&%#%s%I%&%5%$%:JQ99$K$h$k1F6A$NL58z2=(B
$B$3$l$^$G$O!"(BOpenGL$B$N%&%#%s%I%&$O@5J}7A$N7A$GI=<($5$l$F$$$^$7$?!#(B
108-2-Viewpoint.c
glutReshapeFunc()$B$r;H$C$F%&%#%s%I%&%5%$%:JQ99$r8!CN$7$^$9!#(B
$B$^$?!"$3$3$+$i$O!"(Bcallback$B$K$h$k3d$j9~$_:n6H$r$7$?$"$H!"K\BN(BglutMainLoop()$B$KLa$C$F$+$i$9$0$K:FIA2h$r$7$F$b$i$($k$h$&!"(BglutPostDisplay()$B$H$$$&4X?t$r;H$C$F4z$rN)$F$F$*$-$^$9!#(B
8.3 $B??$sCf$KMh$F$[$7$$!E(B
$B@h$N(B108-2-Viewpoint.c$B$O!"(BglutReshapeFunc()$B$GL@<(E*$K:n6H$r;X<($9$k$h$&$K$9$k$3$H$G!"$3$l$^$G(Bglut$B%i%$%V%i%j$,>! $B$$$^$$$A$J$N$G!"$3$l$rCf1{$K@_Dj$7$^$9!#(B
108-3-ViewpointCentering.c
9.1 $B%b%G%k%U%!%$%k$N%G!<%?%U%)!<%^%C%H(B
$B#19T$"$?$j!J#1%]%j%4%s$"$?$j!K$N%U%)!<%^%C%H(B
$B$3$3$G$^$:MQ0U$9$k%b%G%k$H$7$F$O!"$$$^$^$G$N(BTeapot$B$,35$M(B+/- 1.0$B$0$i$$$NBg$-$5$@$C$?$N$G!"$=$l$0$i$$$NBg$-$5$N$b$N$K$7$F$*$-$^$7$g$&!#(B
$B$3$A$i$N%b%G%k%j%9%H(B$B$K3'$5$s$N%b%G%k!J2]Bj(B3A-1$B!K$r7G:\$7$^$7$?!#(B
9.2 $B;XDj%U%!%$%k$N%*!<%W%s(B
$B$^$:$O%U%!%$%k$rFI$_9~$`%W%m%0%i%`$r:n$i$J$$$HOC$K$J$j$^$;$s!#(B
9.3 $B9TKh$NFI$_9~$_(B
$B%b%G%k%U%!%$%k$O!"#19T$:$D$K9=B$$,J($+$l$F$$$k$N$G!"FI$_9~$_$b#19T$:$D9T$$$^$9!#(B
109-3-ReadLine.c
9.4 $B%b%G%k$NFI$_9~$_(B
ic2PATCH$B9=B$BN$N(Blinked list$B$K%b%G%k%G!<%?$r9=C[$7$^$9!#(B
109-4-ReadModel.c
$B$$$h$$$h!J$d$C$H!K%b%G%k$rFI$_9~$s$GI=<($^$G$r$7$F$_$^$7$g$&!#(B
10.1 $B%U%!%$%k$NE}9g(B
108-3-ViewpointCentering.c$B$H(B
109-4-ReadModel.c$B$H$r%Y!<%9$K$7$^$9!#(B
10.2 $B4{Dj5AJ*BN$N(BOn/Off
$B0\?"[email protected]$7$^$7$?$+!)(B
110-2-MergedSource.c
10.3 $B%b%G%k$NFI$_9~$_$HI=<((B
$B9M$($F$_$l$P!"FI$_9~$s$@I=<($r$9$k$h$&$J%W%m%0%i%_%s%0$r$^$@$7$F$J$$$N$G!"(BTeapot$B$r>C$7$?$H$3$m$G0UL#$J$$$G$9$M!J5$$E$$$F$?!)!K!#(B
110-3-ModelShow.c
10.4 $BK!@~%Y%/%H%k$NIUM?(B
$B$BC1=c$J?^7A$J$i$H$b$+$/!"Bg$-$/$J$k$H$3$l$OCWL?=}$K$J$j$^$9!#(B
$BH/E82]Bj$+$J!E(B
$B%b%G%k%j%9%H(B
$B$3$A$i(B$B$K3'$5$s$N%b%G%k!J2]Bj(B3A-1$B!K$b7G:\$7$^$7$?!#(B
$B2]Bj$O$$$:$l$b(B2011/11/21,13:30 (JST)$BDs=PDy@Z$G$"$k!#(B
$B;DG0$J$,$i:#G/EY 109-4-ReadModel.c$B$r!"#2$D$NE@$K$D$$$F2~NI$;$h!#(B
$BDs=PJ*(B
$B$b$H$N%W%m%0%i%`(B109-4-ReadModel.c$B$H(B4A-1[2]$B$K$h$k$=$N2~NI$NN>J}$K$D$$$F!"(Blinked list$B$X$"$k#1$D$N(Bic2_PATCH$B9=B$BN$,DI2C$5$l$k%"%k%4%j%:%`$r!"%=!<%9%W%m%0%i%`$NH4?h$H%G!<%?9=B$$N35G0?^$NN>J}$rMQ$$$F@bL@$;$h!#(B
$BDs=PJ*(B
109-4-ReadModel.c$B$N(Bic2_PrintPATCHList()$B4X?t$K$*$$$F!"3F%Q%C%A$N%G!<%?FbMF$rI=<($9$k$N$K9g$o$;$F!"3F%Q%C%A$NK!@~%Y%/%H%k$r7W;;$7$FI=<($9$k$h$&$K%W%m%0%i%`$r2~NI$;$h!#(B
$BK\2]Bj$N2rEz$K6a$$%3!<%I$,#5=5L\$N9V5A$K9g$o$;$F8x3+$5$l$k$N$G!"CY9oDs=P$N>l9g$OE@?t$O$[$\$J$$$3$H$KCm0U!#(B
$BDs=PJ*(B
$B$7$+$7!"$3$l$O@5<0$J(BOpenGL$B$NEj1F!J6u4V$N;#A|LL$X$N
glOrtho()$B4X?t$rMQ$$$F!"(BPROJECTION$B9TNs%9%?%C%/%H%C%W$KD>8rEj1F$r
pcamp = Portho M Plocal
pcamp = Portho Pcamera
$B$3$3$G(B Portho $B$OD>8rEj1F$r
106-6$B$+$i$N:9J,(B
$B$3$3$GCm0U$9$k$Y$-$J$N$O(B3$B9T(B3$BNsL\$NMWAG$,(B-1$B$K$J$C$F$$$k$3$H$G$9!#(B
OpenGL$B$ND>8rEj1F$K4X$7$F$O!"%/%j%C%T%s%06a@\LL$r(Bz=-1, $B1sJ}LL(Bz=1$B$H$7!":81&$H>e2<$r(B-1.0$B$+$i(B1.0$B$^$G$NHO0O$H$9$k$H!"(B
glOrtho(-1, 1, -1, 1, -1, 1)
$B$H$J$j$^$9!#(B
($B87L)$K$O%+%a%i$N0LCV$O(B(0,0,0)$B$J$N$G!"%/%j%C%T%s%06u4V$r(B-1.0$B!A(B1.0$B$K$9$k$H%+%a%i$,$=$NCf$KB8:_$9$k$3$H$K$J$C$F!"5$J,E*$K$O$9$C$-$j$7$^$;$s!#(B)
($B$H$O$$$(!"%/%j%C%T%s%0LL$N(BZ$BCM$KIi$NCM$rF~$l$k$3$H$O(BOpenGL$B%i%$%V%i%j>e$G$OG'$a$i$l$F$$$k9T0Y$G$9!#(B)
$B1&
$B$^$?!"$=$l$r%5%$%:JQ99$9$k$H!"<+M3$K0z$-?-$P$7$?$j$9$k$3$H$,$G$-$^$7$?!#(B
$B$3$l$O$3$l$GJXMx$G$9$,!$@53N$J(BCG$BIA2h$r9M$($k>e$G$OM}2r$NK8$2$K$J$j$+$M$^$;$s!#(B
$B$=$3$G!"$3$3$+$i!"%&%#%s%I%&%5%$%:JQ99$rL58z2=$G$-$k$h$&$K%W%m%0%i%`$r=q$-49$($F$$$-$^$9!#(B
108-1$B$+$i$N:9J,(B
$B$3$3$G$O!"Ej1F9TNs$r%l%s%@%j%s%03+;O;~$K@5$7$/@_Dj$9$k$h$&$K$7$^$9!#(B
$B$3$l$KH<$C$F!":#8e$O%+%a%i$N%;%C%H%"%C%W$rKh%U%l!<%`9T$&$h$&$K$7$^$9!#(B
108-2$B$+$i$N:9J,(B
9. $B%b%G%k%G!<%?$NFI$_9~$_(B
X0
Y0
Z0
X1
Y1
Z1
X2
Y2
Z2
R
G
B
$B!&MWAG$N4V$O#1$D0J>e$N%9%Z!<%9(B
$B!D:E@$r(B0,1,2$B$N=g$K(B($B1&%M%8$K(B)$B$J$>$C$?$H$-$KH?;~7W2s$j$K8+$($kB&$rI=$H$9$k!J1&%M%8$N@hC$B!&(BRGB$B$O(B0.0$B!A(B1.0$B$NHO0O(B
$B!&6u9T!"%9%Z!<%9$N$_$N9T$OL5;k(B
$B!&@hF,$,(B#$B$G;O$^$k9T$O%3%a%s%H9T$H$7$FL5;k(B
2.2$B@a$N%W%m%0%i%`$r%Y!<%9$K$7$^$9!#(B
$B8e$G(B8$B@a$N%W%m%0%i%`$K
102-2$B$+$i$N:9J,(B
$B$3$N$?$a$K!"(Bfgets()$B4X?t$rMQ$$$^$9!#(B
$B$^$?!"3F9T$,M-8z$J%b%G%k9T$+$I$&$+$N3NG'$b$7$^$9!#(B
109-2$B$+$i$N:9J,(B
ic2PATCH$B9=B$BN$N(Blinked list$B$O(Bfirstmodelptr$B$G<($5$l$k%"%I%l%9$+$i3+;O$5$l$^$9!#(B
ic2PATCH$B9=B$BN$K$O(Bic2POINT$B9=B$BN#3$D$H(Bic2COLOR$B9=B$BN#1$D$,4^$^$l$^$9!#(B
109-3$B$+$i$N:9J,(B
10. $B%b%G%k%G!<%?$NFI$_9~$_$HI=<((B
$B!JK\Ev$O$3$NA0$K%=!<%9J,3d$r$7$F$*$-$?$+$C$?$N$G$9$,!"%=!<%9I=<($NET9gEy$GC10l%U%!%$%k$N$^$^$G$9!E!K(B
$B!J$"$^$jIaDL$N?M$K?d>)$9$k%3!<%I$N=q$-J}$G$O$"$j$^$;$s!E!K(B
$B8e
109-4$B$+$i$N:9J,(B
$B$G$b2?$bJQ$o$j$^$;$s$M!)(B
$B$b$7$+$7$?$i$b$H$+$iIA$$$F$$$k(BTeapot$B$,
110-1$B$+$i$N:9J,(B
$BFI$_9~$s$@J*BN%b%G%k$r$H$K$b$+$/$K$bI=<($5$;$k$h$&$K$7$^$7$g$&!#(B
110-2$B$+$i$N:9J,(B
$B2]Bj(B4. 2011/11/21$B=PBjJ,(B
$B!&!!(BTA$B$N:n6HNL7Z8:$r?^$k$?$a!"(Bmoodle$B>e$KCY1dDs=PMQ%(%s%H%j$r@_$1$k!#(B
$B!&!!$3$NCY9oDs=PMQ%(%s%H%j$OCY1d$r5vMF$9$k$b$N$G$O$J$$!J8:E@J}K!$ONcG/DL$j$B!&!!Dy@ZA0%(%s%H%j!"CY9oDs=PMQ%(%s%H%j$KF1;~$K=P$7$?>l9g$OCY9o07$$$GBgI}8:E@$K$J$k$N$GITMQ0U$KCY9oDs=P%(%s%H%j$KDs=P$7$J$$$3$H!#(B
$B!&!!CY9oDs=PMQ$N%(%s%H%j$O!":G8e$KDs=P$7$?;~4V$HFbMF$N$_$,M-8z$K$J$k!#;~4V$,7P$F$P$=$l$@$18:E@$,Bg$-$/$J$k$N$G!"ITMQ0U$K2?EY$bDs=P$7$J$$$3$H!#(B
$B!&!!CY9oDs=PMQ$N%(%s%H%j$b$"$kDxEY7P$C$?;~E@$GJD:?$9$k!#0J9_$O8x<0Ld$$9g$o$;%a!<%k%"%I%l%9$KE:IU$N7A$GAw$k$3$H!#(B
[1] 130$B9TL\$N!V(B//$BB>$N%(%i!<%H%i%C%W!W$H=q$$$F$"$kItJ,$N(Bif$BJ8$r=q$-D>$7!"6u9T!"(B#$B$G;O$^$k9T0J30$G$b%Q%C%A>pJs$,4^$^$l$F$$$k$H$O$_$J$;$J$$9T$r%9%-%C%W$G$-$k$h$&$K%W%m%0%i%`$r2~NI$9$k!#$3$N$H$-!"%9%-%C%W$9$kM}M3$rI8=`=PNO$KI=<($9$k$3$H!#(B
[2] 87$B9TL\$N(Bfirstpatchptr$B$+$i;O$^$k(Blinked list$B$X!"?7$7$$(B newpatch $B$rDI2C$9$k$H$-$K!"8=:_$NMM$K(Bfirstpatchptr$B$K0lHV6a$$$H$3$m$KA^F~$9$k$N$G$O$J$/!"(Bfirstpatchptr$B$+$iC)$k=g$HFI$_9~$_$N=g$,0lCW$9$k$h$&$K%W%m%0%i%`$rJQ99$9$k$3$H!#(B
$B%=!<%9%U%!%$%k$N@hF,9T$K%3%a%s%H$N7A$G;aL>!"3X@RHV9f!"2]BjHV9f(B(4A-1)$B$r<($9$3$H!#(B
L$BEo(B5$B3,7W;;5!<<$N(BLinux$B4D6-$K$F%3%s%Q%$%k$G$-$k$3$H!#(B
$B>e5-$N#22U=j$N%W%m%0%i%`JQ99$,$J$5$l$F$$$k$3$H!#(B
$B%W%m%0%i%`$H$7$FJQ99$r2C$($?$H$3$m$K!"F0:n@bL@$r<+J,$N8@MU$K$h$k%3%a%s%H$N7A$G=q$-2C$($F@bL@$7$F$*$/$3$H!#(B
$B%W%m%0%i%`$H$7$FJQ99$r2C$($?$H$3$m$K$O!"!V(BA4-1[1]$B!W!V(BA4-1[2]$B!W$H%3%a%s%H$N@hF,$K%?%0$r5-$7$F$*$/$3$H!#(B
$BK\Mh$N(BCG$BJ*BN%U%!%$%k$N%U%)!<%^%C%H$+$i0oC&$7$F$O$$$k$,2]Bj(B4A-1[1]$B$G<+J,$,$B%U%!%$%kL>$O(B4A-1$B$N%=!<%9%U%!%$%k$,%G%U%)%k%H$GFI$_9~$`L>A0$K$7$F$*$/$3$H!#(B
pdf$B%U%!%$%k$NKAF,$K!";aL>!"3X@RHV9f!"2]BjHV9f(B(4B-1)$B$r<($9$3$H!#(B
$B@bL@$O!V%*%j%8%J%k!W!V2~NI8e!W$=$l$>$l$K$D$$$F9T$&$3$H!#(B
$B%U%!%$%k%5%$%:$,Bg$-$/$J$i$J$$$h$&$KCm0U$9$k$3$H!#(B
$BK!@~%Y%/%H%k$OBg$-$5(B1.0$B$K$J$k$h$&@55,2=$5$l$F$$$k$3$H!#(B
$BK!@~%Y%/%H%k$NI=<($O>.?tE@0J2
$BK!@~%W%m%0%i%`$N7W;;$r30It4X?t2=$7$F$"$l$P$J$*$h$$!#(B
$B%=!<%9%U%!%$%k$N@hF,9T$K%3%a%s%H$N7A$G;aL>!"3X@RHV9f!"2]BjHV9f(B(4X-1)$B$r<($9$3$H!#(B
L$BEo(B5$B3,7W;;5!<<$N(BLinux$B4D6-$K$F%3%s%Q%$%k$G$-$k$3$H!#(B
$B%W%m%0%i%`$H$7$FJQ99$r2C$($?$H$3$m$K!"F0:n@bL@$r<+J,$N8@MU$K$h$k%3%a%s%H$N7A$G=q$-2C$($F@bL@$7$F$*$/$3$H!#(B
4A-1$B$HF10l%=!<%9$G$b9=$o$J$$$,!"$=$N>l9g$O(B4A-1$B$H(B4X-1$B$N$=$l$>$l$N%W%m%0%i%`2~JQ>l=j$,6hJL$G$-$k$h$&$K!"%3%a%s%H$N@hF,$K!V(B4X-1$B!W$H5-$9$3$H!#(B
4X-1$B$N%W%m%0%i%`$K(Bmodel-data.txt$B$rFI$_9~$^$;$?>l9g$NI8=`=PNO$rJ]B8$7$?%F%-%9%H%U%!%$%k!#(B
kameda[at]iit.tsukuba.ac.jp, 2011.