Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… ·...

44
OpenGL Konfiguracja środowiska Hello World Renderowanie w GL Sterowanie Linki Wstęp do sieci neuronowych, Laboratorium 11 OpenGL Jaroslaw Piersa 2010-12-21 Jaroslaw Piersa WSN 2010/2011 Laboratorium 11

Transcript of Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… ·...

Page 1: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Linki

Wstęp do sieci neuronowych, Laboratorium 11OpenGL

Jarosław Piersa

2010-12-21

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 2: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Linki

1 OpenGLLinki

2 Konfiguracja środowiskaLinuxWindows

3 Hello WorldStyl terminalowyEclipse

4 Renderowanie w GLProste kształtyPredefiniowane kształty

5 SterowanieKontrola klawiaturyKontrola myszkiWspółrzędne sferyczne

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 3: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Linki

OpenGL

strona www http://www.opengl.org/

online API http://www.opengl.org/sdk/docs/man/

Bindingi OpenGL dla Javy (JOGL)http://kenai.com/projects/jogl/pages/Home

API JOGLhttp://download.java.net/media/jogl/jogl-2.x-docs/

Tutorial do JOGL http://jerome.jouvie.free.fr/opengl-tutorials/Tutorials1-5.php

Teoretyczne podstawy grafiki 3d (i jak się to przekłada naprogramowanie w GL) http://jerome.jouvie.free.fr/opengl-tutorials/Lessons.php

SDL http://www.libsdl.org/

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 4: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Linki

OpenGL

strona www http://www.opengl.org/

online API http://www.opengl.org/sdk/docs/man/

Bindingi OpenGL dla Javy (JOGL)http://kenai.com/projects/jogl/pages/Home

API JOGLhttp://download.java.net/media/jogl/jogl-2.x-docs/

Tutorial do JOGL http://jerome.jouvie.free.fr/opengl-tutorials/Tutorials1-5.php

Teoretyczne podstawy grafiki 3d (i jak się to przekłada naprogramowanie w GL) http://jerome.jouvie.free.fr/opengl-tutorials/Lessons.php

SDL http://www.libsdl.org/

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 5: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Linki

OpenGL

strona www http://www.opengl.org/

online API http://www.opengl.org/sdk/docs/man/

Bindingi OpenGL dla Javy (JOGL)http://kenai.com/projects/jogl/pages/Home

API JOGLhttp://download.java.net/media/jogl/jogl-2.x-docs/

Tutorial do JOGL http://jerome.jouvie.free.fr/opengl-tutorials/Tutorials1-5.php

Teoretyczne podstawy grafiki 3d (i jak się to przekłada naprogramowanie w GL) http://jerome.jouvie.free.fr/opengl-tutorials/Lessons.php

SDL http://www.libsdl.org/

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 6: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

LinuxWindows

C++ plus Eclipse

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 7: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

LinuxWindows

Instalacja (Linux / yum)

[piersaj () yavarel ~]$ sudo yum install sdl*[piersaj () yavarel ~]$ sudo yum install kmod -nvidia*

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 8: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

LinuxWindows

Biblioteki GL (Linux)

[piersaj () yavarel ~]$ ls /usr/lib/libGL*(...)/usr/lib/libGL.la/usr/lib/libGL.so/usr/lib/libGL.so.1/usr/lib/libGL.so.1.2/usr/lib/libGL.so .195.36.24/usr/lib/libGL.so .195.36.24/usr/lib/libGLU.so/usr/lib/libGLU.so.1/usr/lib/libGLU.so .1.3.070802

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 9: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

LinuxWindows

Biblioteki SDL (Linux)

[piersaj () yavarel ~]$ ls /usr/lib/libSDL*/usr/lib/libSDL -1.2. so.0/usr/lib/libSDL -1.2. so .0.11.3/usr/lib/libSDL.so(...)

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 10: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

LinuxWindows

Pliki nagłówkowe GL (Linux)

[piersaj () yavarel ~]$ ls /usr/include/GL/glext.h glu.h glx.hgl.h glu_mangle.h glxint.hgl_mangle.h glxext.h (...)

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 11: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

LinuxWindows

Pliki nagłówkowe SDL (Linux)

