simple directmedia layervcg.isti.cnr.it/~tarini/teaching/cg06/lezione5.pdf• simple directmedia...
TRANSCRIPT
����� ������� � ���
���� ����� ��� � ������ � � � ��������� � ��������� � ���������� ����������� ��� !"��� �����# ��� �������$������ ���� �� �&%'��� (���� � ���)"�����*)"�����+����(�� ���,�-+-�.&/'-+0
$+����� �����$+����� �����$+����� �����$+����� �����21�31�31�31�35476 894:26<; :2=?>7@";A:7B; =C47D 82=?82EF :26 8
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlm^
n =Co7; 82EF 8CB2;Ap�q"; D r7474>sut�vxw yxzbyx{?|x}x~ |?��y?�x|x}�|?���x{?|?�x��yx� �x}x�x�x|?yx� ~ zb�x�� $������+��� �� ������ ����� (������ � ����*%'� ������&%'� �9��� �� ���� ����$��� ��� ������� � ��� � # � #����� � ����� ���������(���� � ��� ��� ���� ���&��/'� #�#��� �����+����+����+���������+����&�9��� �+���+����(��������+������������� (���� � ������ ��� ��� � ��� �*%'����� � (������ �� �� � ��� ��� � ����������� ��(��� ����������$�������$�� � � ���+��� � ������Z��(������ �+��� ������7� � �N�m ¡&�Z¢ £�� ¤&¥N¦m¤&§x¨ �m©�ªN«N¬mm� ¦m® «mm§<m¯N¦m¡&�
� �������� �����
�7°�¦m©Z± ²m¨ ��³ ¡<ªm ´ ªm¡&�Y³ «N�m� ¦m� ¦M¡&¤&m© ± ¤&m© ¦* * ¦mµ"¶+¬m¦N '¤&�m© ¡&�*¬N±' m·* ± ²N¯mªNN¯m¯N± ¸¥m� � «Y¸ ® ® ¹&¤&¯�º ± ¡&� ± º ¤&²m©'º ± � ® »¼� m© ± ²N± ® ½N¾�¶
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlN¿
• Simple DirectMedia Layer – cross-platform multimedia library
– GNU LGPL
– fornisce accesso (a livello abb basso) a
• audio,
• keyboard, mouse, joystick,
• windowing
• 3D hardware via OpenGL
• 2D video framebuffer.
– gira su: Linux, Windows, BeOS, MacOS X ...
– completato di librerie "figlie" per vari scopo (e.g. SDL_png per file png)
– C++À ��� � ��3 / / �����9� � � ������� � ��� � G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlmÁ
 F�6<rF F�r76 :Ã476 >7Ä26 :2=C=?:suÅ�~ zb�x~ ~ �xzby?��� yxÆ�Æ�w ��y?Çx|xw�Èxzb�xÉxzbyx{?{Êw�y?� w }x|xy?Çxw����x{?yx}xÇx�xË
main(){
init();do_my_beautiful_algorithm();exit();
}
²m�N²M¹&*·m¦N²N¦M«N¦m©m«N«m ± ¤&mµ&± �N²m±Ì ÍNÎ ÏmÐ ÑmÎ Î Ì Ò ÏÌ ÍNÎ ÏmÐ ÑmÎ Î Ì Ò ÏÌ ÍNÎ ÏmÐ ÑmÎ Î Ì Ò ÏÌ ÍNÎ ÏmÐ ÑmÎ Î Ì Ò Ï�Ó
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlNÔ
 F�6<rF F�r76 :Ã476 >7Ä26 :2=C=?:Õ Â ; p�F 82=?:u:u87qx82EF�;ÖØ× y?��yx� � �xyx��Ù ×7Ú � × y?{?|xÆ�Æ�yxÉx|?vxyx}�Çx� |xzbÆ × |x����Û
main(){
init();while (true) {get_event() ;process_event();
}} ¦m¹&¦m²N� ±'� ± «m��¸�ZÜM�Nªm¡&¦�³ � m¡&� ± ¦m© �º º º�Z¡&± ¡&� ¦NÜM*¬m±&¨ ± ²m± ¡&� © ¦�Z© ¦m¡&¥Nm«N¦�³ ÜM± ²m± Ü*± µ&µ&mµ&± �m²N¦�º º º�Z¯m¦N²m¦m© m� ±'¬NN ´ m«N«m ± ¤&mµ<± �N²m¦M¡&� ¦m¡&¡&�Z�M¬NM� ¥m© ¦NN¬M¬N± ¨ ¨ ¦m© ¦N²m� ± G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlN`
Ý :Þ=C; E7; =?:u:24�47D ; @�:7ß"; >2E8 Âáà Ý7â7ã 87:7B�826 p
#ifdef WIN32#define WIN32_LEAN_AND_MEAN#include <windows.h>#endif
#include <GL/gl.h>#include <GL/glu.h>#include <stdlib.h>#include <SDL.h>
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlNc
Ý :Þ=C; E7; =?:u:24�47D ; @�:7ß"; >2E8 Âáà Ý7â =?:2; Eint main(int argc, char **argv) { SDL_Init(SDL_INIT_VIDEO);SDL_SetVideoMode(640, 480, 0, SDL_OPENGL);
int done = 0;while ( ! done ) /* Loop, drawing and checking events */{myDrawGLScene(); /* Questa poi la vediamo */SDL_Event event;SDL_WaitEvent(&event);switch(event.type)
{ case SDL_QUIT : done = 1; break ;case SDL_KEYDOWN :
if ( event.key.keysym.sym == SDLK_ESCAPE )done = 1;
break;}
}SDL_Quit();return 1;
}
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlNä
å 87Ä2D ; > â
ÕÞæ ; B2; p�87Ä2E:ÞD :up�@�89E:CF�6 >24�48uqx>2D F 8Õuç 87p�F�; :2=?>u:9E@ ã 8ÞD è 87qx82EF >é E87@�87p�p"; F :7è�B2;�6<; B2; p�87Ä9E:26 87êÕÞë 82DA@"; @"D >uB787Ä2D ;A87q�82EYF�; âcase SDL_VIDEOEXPOSE :
myDrawGLScene(); break; ÕÞì F >7Ä2D ; :2=?>Þ; D
myDrawGLSceneB�:2DA@"; @"D >
B787Ä2D ;A87q�89EF�;
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlNí
Ý :Þ=C; E7; =?: :24�47D ; @�:7ß"; >2E8 Âáà Ý âD :Þ4:26 F 8C@ ã 8CB2; p�87Ä9E:
void DrawGLScene(){
glClear(GL_COLOR_BUFFER_BIT);
/* disegna tutto */
glFinish(); /* aspetta che sia tutto finito */SDL_GL_SwapBuffers(); /* questa fra un sec */
}
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAl�î _
à >2r7o7D 8Þo�rï ï 826<; EÄ
ð ñòóóôõö÷
ø ùúûüýü úþý ÿý ��� �� � � ���� � � � �� � � � � � � �
� ôñö÷ �÷�ñ�÷ôöö òö÷ø ÿ�ûþýý û�� � � �� � � � !�� � � �"#$% �
&'()*+ ,-. '/.
)012 1,((0/+ '
� � 3 4� �� � � � !�� #��" � �� � 3 4
� �� � � � !�4 " � �� � 3 4
Õ65 ; @�@�>2D >uF�6<r@�@�>ÞrF�; D 8C:2D D 8u:94747D ; @�:7ß"; >2E7;�; EF 826 :7F F�; q�8Ö }xyxÆ����x}xÇx|xzb|?w �87 zbyx{?|?���97 7 |xz]{?|x}x~ zb|?��w |x}x|?zbw |x{?Èxw ~ �
� � ���� � � �;:� < � = � > � � ? @ < � � A �
�%B!� C$ D
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAl�î î
à >2r7o7D 8Þo�rï ï 826<; EÄ
ð ñòóóôõö÷
ø ùúûüýü úþý ÿý ��� �� � � ���� � � � �� < � = � > � � ? @ < � � A �
� ôñö÷ �÷�ñ�÷ôöö òö÷ø ÿ�ûþýý û�� � � �� � � � !�� � � �"#$% �
&'()*+ ,-. '/.
)012 1,((0/+ '
� � 3 4� �� � � � !�� #��" � �� � 3 4
� �� � � � !�4 " � �� � 3 4
Õ65 ; @�@�>2D >uF�6<r@�@�>ÞrF�; D 8C:2D D 8u:94747D ; @�:7ß"; >2E7;�; EF 826 :7F F�; q�8Ö }xyxÆ����x}xÇx|xzb|?w �87 zbyx{?|?���97 7 |xz]{?|x}x~ zb|?��w |x}x|?zbw |x{?Èxw ~ �
� � ���� � � �;:� � � � � � � � �%B!� C$E
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAl�î ^
 F�6<rF F�r76 : n 4747D ; @�:7ß"; >2EY8GF 4Y89E ç Ý�H Âáà Ý
������������
������������ �������������� ��
����� ������ ��
��������������� ����������
����� ������ ��
��������������� ����������
������
��������������������������������������������
�������
���
�������
���
��������������������������������
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAl�î ¿
ë >2EuD >up�F�rYB2; :2=?>GI9r7; J7=?:u87p"; p�F 8Õ à ; 6 87@�F K àÖML yxzb~ |?Çxw8N�w zb|x��~ OÀ ��� ��� �����&%'�
Ö Å�~ |xÆ�Æ�w�Æ����xÈxw�Çxw8P Èx|x}9QSRÀ ���*)"�����+���������� �� ���� ������������� �&�9��� �À ��� � ��� � ��� ���������� ����� (�� � �
Ö R9T yx� ~ |xzb}xyx~ w ��y?Èxw �9T����x{?�x}x|?yUP Èx|�}9QSR
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAl�î Á
Õ F 482E ç 6 :24 ã ; @ Ý :2EYÄ2rY:7Ä78Õ Ý ; o76 826<; :GVÖ t�zb�xÆ�Æ Èx� yx~ 7 �xzb{ÖMW �xyx� ��vx|?��|x}x~ w }xyxw �?Çxw�zb���x~ w }x|xÆ
ÕGXYXYX[Z >2482EÄ2D Z >26 ÄÖ Æ�Èx|x��w 7 w ��vx|
 487@"; ï�; @ ã 8q�826]\ Z ^
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAl�î Ô
suw }xw _�w yx� {?|x}x~ |?Æ���w � �xÈxÈxyx~ �?Çxy?Å�w � w ����}UQ zbyxÈxvxw ��Æ
su�xzbyxËP Èx|x}9QSR nn nn zb��vxw ~ |x��~ �xzb| ææ ææ |x��w |9` aa aa �xyxzbÇ� (������ � ����������+��� ��� ���� � b cedgf!h i h f!jgd� ����� ��� �������� � �+��� ��3 ,+� k,+� k,+� k,+� k� ���������(����+����� ���+���*����� �
su��w�Æ��x}x�?yx}x��vx|?� | l9m8n l9o9m8p qro9p Èxzbw �Yyx~ |� ������� ��� � ��� � � �
 F >26<; :
n æ an æ an æ an æ a
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAl�î `
s ; @"; E7;AB2;A@�:7p�:sGP Èx|x}9QSR |9t�w ��� y9u�|xz]Çxw��xyxÆ�|sGQSR9v Ú QSR?�x~ w � w ~ |xÆ�Û� � ����� ��(����� %'������� ���������Z��� � � � � w�������� � ��� � �������� ����������"$����� ��� ����(�������+�������� �� ������(���� � void gluLookAt(eyex,eyey,eyez,
cx,cy,cz, upx, upy, upz);
sGQSR9vyx |9t�w �8x]�x�x� Ù�w ~xÇxw�w }x~ |xzz7 yx����w yÊ���x}?w ��Å{PsG|CÉx� | QSR9} Æ��x}x�?w�Æ��x~ ~ �xw }xÆ�w |x{?w�Ç�w8P Èx|x}9QSR?��vx|Çxw Èx|x}xÇx�x}x�?Çxy���Å{P
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAl�î c
Â�~ EF :��ÕG� rF F 8ÞD 8Cï�r�Eß"; >2E7;AB2;�F 482EYÄ2DAp�;A@ ã ; :2=?:2E> â
glSomethingXXXÖ N��x��|UO{O{OCÆ�Èx|x��w 7 w ��y Ú }x�x{?|xzb�xÛ]w �Y~ w Èx�?Çx|xw�Èxyxzbyx{?|x~ zbw ËÖ |xÆ�|x{?Èxw �xËglColor3f(float, float, float);glColor3fv( float*);7 Ë97 � �xyx~ÇxËxÇx�x�x�x� |?� � ���Ëx��|x~ ~ �xzb|ÖML |xzb��vx|9�U�{T
D{� Å{� �bty�x}x�x}?ty�]���À ����&����� � ���+��� ���g�
�
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAl�î ä
Â�~ EF :��Õ å :u:2E@ ã 8 â
glColor3b, glColor3d, glColor3f,glColor3i, glColor3s, glColor3ub,glColor3ui, glColor3us, glColor4b, glColor4d, glColor4f, glColor4i,glColor4s, glColor4ub, glColor4ui,glColor4us, glColor3bv, glColor3dv,glColor3fv, glColor3iv, glColor3sv,glColor3ubv, glColor3uiv, glColor3usv, glColor4bv, glColor4dv, glColor4fv,glColor4iv, glColor4sv, glColor4ubv, glColor4uiv, glColor4usv
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAl�î í
a :7p�:7F >Cp"r7D D >up�F :7F >Õ6� E:up�F :7F 8Þ=?:7@ ã ; EY8Ö yxÇ?|xÆ�|x{?Èxw �À ����� � ����������� ���À ������� ��� ������ �����À (���� � � ���7 yx}x}x�?Èxyxzb~ |?Çx|x� � �?Æ�~ yx~ �?���xz'zb|x}x~ |
Õ å >2D F�;A@�>2=?:2EB2;�F 4Y82E ç Ý E>9E?ï :2E7EY>ÞE�r7D D :uB2;; =C=?87B2; :7F >Ö Æ�|?}x�x}?��yx{?�xw yxzb|?� �?Æ�~ yx~ �
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlm^ _
a :7p�:7F >Cp"r7D D >up�F :7F >Õ Â F :7F >u@x>2=C476 82EYB78�\Þ=?:7F�6<; @";��<8uB2rY8up�F :7@��Apr�
Õ6� E:uB2;�I9r87p�F 8C87è�p�82=C476 8ÃD :Ã=?:7F�6<; @�8uB2;�D :7q�>26 >Ö � y?{?yx~ zbw ��|?���xzbzb|x}x~ |
Õ6� @�>2=?:2EB2;A@ ã 8Þ=?>�B2; ï�; @�:2E>Þ= :7F�6<; @";�D :7q�>26 :2E>p"r�I2rY87p�F :Þ=?:�F�6<; @�8
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlm^ î
å :7F�6<; @";s � �x~ yxËxyxÆ�Æ��x{?|?��vx|?Æ�w yx}x�?{?|x{?�xz'w _8_�yx~ |?Èx|xz]���x� �x}x}x|� ����� � ������������ ������ ��(��(��� ������ �����
����
�
�
����
�
�
������
������
����
����
����
����
����
����
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlm^ ^
å :7F�6<; @";Õ65 826M@�:2=Co7; :26 8GI9r:2D 8��ÞD :Þ=?:�F�6<; @�8uB2;�D :7q�>26 > âglMatrixMode(***);GL_MODELVIEWGL_PROJECTION
Õ65 826 6<; =C47; :7ß�ß�:26 8ÞD :Þ=?:7F�6<; @�8uB9;�D :7q�>26 >– glLoadIdentity();– glLoadMatrixf( float* m );
ÕG� rF F�;AÄ2D ;A:2D F�6<;A@�>2=?:2EB2;�=?>�B2; ï�; @�:2E>G�+=?>2D F�; 47D ; @�:2E>4826 r7E?:2D F�6 :Þ=?:7F�6<; @�8�� D :Þ=?:7F�6&; @�8u@�>26<6 82EF 8 Z
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlm^ ¿
å :7F�6<; @";ÕÞæ >7F :7ß"; >2E7;
– glRotatef(angle,ax,ay,az);ÕG� 6 :7p"D :7ß"; >2E7;– glTranslatef(dx,dy,dz);Õ Â @�:2D :7F�r76 8 � ���������� %'��� (�� �– glScalef(ax,ay,az);Õuç 82E826<; @�:– glMultMatrixf(float f*);
± ²*¯m© N¬N±
m¡&¡&¦M¬N±'© �m� mµ<± �N²m¦«mm¡&¡&N²m� ¦*«N¦m©� ´ �m© ± ¯N± ²N¦
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlm^ Á
å :7F�6<; @";Õ s ; p�F : â
void gluLookAt(eyex,eyey,eyez,cx,cy,cz,upx, upy, upz);
¤&¦m²m� © ��º �N*¬m± © ¦mµ&± �m²N¦¦m´z� ¤9�x¦;�&¦ �
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlm^ Ô
Õ F 4826 :7ß"; >2EY8up"r7D D >  F :7@�� âglPushMatrix()
glPopMatrix()
å :7F�6<; @";
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlm^ `
Õ å :7F�6<; @";AB2;�476 >2; 87ß"; >2E8 âglOrtho2D(left, right,
bottom top);void gluPerspective(
fovy,aspect,zNear,zFar);
å :7F�6<; @";AB2;�476 >2; 87ß"; >2E8
± ²*¯m© N¬N±
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlm^ c
Õ65 826Mp�87F F :26 8Þ; DAq"; 8 X 4>26 F â
glViewPort(int x, int y,
int w, int h);
6 82=C; EB7826 â ; D�6 :2474>26 F >uï�6 : X 8 ã B�87q�8u87p�px826 8ÞD >p�F 87p�p�>up"4Y87@"; ï�; @�:7F >ÞEY82D D :Þ=?:7F¼6<; @�8uB2;�476 >2; 87ß"; >2E8��
s ; 8 X 4>26 F
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlm^ ä
ì q�82EF >�� ; EB7> X5æ 87p ã :24Y8Õ Â r@�@�87B78C>7Ä9E7;Aq�>2D F :u@ ã 8ÞD rF 89EF 8@�:2=Co7; :uB2; =?82Ep"; >2E7;Z:2D D :uï�; E8�p�F�6 :Ö Çx|x���?Èx|xzb{?|x~ ~ |xzb|?yx� � T �x~ |x}x~ |?Çxw87 yxz'� �9�xÇx�xzbyx}x~ |� T w }xw _�w yx� w _8_�y9_�w �x}x|xË
Ö Éx|xÆ�~ w �x}x|?Çx|x� � T |x��|x}x~ �xË � ¬m¦m¹<�M¨ m© ¦*¬m±&²Nªm�m¹&�*± '¡&¦m�NªN«M¬N¦m &¹&± ¬N¦N�;�SDL_SetVideoMode(640,480,0, SDL_OPENGL | SDL_RESIZABLE)
...
case SDL_VIDEORESIZE :SDL_SetVideoMode(event.resize.w,event.resize.h,
0, SDL_OPENGL |SDL_RESIZABLE);myReshapeFunc(event.resize.w,event.resize.h);
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlm^ í
n B7:7F F :26 8 D :u@�:2=?826 : :2D D :uï�; EY8�p�F�6 : â476 >2; 87ß"; >2E8C>26 F >�Ä26 :7ï�; @�:void myReshapeFunc(GLsizei w, GLsizei h){glMatrixMode (GL_PROJECTION); glLoadIdentity ();float ratio=(float)h/(float)w;glOrtho2D(-1,1,-ratio,ratio);
glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_MODELVIEW);
}
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlN¿ _
æ ; @�>26 B7:26 8up�82=C476 8 âF 482E ç Ý�¡ p�F :�F 8Þ=?:7@ ã ; E8
«m© ± ÜM± � ± ¹&¦¢ ªN±
«m± £&¦N ¡� ªm� � �M± &«m± «m¦N ± ²N¦� «m© �N± ¦mµ<± �N²m¦Y³ ¡&¦m� ªm«�³ © m¡&� ¦m© ± µ&µ&mµ&± �m²N¦�º º º �
¡&� m� �*¬m±¤x«N¦m²;¥r�
���"� 4 $% � !� $"� C� � � � � $¦ � §� � � �� ¨% �¨��� � � � © ª
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlN¿ î
V >2=?8up";�«Np"4:26 :2E>�«?;AF�6<; :2EYÄ7>2D ;�E82D�47; 482D ; EY8
glBegin (GL_TRIANGLES);
glVertex3d(x1,y1,z1);glVertex3d(x2,y2,z2);glVertex3d(x3,y3,z3);
glVertex3d(x4,y4,z4);glVertex3d(x5,y5,z5);glVertex3d(x6,y6,z6);
glVertex3d(x7,y7,z7);glVertex3d(x8,y8,z8);glVertex3d(x9,y9,z9);...glEnd();
«m© ± ÜM�*� © ± m²N¯N�m �
¡&¦m¤&�m²N¬m�*� © ± m²N¯N�m �
� ¦m© µ&�M� © ± N²N¯m�N �
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlN¿ ^
V >2=?8up";�«Np"4:26 :2E>�«?;AF�6<; :2EYÄ7>2D ;�E82D�47; 482D ; EY8
glVertex3d(x,y,z);
��������� �glVertex3f(x,y,z);��������� �glVertex3i(x,y,z);��������� �glVertex2d(x,y);��������� �glVertex4d(x,y,z,w);��������� �glVertex4dv(vett);��������� � Z Z Z
¤&�m�m© ¬N± ²mm� Mµ9¬®¡&�m� � �N± ²m� ¦m¡& Ó
¤&�m�m© ¬N± ²mm� ]¯°¬�¶¡&�m� � �N± ²m� ¦m¡& Ó
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlN¿ ¿
ë >2EÊp�>2D >glBegin (GL_TRIANGLES);
± ²m¦NM¨ ± ²Nm ¦ ¢ ªNm²N¬N�¡&±'¨ * *¯N ±<²m¬;� �
G�H&I J'KMLNH'I O P'OAQ�R�K&S+T&U V W'IYXZI H<T&['O J \]QM^&_&_&`ba _'c]Q+d�P&O e&W'I \&O V f*g&W&h h i j P \<U&kbI O HAlN¿ Á
ë >2EÊp�>2D >glBegin (GL_TRIANGLES);¢ ªNm²m� ±Î Ð Ì ÑNÍ;²´³´µ Ì'Ð Ñ;¶&Î ÏmÐ Ì ··&ÑmÎ Ì«m¦m© ¢ ªNN²m� ±Ò ÏmÐ Î Ì ¸&̹mÐ ³mÌ ÏmÎ Î ÑmÎ Ì ½
�m¦M¡<«m¦m¤&± ¨ ± ¤&¥N¦¤x«m¦N²;¥9�*²m�N²«m© ¦m¡&¤&© ± ¹&�N²N� ¢ ªNm ¦¬m± m¯N�m²NN ¦*ªm¡&m© ¦º » ¼ ½ ¾ ¿ ½ ¿ ½ À Á ¾ ¿ Á¿ Â Ã Ã Ä ½ Å®À à Á Å´Á ¾ Æ Â Ç ½ È ¾ Á