simple directmedia layer - cnrvcg.isti.cnr.it/~tarini/teaching/cg07/lez05.implementaz.pdf• simple...
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¡&ªN µ ªm¡&��¶ «N�m� ¦N� ¦M¡&¤&m© ³ ¤&m© ¦M * ¦m·"¸�¬N¦N &¤&�m© ¡&�M¬N³& N¹* ³ ´m¯NªmN¯N¯m³ º¥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 HAlN`
à :á=C; E7; =?:u:24�47D ; @�:7â"; >2E8 Ääã à7å =?:2; E
int 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 */
{SDL_Event event;SDL_WaitEvent(&event);switch(event.type)
{ case SDL_VIDEOEXPOSE: /* evento "ridisegnati" */
rendering(); /* riempi screen buffer*/break;
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 HAlNc
à :á=C; E7; =?: :24�47D ; @�:7â"; >2E8 Ääã à åD :á4:26 F 8C@ æ 8CB2; p�87Æ9E:
void rendering(){
glClear(GL_COLOR_BUFFER_BIT);
/* disegna tutto */
glFinish(); /* aspetta che sia tutto finito */SDL_GL_SwapBuffers(); /* vediamo questa fra un sec */
}
×?ç >7F : å B7:Årp�:26 p"; è�é7ê é ; Eu6<; p"4Y>7p�F :u:�Bár�E:6<; @ æ 87p�F :CB2;�6 87B26 :7ë�ZìmªNm´N¬N�M¡&N«m«N³ NÞ*�M¤&¥N¦M³ 'í�îï� ð*¬Nm¤&¤&�m© ¬N�m��Zm � © ³ ÞM¦N´m� ³'³ '¤&�N´m� ¦m¡&� �*¬m³'î�«m¦N´mñxò*«N�m� © ¦N¹N¹m¦*´m�N´¦m¡&¡&¦m© ¦*´N¦mÞ*Þ*¦m´N�*m� � ³ »<� Õ�Z«m�m� © ¦N¹m¹N¦m© �*¦m¡&¡&¦m© ¤&³&¦m»&¦N´m� ³'«N³ óM³ Þ*«m�m© � m´N� ³&¬m]«m© �m¤&¦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ô
Ä 8uq�>7Æ2D ; >á6<; B2; p�87Æ9E:26 8ÅD :up�@�89E:7õ
×uö :7Bu87p�82=C47; >9÷7; Eu6<; p"4>7p�F :u:�BÅr7Eu; E74�rF�B782D D øbrF 82EF 8@ æ 8 æ :u@�:2=Co7; :áD :Cp�@�82EY:2÷7; D�4�r7EF >CB2;Aq"; p�F :2÷Y87F @�ùØûú �x}ú �x}ú �x}ú �x}�Í ü yx����w �?�x}?zb|x}xÉx|xzbw }xË� ������� � ������� ���� ������� ���� �����+������� �������� � � ����� ����� ��(�� �Øûý yxÍý yxÍý yxÍý yxÍ {?w�yx�x~ �xþb{?yx}xÉx�?�x}?È�|xËx}xyx� |ÌÉxw Ù zbw Éxw È�|xËx}xyx~ w Ù� � ������������� ���� � � ����� ���� � ÿ ������� � ������� ���+���
/* ci automandiamo un messaggio che (s.o. permettendo)ci fara' ridisegnare la finestra*/
void updateScene(){
SDL_Event e;e.type=SDL_VIDEOEXPOSE;SDL_PushEvent(&e); // metto il segnale nella coda degli
// eventi da processare} 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Æ
� ������
� ����� ��� �� ��� �� � � ������� � � ��� !" # $ % & ' % (
) ��� *�+�,� � ��� �-���� �./ � � ��0 1 ��� 2 3����1 � 2 ��4�5�6�7 2
89:;<= >?@ 9A@
;BCD C>::BA= 90 � 1 E �F
� ��0 1 ��� 2 3����0 ��5�����4 1 20 � 1 E �F
� ��0 1 ��� 2 3����F� 4 1 20 � 1 E �F
×HG ; @�@�>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 ��ü zbyx{?|?���xü ü |xz]{?|x}x~ zb|?��w |x}x|?zbw |x{?Êxw ~ �
� � ������� � � ���JI" K & L % M ' $ N O K % & P (
��7Q�2 R���6 S
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Æ
� ������
� ����� ��� �� ��� �� � � ������� � � ��� !" K & L % M ' $ N O K % & P (
) ��� *�+�,� � ��� �-���� �./ � � ��0 1 ��� 2 3����1 � 2 ��4�5�6�7 2
89:;<= >?@ 9A@
;BCD C>::BA= 90 � 1 E �F
� ��0 1 ��� 2 3����0 ��5�����4 1 20 � 1 E �F
� ��0 1 ��� 2 3����F� 4 1 20 � 1 E �F
×HG ; @�@�>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 ��ü zbyx{?|?���xü ü |xz]{?|x}x~ zb|?��w |x}x|?zbw |x{?Êxw ~ �
� � ������� � � ���JI" # $ % & ' % ( ��7Q�2 R���6T
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�� ^
U 82=C; EB7826
Scheda Grafica
Driver Scheda grafica
API
Applicazioni
Monitor
Algoritmi
SDK
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=?>WV9r7; ÷7=?:u87p"; p�F 8× ã ; 6 87@�F X ãØZY yxzb~ |?Éxw\[�w zb|x��~ ] ��� ��� �����&%'�
Ø Ç�~ |xÈ�È�w�È����xÊxw�Éxw\^ Êx|x}`_ba ���*)"�����+���������� �� ���� ������������� �&�9��� � ��� � ��� � ��� ���������� ����� (�� � �
Ø a`c yx� ~ |xzb}xyx~ w ��y?Êxw �`c����x{?�x}x|?yd^ Êx|�}`_ba
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�� Ã
×We 482Edf 6 :24 æ ; @ à :2EYÆ2rY:7Æ78× à ; o76 826<; :WgØ t�zb�xÈ�È Êx� yx~ ü �xzb{ØZh �xyx� ��vx|?��|x}x~ w }xyxw �?Éxw�zb���x~ w }x|xÈ
× ëûëûëji >2482EÆ2D i >26 ÆØ È�Êx|x��w ü w ��vx|
Ä 487@"; ��; @ æ 8q�826lkmi 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 HAl�� Ö
suw }xw o�w yx� {?|x}x~ |?È���w � �xÊxÊxyx~ �?Éxy?Ç�w � w ����}d_ zbyxÊxvxw ��È
su�xzbyxÍ^ Êx|x}`_ba nn nn zb��vxw ~ |x��~ �xzb| UU UU |x��w |`p qq qq �xyxzbÉ� (������ � ����������+��� ��� ���� � r sutwv�x y x v�zwt� ����� ��� �������� � �+��� ��3 ,+� {,+� {,+� {,+� { || || } ~ �} ~ �} ~ �} ~ � � � � � � �� � � � � �� � � � � �� � � � � �� ���������(����+����� ���+���*����� �
su��w�È��x}x�?yx}x��vx|?� | �`�\� �`�`�\� ���`� Êxzbw �Yyx~ |� ������� ��� � ��� � � �
Ä F >26<; :
n�U qn�U qn�U qn�U q
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�� ß
� ; @"; E7;AB2;A@�:7p�:sW^ Êx|x}`_ba |`��w ��� y`��|xz]Éxw��xyxÈ�|sW_ba`� Ü _ba?�x~ w � w ~ |xÈ�Ý� � ����� ��(����� %'������� ���������Z��� � � � � ��������� � ��� � �������� ����������"$����� ��� ����(�������+�������� �� ������(���� � void gluLookAt(eyex,eyey,eyez,
cx,cy,cz, upx, upy, upz);
sW_ba`��� |`��w � � �x�x� Û�w ~xÉxw�w }x~ |xzbü yx����w yÌ���x}?w ��Ç�^sW_ba`��� Ü �`�\� �`�`�\� �`�������`�`�`� �`� Ý]È�w��������xÊxy?Éx|x� � |?|xÈ�~ |x}xÈ�w �x}xwsW�CËx� | _ba` È��x}x�?w�È��x~ ~ �xw }xÈ�w |x{?w�É�w\^ Êx|x}`_ba?��vx|Éxw Êx|x}xÉx�x}x�?Éxy���Ç�^
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 :¤£×W¥ rF F 8áD 8���r�Eâ"; >2E7;AB2; e 482EYÆ2DAp�;A@ æ ; :2=?:2E> å
glSomethingXXXØ [��x��|d]�]�]CÈ�Êx|x��w ü 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*);ü Íxü � �xyx~ÉxÍxÉx�x�x�x� |?� � ���Íx��|x~ ~ �xzb|ØZY |xzb��vx|`¦d��c
Sú Ç�§ þbt�¨x}x�x}?t�©l©«ª
 ����&����� � ���+��� ���w¬�
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 :¤£×H :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�� ô
q :7p�:7F >Cp"r7D D >up�F :7F >×H® E:up�F :7F 8á=?:7@ æ ; EY8Ø yxÉ?|xÈ�|x{?Êxw � ����� � ����������� ��� ������� ��� ������ ����� (���� � � ���ü yx}x}x�?Êxyxzb~ |?Éx|x� � �?È�~ yx~ �?���xz'zb|x}x~ |
×H >2D F�;A@�>2=?:2EB2; e 4Y82E�f à E>9Ed� :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^ _
q :7p�:7F >Cp"r7D D >up�F :7F >× Ä F :7F >u@x>2=C476 82EYB78�ká=?:7F�6<; @"; ö 8uB2rY8up�F :7@°¯Ap�ù
×H® E:uB2;±V9r87p�F 8C8¤²�p�82=C476 8ÅD :Å=?:7F�6<; @�8uB2;�D :7q�>26 >Ø � y?{?yx~ zbw ��|?���xzbzb|x}x~ |
×H³ @�>2=?:2EB2;A@ æ 8á=?>�B2; ��; @�:2E>á=û:7F�6<; @";�D :7q�>26 :2E>p"r´V2rY87p�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 o\o�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<; @";×HG 826M@�:2=Co7; :26 8WV9r:2D 8�¶áD :á=?:�F�6<; @�8uB2;�D :7q�>26 > åglMatrixMode(***);GL_MODELVIEWGL_PROJECTION
×HG 826 6<; =C47; :7â�â�:26 8áD :á=?:7F�6<; @�8uB9;�D :7q�>26 >– glLoadIdentity();– glLoadMatrixf( float* m );
×W¥ rF F�;AÆ2D ;A:2D F�6<;A@�>2=?:2EB2;�=?>�B2; ��; @�:2E> ö =?>2D F�; 47D ; @�:2E>4826 r7E?:2D F�6 :á=?:7F�6<; @�87ù D :á=?:7F�6&; @�8u@�>26<6 82EF 8mi
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<; @";× U >7F :7â"; >2E7;
– glRotatef(angle,ax,ay,az);×W¥ 6 :7p"D :7â"; >2E7;
– glTranslatef(dx,dy,dz);× Ä @�:2D :7F�r76 8 � ���������� %'��� (�� �
– glScalef(ax,ay,az);× f 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<; @";× � ; p�F : å
void gluLookAt(eyex,eyey,eyez,cx,cy,cz,upx, upy, upz);
¤&¦m´m� © ��¼ òN*¬m³ © ¦m·&³ �m´N¦¦mµ�· ¤`¸x¦J¹&¦ º
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^ Ö
×We 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^ ß
×H :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
¨ ³ ¦N ¬*�m¨m»<³ ¦¼»¡&ªm l½·¿¾¼À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^ `
×HG 826Mp�87F F :26 8á; DAq"; 87ë 4>26 F å
glViewPort(int x, int y,
int w, int h);
6 82=C; EB7826 å ; D�6 :2474>26 F >W��6 :uë 8 æ B�87q�8u87p�px826 8áD >p�F 87p�p�>up"4Y87@"; ��; @�:7F >áEY82D D :á=?:7F¾6<; @�8uB2;�476 >2; 87â"; >2E8ÂÁ
� ; 87ë 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^ c
à q�82EF >�Ä ; EB7>7ë U 87p æ :24Y8× Ä r@�@�87B78C>7Æ9E7;Aq�>2D F :u@ æ 8áD ø rF 89EF 8@�:2=Co7; :uB2; =?82Ep"; >2E7;Z:2D D :W��; E8�p�F�6 :Ø Éx|x���?Êx|xzb{?|x~ ~ |xzb|?yx� � c �x~ |x}x~ |?Éxw�ü yxz'� �`¨xÉx�xzbyx}x~ |� c w }xw o�w yx� w o\o�y`o�w �x}x|xÍ
Ø Ëx|xÈ�~ w �x}x|?Éx|x� � c |x��|x}x~ �xÍ · ¬m¦m»<�M¨ m© ¦*¬m³&´Nªm�m»&�*³ '¡&¦m�NªN«M¬N¦m &»&³ ¬N¦N�Jº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 :W��; EY8�p�F�6 : å476 >2; 87â"; >2E8C>26 F >�Æ26 :¤��; @�: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Á _
U ; @�>26 B7:26 8up�82=C476 8 åe 482E�f à´Å p�F :�F 8á=?:7@ æ ; E8
«m© ³ Þ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´mñ�ò
����4�2 F 6�7 � 3�2 6�4�2 R�2 0 1 � 1 6Ç ��0 È�0 � 1 1 ��� �É7 �É��� 1 � 2 Ê ��Ë
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Á �
gû>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Á ^
gû>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);��������� ��i i i
¤&�m�m© ¬N³ ´mm� M·`ÍÏΡ&�m� � �N³ ´m� ¦m¡& Õ
¤&�m�m© ¬N³ ´mm� l»ÐÍ�¸¡&�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 ¦*ìmªNm´N¬N�¡&³'¨ * *¯N Ñ<´m¬J· º
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´m� ³Ð Ò Î ÓNÏJÒ¼Ó¼Ô Î'Ò ÓJÕ&Ð ÑmÒ Î Ö�Ö&ÓmРΫm¦m©ZìmªNN´m� ³Ô ÑmÒ Ð Î ×&Î�ØmÒ ÓmÎ ÑmÐ Ð ÓmÐ Î ¿
òm¦M¡<«m¦m¤&³ ¨ ³ ¤&¥N¦îx«m¦N´mñxò*´m�N´«m© ¦m¡&¤&© ³ »&�N´N�MìNªNm ¦¬m³ m¯N�m´NN ¦*ªm¡&m© ¦| Ù Ú Û Ü } Û } Û Ý Þ Ü } Þ} ~ � � ß Û àÏÝ � Þ à¼Þ Ü á ~ â Û ã Ü Þ