[piersaj () yavarel ~]$ ls /usr/include/SDL/begin_code.h SDL_endian.h SDL_main.hclose_code.h SDL_error.h SDL_mouse.hSDL_active.h SDL_events.h SDL_mutex.hSDL_audio.h SDL_getenv.h SDL_name.hSDL_byteorder.h SDL.h SDL_opengl.hSDL_cdrom.h SDL_joystick.h SDL_platform.hSDL_config.h SDL_keyboard.h (...)SDL_config -i386.h SDL_keysym.hSDL_cpuinfo.h SDL_loadso.h

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 12: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

LinuxWindows

Instalacja — Windows

MinGW

msys / cygwin

Eclipse CDT

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 13: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

LinuxWindows

Instalacja — Windows

MinGW

msys / cygwin

Eclipse CDT

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 14: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

LinuxWindows

Instalacja — Windows

Zmienne środowiskowe

katalog MinGW \ bin

katalog msys \ bin

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 15: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

LinuxWindows

Biblioteki (Windows)

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 16: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

LinuxWindows

Pliki nagłówkowe (Windows)

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 17: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Styl terminalowyEclipse

main.cpp

#inc lude <GL/ g l . h>#inc lude <GL/ g l u . h>#inc lude <SDL/SDL . h>#def ine window width 800#def ine w i n d o w h e i g h t 600

i n t main ( i n t argc , char ∗∗ a r g v ) {// i n i c j a l i z a c j a oknaSDL Init ( SDL INIT VIDEO ) ;const SDL Video In fo ∗ i n f o = SDL GetVideoInfo ( ) ;i n t v i d F l a g s = SDL OPENGL | SDL GL DOUBLEBUFFER ;i f ( i n f o−>h w a v a i l a b l e ){ v i d F l a g s |= SDL HWSURFACE;}

e l s e{ v i d F l a g s |= SDL SWSURFACE ;}

( . . . )Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 18: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Styl terminalowyEclipse

main.cpp

( . . . )i n t bpp = i n f o−>vfmt−>B i t s P e r P i x e l ;SDL SetVideoMode ( window width ,

window he ight , bpp , v i d F l a g s ) ;

// i n i c j a l i z a c j a GL :glViewport ( 0 , 0 , window width , w i n d o w h e i g h t ) ;glMatrixMode ( GL PROJECTION ) ;glEnable ( GL DEPTH TEST ) ;gluPerspect ive ( 45 , ( f l o a t ) window width /

window he ight , . 1 , 100 ) ;glMatrixMode ( GL MODELVIEW ) ;( . . . )

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 19: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Styl terminalowyEclipse

main.cpp

whi le ( e v e n t s ( ) ){

g l C l e a r ( GL COLOR BUFFER BIT | GL DEPTH BUFFER BIT ) ;g lLoadIdent i ty ( ) ;

// tu ry su j emy ob i e k t y

SDL GL SwapBuffers ( ) ;} // wh i l ereturn 0 ;

} // main

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 20: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Styl terminalowyEclipse

main.cpp

// obs l uga zda r zen

bool e v e n t s ( ){SDL Event e v e n t ;i f ( SDL PollEvent(& e v e n t ) ){

switch ( e v e n t . t y p e ){case SDL QUIT : return f a l s e ;d e f a u l t : break ;

// obs l uga innych zda r zen

} // sw i t ch} // i freturn true ;

} // e v en t s

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 21: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Styl terminalowyEclipse

Kompilacja

Linux:

[ p i e r s a j ( ) y a v a r e l ˜ ] $ g++ −Wall −o program−lGL −lGLU −lSDL program . cpp

Windows:

> g++.exe −Wall −o program . exe−lopengl32 −l g lu32 −lSDL program . cpp

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 22: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Styl terminalowyEclipse

OpenGL + Eclipse (Linux)

Tutorial http://www.ferdychristant.com/blog/articles/DOMM-72MPPE

Project → Properties → C/C++ Build → Settings → GCCG++ Linker → LibrariesLibraries (-l) dodajemy:

GLGLUSDL(...)

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 23: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Styl terminalowyEclipse

OpenGL + Eclipse (Linux)

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 24: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Styl terminalowyEclipse

OpenGL + Eclipse (Windows)

Nazwy bibliotek na Windows:Libraries (-l) dodajemy:

opengl32glu32SDL(...)

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 25: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Styl terminalowyEclipse

OpenGL + Eclipse (Windows)

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 26: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Proste kształtyPredefiniowane kształty

Linie

void r y s u j M o j O b i e k t (Obiekt & o ){

g l B e g i n ( GL LINES ) ;g l C o l o r 3 f ( 1 , 1 , 1 ) ;g l V e r t e x 3 f (−1 , 1 , . 5 ) ;g l C o l o r 3 f ( 1 , 1 , 1 ) ;g l V e r t e x 3 f ( 1 , −1, . 5 ) ;g lEnd ( ) ;} // r y s u j ( )

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 27: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Proste kształtyPredefiniowane kształty

Punkty

g l P o i n t S i z e ( 7 ) ;g l B e g i n ( GL POINTS ) ;g l C o l o r 3 f ( 1 , 0 , 0 ) ;g l V e r t e x 3 f (−2 , 2 , 0 . 5 ) ;g l C o l o r 3 f ( 0 , 1 , 0 ) ;g l V e r t e x 3 f ( 2 , −2, 3 . 0 ) ;g l C o l o r 3 f ( 0 , 0 , 1 ) ;g l V e r t e x 3 f (−2 , −2, −5);g l C o l o r 3 f ( 1 , 1 , 1 ) ;g l V e r t e x 3 f ( 0 , 0 , −40);g l C o l o r 3 f ( . 9 , . 3 , . 8 ) ;g l V e r t e x 3 f ( 3 . 4 , + 2 . 1 , − . 9 9 ) ;g lEnd ( ) ;

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 28: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Proste kształtyPredefiniowane kształty

Linie

g l L i n e W i d t h ( 5 ) ;g l B e g i n ( GL LINE STRIP ) ;g l C o l o r 3 f ( 1 , 1 , 1 ) ;g l V e r t e x 3 f (−1 , 1 , . 5 ) ;g l C o l o r 3 f ( . 5 , . 5 , . 5 ) ;g l V e r t e x 3 f ( 1 , −1, . 5 ) ;g l C o l o r 3 f ( 1 , 0 , 0 ) ;g l V e r t e x 3 f (−1 , −1, . 5 ) ;g l C o l o r 3 f ( 0 , 0 , 1 ) ;g l V e r t e x 3 f ( 1 , 1 , . 5 ) ;g lEnd ( ) ;

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 29: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Proste kształtyPredefiniowane kształty

Trójkąty

g l B e g i n ( GL TRIANGLES ) ;g l C o l o r 3 f ( 1 , 0 , 0 ) ;g l V e r t e x 3 f (−2 , 2 , 0 . 5 ) ;g l C o l o r 3 f ( 0 , 1 , 0 ) ;g l V e r t e x 3 f ( 2 , −2, 3 . 0 ) ;g l C o l o r 3 f ( 0 , 0 , 1 ) ;g l V e r t e x 3 f (−2 , −2, −5);g lEnd ( ) ;

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 30: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Proste kształtyPredefiniowane kształty

Czworoboki

g l B e g i n (GL QUADS ) ;g l C o l o r 3 f ( 1 , 0 , 0 ) ;g l V e r t e x 3 f (−2 , 2 , 0 . 5 ) ;g l C o l o r 3 f ( 0 , 0 , 1 ) ;g l V e r t e x 3 f (−2 , −2, −5);g l C o l o r 3 f ( 0 , 1 , 0 ) ;g l V e r t e x 3 f ( 2 , −2, 3 . 0 ) ;g l C o l o r 3 f ( . 9 , . 3 , . 8 ) ;g l V e r t e x 3 f ( 3 . 4 , + 2 . 1 , − . 9 9 ) ;g lEnd ( ) ;

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 31: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Proste kształtyPredefiniowane kształty

Czworoboki

g l B e g i n (GL QUADS ) ;g l C o l o r 3 f ( 1 , 0 , 0 ) ;g l V e r t e x 3 f (−2 , 2 , 0 . 5 ) ;

// z am i e n i l i smy k o l e j n o s c// ry sowan i ag l C o l o r 3 f ( 0 , 1 , 0 ) ;g l V e r t e x 3 f ( 2 , −2, 3 . 0 ) ;g l C o l o r 3 f ( 0 , 0 , 1 ) ;g l V e r t e x 3 f (−2 , −2, −5);

g l C o l o r 3 f ( . 9 , . 3 , . 8 ) ;g l V e r t e x 3 f ( 3 . 4 , + 2 . 1 , − . 9 9 ) ;g lEnd ( ) ;

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 32: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Proste kształtyPredefiniowane kształty

Wielokąt

g l B e g i n (GL POLYGON ) ;g l C o l o r 3 f ( 1 , 0 , 0 ) ;g l V e r t e x 3 f (−2 , 2 , −1);g l C o l o r 3 f ( 0 , 0 , 1 ) ;g l V e r t e x 3 f (−2 , −2, −1);g l C o l o r 3 f ( 0 , 1 , 0 ) ;g l V e r t e x 3 f ( 2 , −2, −1);g l C o l o r 3 f ( . 9 , . 3 , . 8 ) ;g l V e r t e x 3 f ( 3 . 4 , + 2 . 1 , −1 ) ;g l C o l o r 3 f ( . 1 , . 9 , . 7 ) ;g l V e r t e x 3 f ( 0 . 4 , + 5 . 1 , −1 ) ;// ( . . . )glEnd ( ) ;

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 33: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Proste kształtyPredefiniowane kształty

Z-bufor

g l D i s a b l e ( GL DEPTH TEST ) ;

g l B e g i n ( GL LINES ) ;g l V e r t e x 3 f (−2 , 2 , −10.0) ;g l V e r t e x 3 f (+2 , −2, −10.0) ;g lEnd ( ) ;

g l B e g i n (GL QUADS ) ;g l V e r t e x 3 f (−1 , 1 , −20);g l V e r t e x 3 f ( 1 , 1 , −20);g l V e r t e x 3 f ( 1 , −1, −20);g l V e r t e x 3 f (−1 , −1, −20);g lEnd ( ) ;

g l B e g i n ( GL TRIANGLES ) ;g l V e r t e x 3 f (− .5 , −.5 , −15);g l V e r t e x 3 f ( . 5 , −.5 , −15);g l V e r t e x 3 f ( 0 , . 5 , −15);g lEnd ( ) ;

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 34: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Proste kształtyPredefiniowane kształty

Sfera

GLUquadric ∗ s p h e r e= gluNewQuadr ic ( ) ;

glPolygonMode (GL FRONT AND BACK ,GL LINE ) ;

g l T r a n s l a t e f ( xpos , ypos , −10);g l R o t a t e f ( ang le , 0 , 0 , 1 ) ;g l S c a l e f ( 1 , y s c a l e , 1 ) ;

g l u S p h e r e ( s p h e r e , 1 , 10 , 1 0 ) ;g l L o a d I d e n t i t y ( ) ;

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 35: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Proste kształtyPredefiniowane kształty

Dysk

GLUquadric ∗ d i s k= gluNewQuadr ic ( ) ;

glPolygonMode (GL FRONT AND BACK ,GL LINE ) ;

g l T r a n s l a t e f ( xpos , ypos , −10);g l S c a l e f ( 1 , y s c a l e , 1 ) ;g l C o l o r 3 f ( 1 , 1 , 1 ) ;

g l u D i s k ( d i s k , . 5 , 2 , 6 , 4 ) ;g l L o a d I d e n t i t y ( ) ;

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 36: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Kontrola klawiaturyKontrola myszkiWspółrzędne sferyczne

Klawiatura

bool k l a w i s z N a w i g a c j a [ 3 2 1 ] ;

void o b s l u g a K l a w i a t u r y ( SDL Event e v e n t ){switch ( e v e n t . t y p e ){

case SDL KEYDOWN :k l a w i s z N a w i g a c j a [ e v e n t . key . keysym . sym ]= true ;break ;

case SDL KEYUP :k l a w i s z N a w i g a c j a [ e v e n t . key . keysym . sym ]= f a l s e ;break ;

} // i f} // ob s l u g aK l aw i a t u r y

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 37: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Kontrola klawiaturyKontrola myszkiWspółrzędne sferyczne

Klawiatura

void o b s l u g a K l a w i s z y N a w i g a c y j n y c h ( ){i f ( k l a w i s z N a w i g a c j a [ SDLK UP ] ) { . . . }i f ( k l a w i s z N a w i g a c j a [SDLK DOWN] ) { . . . }i f ( k l a w i s z N a w i g a c j a [ SDLK a ] ) { . . . }( . . . )

} // obs l ugaK law i s z yNaw igacy j nych ( )

bool e v e n t s ( ){SDL Event e v e n t ;i f ( SDL Pol lEvent (& e v e n t ) ) {

( . . . )o b s l u g a K l a w i a t u r y ( e v e n t ) ;

} // i fo b s l u g a K l a w i s z y N a w i g a c y j n y c h ( ) ;return true ;

} // e v en t sJarosław Piersa WSN 2010/2011 Laboratorium 11

Page 38: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Kontrola klawiaturyKontrola myszkiWspółrzędne sferyczne

Myszka

bool myszkaWci sn i e ta ;i n t myszkaPosX = −1, myszkaPosY = −1;

void o b s l u g a M y s z k i ( SDL Event e v e n t ){i f ( e v e n t . t y p e == SDL MOUSEBUTTONDOWN &&

e v e n t . but ton . but ton == SDL BUTTON LEFT){myszkaWci sn i e ta = true ;return ;

} // f ii f ( e v e n t . t y p e == SDL MOUSEBUTTONUP &&

e v e n t . but ton . but ton == SDL BUTTON LEFT){myszkaWci sn i e ta = f a l s e ;myszkaPosX = myszkaPosY = −1;return ;

} // f i} // obs lugaMyszk i

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 39: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Kontrola klawiaturyKontrola myszkiWspółrzędne sferyczne

Myszka

bool myszkaWci sn i e ta ;i n t myszkaPosX = −1;i n t myszkaPosY = −1;

void obs lugaRuchuMyszk i ( SDL Event e v e n t ){i f ( ! myszkaWci sn i e ta )

return ;i f ( myszkaPosX == −1){

myszkaPosX = ( i n t ) e v e n t . motion . x ;myszkaPosY = ( i n t ) e v e n t . motion . y ;

} e l s e {( . . . )

} // i f} // obs lugaRuchuMyszk i

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 40: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Kontrola klawiaturyKontrola myszkiWspółrzędne sferyczne

Myszka

void o b s l u g a K o l k a M y s z k i ( SDL Event e v e n t ){

i f ( e v e n t . but ton . but ton == SDL BUTTON WHEELDOWN){( . . . )

} // f i

i f ( e v e n t . but ton . but ton == SDL BUTTON WHEELUP){( . . . )

} // f i} //

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 41: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Kontrola klawiaturyKontrola myszkiWspółrzędne sferyczne

Współrzędne sferyczne

Kamera porusza się po sferze o środku w punkcie (0, 0, 0) i promieniuR.Parametry opisujące kamerę we współrzędnych sferycznych:

r2 — promień sfery (do kwadratu)

α — kąt obrotu w poziomie [0,+2π)

β — kąt nachylenia kamery do płaszczyzny [−π2 ,

π2 )

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 42: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Kontrola klawiaturyKontrola myszkiWspółrzędne sferyczne

Współrzędne sferyczne

Przeliczenie współrzędnych sferycznych na euklidesowe (R3)

x = r cosαsinβ

z = r sinα sinβ

y = r sinβ

Uwaga! W OpenGL oś y jest domyślnie pionową, dletego„zamienione” są wzory dla y i z .

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 43: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Kontrola klawiaturyKontrola myszkiWspółrzędne sferyczne

Współrzędne sferyczne

Ustawienie kamery we współrzędnych sferycznych:

// na j p i e rw s i e odsuwamyg l T r a n s l a t e f ( 0 , 0 , − r ) ;// potem nachyamyg l R o t a t e f ( beta , 1 , 0 , 0 ) ;// d a l e j obracamy wokol k o s t k ig l R o t a t e f ( a lpha , 0 , 1 , 0 ) ;

g l P u s h M a t r i x ( ) ;// t e r a z ry su j emy co nam j e s t po t r z ebneg l P o p M a t r i x ( ) ;

Jarosław Piersa WSN 2010/2011 Laboratorium 11

Page 44: Wstep do sieci neuronowych, Laboratorium 11 OpenGLpiersaj/www/contents/teaching/wsn2010/w… · [piersaj()yavarel ~]$ sudo yum install kmod-nvidia* Jarosław Piersa WSN 2010/2011

OpenGLKonfiguracja środowiska

Hello WorldRenderowanie w GL

Sterowanie

Kontrola klawiaturyKontrola myszkiWspółrzędne sferyczne

gluLookAt

gluLookAt (eyeX , eyeY , eyeZ ,centerX , centerY , centerZ ,upX , upY , upZ

) ;

Jarosław Piersa WSN 2010/2011 Laboratorium 11