際際滷

際際滷Share a Scribd company logo
TWORZENIE 3D GRAFIKI W
ANDROID
W OPARCIU O OPENGL ES
by Artem Shubovych
TRE
1. co to jest shadery
2. co mo甜na zrobi przy u甜yciu shader坦w
3. jak dziaa stos renderingu
4. u甜ycie shader坦w w Android
5. sterowanie wywietlieniem
DLACZEGO U纏Y OPENGL?
tworzenie gier
animacja
systemy CAD
graficzne przedstawienie informacji
(dla fanatyk坦w) zwikszenie prdkoci zwykej aplikacji
DLACZEGO U纏Y OPENGL?
tworzenie gier
animacja
OPENGL PIPELINE
1. przetwarzanie koordynat
2. obliczenie owietlenia
3. aplikacja material坦w
wykrywanie koloru ka甜dego wierzhoku
4. aplikacja tekstur
5. dopasowanie efekt坦w
mga, alpha test, depth test, pattern test, blending...
6. wywietlenie na ekranie
EWOLUCJA PROGRAMISTY OPENGL
FIXED PIPELINE
g l B e g i n ( G L _ P O L Y G O N ) ;
g l C o l o r 3 f ( 0 , 1 , 0 ) ;
g l V e r t e x 3 f ( - 1 , - 1 , 0 ) ;
g l V e r t e x 3 f ( - 1 , 1 , 0 ) ;
g l V e r t e x 3 f ( 1 , 1 , 0 ) ;
g l V e r t e x 3 f ( 1 , - 1 , 0 ) ;
g l E n d ( ) ;
DISPLAY LISTS
G L u i n t i n d e x = g l G e n L i s t s ( 1 ) ;
g l N e w L i s t ( i n d e x , G L _ C O M P I L E ) ;
g l B e g i n ( G L _ P O L Y G O N ) ;
g l C o l o r 3 f ( 0 , 1 , 0 ) ;
g l V e r t e x 3 f ( - 1 , - 1 , 0 ) ;
g l V e r t e x 3 f ( - 1 , 1 , 0 ) ;
g l V e r t e x 3 f ( 1 , 1 , 0 ) ;
g l V e r t e x 3 f ( 1 , - 1 , 0 ) ;
g l E n d ( ) ;
g l E n d L i s t ( ) ;
/ / . . .
g l C a l l L i s t ( i n d e x ) ;
DRAWABLE ARRAYS
G L f l o a t v e r t i c e s [ ] = { - 1 , - 1 , 0 , - 1 , 1 , 0 , 1 , 1 , 0 , 1 , - 1 , 0 } ;
g l E n a b l e C l i e n t S t a t e ( G L _ V E R T E X _ A R R A Y ) ;
g l V e r t e x P o i n t e r ( 3 , G L _ F L O A T , 0 , v e r t i c e s ) ;
g l D r a w A r r a y s ( G L _ P O L Y G O N S , 0 , 4 ) ;
g l D i s a b l e C l i e n t S t a t e ( G L _ V E R T E X _ A R R A Y ) ;
VERTEX BUFFER OBJECTS
G L f l o a t v e r t i c e s [ ] = { - 1 , - 1 , 0 , - 1 , 1 , 0 , 1 , 1 , 0 , 1 , - 1 , 0 } ;
G L u i n t v b o I d ;
g l G e n B u f f e r s A R B ( 1 , & v b o I d ) ;
g l B i n d B u f f e r A R B ( G L _ A R R A Y _ B U F F E R _ A R B , v b o I d ) ;
g l B u f f e r D a t a A R B ( G L _ A R R A Y _ B U F F E R _ A R B , s i z e o f ( v e r t i c e s ) ,
v e r t i c e s , G L _ S T A T I C _ D R A W _ A R B ) ;
/ / . . .
g l B i n d B u f f e r A R B ( G L _ A R R A Y _ B U F F E R _ A R B , v b o I d ) ;
g l E n a b l e C l i e n t S t a t e ( G L _ V E R T E X _ A R R A Y ) ;
g l V e r t e x P o i n t e r ( 3 , G L _ F L O A T , 0 , 0 ) ;
g l D r a w A r r a y s ( G L _ P O L Y G O N S , 0 , 1 2 ) ;
g l D i s a b l e C l i e n t S t a t e ( G L _ V E R T E X _ A R R A Y ) ;
g l B i n d B u f f e r A R B ( G L _ A R R A Y _ B U F F E R _ A R B , 0 ) ;
SHADER - CO TO JEST?
kr坦tki program komputerowy, (...), kt坦ry w
grafice tr坦jwymiarowej opisuje waciwoci
pikseli oraz wierzchok坦w.
TYPY SHADERW
vertex shader
fragment shader
shader program
U纏YCIE SHADERW
WOPENGL
1. kompilacja wierzchokowego shaderu
2. kompilacja fragment'owego shaderu
3. linkowanie programu
4. przekazywanie wskaz坦wnik坦w
o dane do programu
5. przekazywanie danych do programu
KOMPILACJA SHADERW
WIERZCHOKOWY SHADER
/ / k o m p i l u j e m y w i e r z c h o  k o w y s h a d e r
G L i n t c o m p i l e _ o k = G L _ F A L S E , l i n k _ o k = G L _ F A L S E , p r o g r a m ;
G L u i n t v s = g l C r e a t e S h a d e r ( G L _ V E R T E X _ S H A D E R ) ;
c o n s t c h a r * v s _ s o u r c e = " . . . " ;
g l S h a d e r S o u r c e ( v s , 1 , & v s _ s o u r c e , N U L L ) ;
g l C o m p i l e S h a d e r ( v s ) ;
g l G e t S h a d e r i v ( v s , G L _ C O M P I L E _ S T A T U S , & c o m p i l e _ o k ) ;
KOMPILACJA SHADERW
FRAGMENTOWY SHADER
/ / k o m p i l u j e m y f r a g m e n t o w y s h a d e r
G L u i n t f s = g l C r e a t e S h a d e r ( G L _ F R A G M E N T _ S H A D E R ) ;
c o n s t c h a r * f s _ s o u r c e = " . . . " ;
g l S h a d e r S o u r c e ( f s , 1 , & f s _ s o u r c e , N U L L ) ;
g l C o m p i l e S h a d e r ( f s ) ;
g l G e t S h a d e r i v ( f s , G L _ C O M P I L E _ S T A T U S , & c o m p i l e _ o k ) ;
LINKING PROGRAMU
/ / l i n k u j e m y p r o g r a m
p r o g r a m = g l C r e a t e P r o g r a m ( ) ;
g l A t t a c h S h a d e r ( p r o g r a m , v s ) ;
g l A t t a c h S h a d e r ( p r o g r a m , f s ) ;
g l L i n k P r o g r a m ( p r o g r a m ) ;
g l G e t P r o g r a m i v ( p r o g r a m , G L _ L I N K _ S T A T U S , & l i n k _ o k ) ;
PRZEKAZYWANIE DANYCH DO PROGRAMU
/ / z a c h o w u j e m y w s k a z 坦 w n i k o z m i e n n e j s h a d e r u w k l i e n t s k i m p r o g r a m u
G L i n t a t t r i b u t e _ c o o r d 2 d ;
c o n s t c h a r * a t t r i b u t e _ n a m e = " c o o r d 2 d " ;
a t t r i b u t e _ c o o r d 2 d = g l G e t A t t r i b L o c a t i o n ( p r o g r a m , a t t r i b u t e _ n a m e ) ;
RENDERING Z U纏YCIEM SHADERU
/ / p r e k a z u j e m y d a n e p r z e z w s k a z 坦 w n i k d o p r o g r a m u
/ / j u 甜 n a e t a p u r e n d e r i n g u
g l U s e P r o g r a m ( p r o g r a m ) ;
g l E n a b l e V e r t e x A t t r i b A r r a y ( a t t r i b u t e _ c o o r d 2 d ) ;
g l V e r t e x A t t r i b P o i n t e r (
a t t r i b u t e _ c o o r d 2 d , / / c o p r z e k a z u j e m y d o p r o g r a m u
2 , / / i l e e l e m e n t 坦 w d l a k a 甜 d e j w i e r z c h 坦 w k i
G L _ F L O A T , / / t y p k a 甜 d e g o e l e m e n t u
G L _ F A L S E , / / u 甜 y c i e o f f s e t 坦 w
0 , / / o f f s e t
v e r t i c e s / / w s k a z 坦 w n i k d o d a n y c h
) ;
g l D r a w A r r a y s ( G L _ P O L Y G O N S , 0 , 4 ) ;
g l D i s a b l e V e r t e x A t t r i b A r r a y ( a t t r i b u t e _ c o o r d 2 d ) ;
PRZEKAZYWANIE DANYCH DO SHADERU
1. zachowywanie wskaz坦wnika do
atrybutu shaderu
2. wczenie odpowiednego atrybutu
3. wskazywanie adresu danych
4. wyczenie atrybutu
WEJCIE WIERZHOKOWEGO SHADERU
material
(diffuse, specular, shininess...)
silnikowe
(kamera, model, owietlenie, tajmery...)
rendererowe
(zdefiniowane przez u甜ytkownika)
WYJCIE WIERZHOKOWEGO SHADERU
pozycja
rozmiar wierzh坦ki
dugo do przycinania
WEJCIE FRAGMENTOWEGO SHADERU
pozycja
normale
numer prymitywu
dugo do przycinania
inne
WYJCIE FRAGMENTOWEGO SHADERU
identyfikator materialu
pozycja
normale
diffuse color
specular color
gboko
inne
IDENTITY SHADERS
VERTEX SHADER
u n i f o r m m a t 4 u _ M V P M a t r i x ;
a t t r i b u t e v e c 4 a _ P o s i t i o n ;
v o i d m a i n ( )
{
g l _ P o s i t i o n = u _ M V P M a t r i x * a _ P o s i t i o n ;
}
FRAGMENT SHADER
v a r y i n g v e c 4 v _ C o l o r ;
v o i d m a i n ( )
{
g l _ F r a g C o l o r [ 0 ] = 0 . 0 ;
g l _ F r a g C o l o r [ 1 ] = 0 . 0 ;
g l _ F r a g C o l o r [ 2 ] = 1 . 0 ;
}
PIKNO GRY KOMPUTEROWEJ
efekty nieba, wody, pogody,
ognia, mgy, dymu...
rze添ba terenu
modele high poly
CO MO纏NA UTWORZY DZIKI SHADERAM
OPENGL W ANDROID
TO TYLKO OPENGL ES
sabszy sprzt  mniej mo甜liwoci
sabszy sprzt  mniej efekt坦w
sabszy sprzt  mniej modele
sabszy sprzt  mniej animacji
CZYM SI R纏NI OPENGL ORAZ OPENGL ES?
OPENGL
obsuguje wiele
podej renderingu
(fixed pipeline, display
lists, VBO, drawable
arrays...)
dowolne type danych
OPENGL ES
tylko VBO
wycznie dane typ坦w
fixed-point
usunity prymitywy
renderingowe
OPTYMIZACJI GIER W ANDROID
efekty nieba, wody, pogody,
ognia, mgy, dymu...
rze添ba terenu
modele high poly
CO MO纏NA ZROBI W OPENGL ES?
Tworzenie grafiki 3D w android
ZALETY OPENGL ES
mo甜na zrobi gr tr坦jwymiarow
dla mobilnych urzdze
szybke przepisanie kodu do OpenGL
WebGL - jeszcze wicej przenonoci!
WADY OPENGL ES
zo甜ono
mae API
ZO纏ONO OPENGL ES
wywietlienie animacji MD2500+ wiersz坦w kodu!
BIBLIOTEKI
JPCT
LWJGL
jMonkey
JAK ZACZ PRACOWA Z OPENGL ES?
1. TWORZYMY POWIERZHNI
2. USTALIMY RENDERER
3. DEFINUJEMY LOGIK KIEROWANIA
PRZESUWANIE KAMERY
mViewMatrix  Matrix.setLookAtM(...)
MVPMatrix  mProjectionMatrix  mViewMatrix
gl_Position = u_MVPMatrix * a_Position
u n i f o r m m a t 4 u _ M V P M a t r i x ;
a t t r i b u t e v e c 4 a _ P o s i t i o n ;
v o i d m a i n ( )
{
g l _ P o s i t i o n = u _ M V P M a t r i x * a _ P o s i t i o n ;
}
PRZESUWANIE MODELE
setIdentity(...)
mMVPMatrix  mViewMatrix  mModelMatrix
mMVPMatrix  mProjectionMatrix  mMVPMatrix
gl_Position = u_MVPMatrix * a_Position
PRZYKAD - RUCH KAMERY
Tworzenie grafiki 3D w android
PRZYKAD - RUCH KAMERY
Tworzenie grafiki 3D w android
PRZYKAD - RUCH KAMERY
Tworzenie grafiki 3D w android
PRZYKAD - RUCH KAMERY
Tworzenie grafiki 3D w android
CZEGO TA PREZENTACJA NIE OGARNIA?
u甜ycie tekstur
animacja
skomplikowane shadery
OSTRE纏ENIE
NIE PRBUJCIE TEGO W DOMU!
U纏YCIE BIBLIOTEK JEST PRZYCZYN DUGOWIECZNOCI
DZIKUJ ZA UWAG!
Tu jest kod

More Related Content

Tworzenie grafiki 3D w android

  • 1. TWORZENIE 3D GRAFIKI W ANDROID W OPARCIU O OPENGL ES by Artem Shubovych
  • 2. TRE 1. co to jest shadery 2. co mo甜na zrobi przy u甜yciu shader坦w 3. jak dziaa stos renderingu 4. u甜ycie shader坦w w Android 5. sterowanie wywietlieniem
  • 3. DLACZEGO U纏Y OPENGL? tworzenie gier animacja systemy CAD graficzne przedstawienie informacji (dla fanatyk坦w) zwikszenie prdkoci zwykej aplikacji
  • 5. OPENGL PIPELINE 1. przetwarzanie koordynat 2. obliczenie owietlenia 3. aplikacja material坦w wykrywanie koloru ka甜dego wierzhoku 4. aplikacja tekstur 5. dopasowanie efekt坦w mga, alpha test, depth test, pattern test, blending... 6. wywietlenie na ekranie
  • 7. FIXED PIPELINE g l B e g i n ( G L _ P O L Y G O N ) ; g l C o l o r 3 f ( 0 , 1 , 0 ) ; g l V e r t e x 3 f ( - 1 , - 1 , 0 ) ; g l V e r t e x 3 f ( - 1 , 1 , 0 ) ; g l V e r t e x 3 f ( 1 , 1 , 0 ) ; g l V e r t e x 3 f ( 1 , - 1 , 0 ) ; g l E n d ( ) ;
  • 8. DISPLAY LISTS G L u i n t i n d e x = g l G e n L i s t s ( 1 ) ; g l N e w L i s t ( i n d e x , G L _ C O M P I L E ) ; g l B e g i n ( G L _ P O L Y G O N ) ; g l C o l o r 3 f ( 0 , 1 , 0 ) ; g l V e r t e x 3 f ( - 1 , - 1 , 0 ) ; g l V e r t e x 3 f ( - 1 , 1 , 0 ) ; g l V e r t e x 3 f ( 1 , 1 , 0 ) ; g l V e r t e x 3 f ( 1 , - 1 , 0 ) ; g l E n d ( ) ; g l E n d L i s t ( ) ; / / . . . g l C a l l L i s t ( i n d e x ) ;
  • 9. DRAWABLE ARRAYS G L f l o a t v e r t i c e s [ ] = { - 1 , - 1 , 0 , - 1 , 1 , 0 , 1 , 1 , 0 , 1 , - 1 , 0 } ; g l E n a b l e C l i e n t S t a t e ( G L _ V E R T E X _ A R R A Y ) ; g l V e r t e x P o i n t e r ( 3 , G L _ F L O A T , 0 , v e r t i c e s ) ; g l D r a w A r r a y s ( G L _ P O L Y G O N S , 0 , 4 ) ; g l D i s a b l e C l i e n t S t a t e ( G L _ V E R T E X _ A R R A Y ) ;
  • 10. VERTEX BUFFER OBJECTS G L f l o a t v e r t i c e s [ ] = { - 1 , - 1 , 0 , - 1 , 1 , 0 , 1 , 1 , 0 , 1 , - 1 , 0 } ; G L u i n t v b o I d ; g l G e n B u f f e r s A R B ( 1 , & v b o I d ) ; g l B i n d B u f f e r A R B ( G L _ A R R A Y _ B U F F E R _ A R B , v b o I d ) ; g l B u f f e r D a t a A R B ( G L _ A R R A Y _ B U F F E R _ A R B , s i z e o f ( v e r t i c e s ) , v e r t i c e s , G L _ S T A T I C _ D R A W _ A R B ) ; / / . . . g l B i n d B u f f e r A R B ( G L _ A R R A Y _ B U F F E R _ A R B , v b o I d ) ; g l E n a b l e C l i e n t S t a t e ( G L _ V E R T E X _ A R R A Y ) ; g l V e r t e x P o i n t e r ( 3 , G L _ F L O A T , 0 , 0 ) ; g l D r a w A r r a y s ( G L _ P O L Y G O N S , 0 , 1 2 ) ; g l D i s a b l e C l i e n t S t a t e ( G L _ V E R T E X _ A R R A Y ) ; g l B i n d B u f f e r A R B ( G L _ A R R A Y _ B U F F E R _ A R B , 0 ) ;
  • 11. SHADER - CO TO JEST? kr坦tki program komputerowy, (...), kt坦ry w grafice tr坦jwymiarowej opisuje waciwoci pikseli oraz wierzchok坦w.
  • 12. TYPY SHADERW vertex shader fragment shader shader program
  • 13. U纏YCIE SHADERW WOPENGL 1. kompilacja wierzchokowego shaderu 2. kompilacja fragment'owego shaderu 3. linkowanie programu 4. przekazywanie wskaz坦wnik坦w o dane do programu 5. przekazywanie danych do programu
  • 14. KOMPILACJA SHADERW WIERZCHOKOWY SHADER / / k o m p i l u j e m y w i e r z c h o k o w y s h a d e r G L i n t c o m p i l e _ o k = G L _ F A L S E , l i n k _ o k = G L _ F A L S E , p r o g r a m ; G L u i n t v s = g l C r e a t e S h a d e r ( G L _ V E R T E X _ S H A D E R ) ; c o n s t c h a r * v s _ s o u r c e = " . . . " ; g l S h a d e r S o u r c e ( v s , 1 , & v s _ s o u r c e , N U L L ) ; g l C o m p i l e S h a d e r ( v s ) ; g l G e t S h a d e r i v ( v s , G L _ C O M P I L E _ S T A T U S , & c o m p i l e _ o k ) ;
  • 15. KOMPILACJA SHADERW FRAGMENTOWY SHADER / / k o m p i l u j e m y f r a g m e n t o w y s h a d e r G L u i n t f s = g l C r e a t e S h a d e r ( G L _ F R A G M E N T _ S H A D E R ) ; c o n s t c h a r * f s _ s o u r c e = " . . . " ; g l S h a d e r S o u r c e ( f s , 1 , & f s _ s o u r c e , N U L L ) ; g l C o m p i l e S h a d e r ( f s ) ; g l G e t S h a d e r i v ( f s , G L _ C O M P I L E _ S T A T U S , & c o m p i l e _ o k ) ;
  • 16. LINKING PROGRAMU / / l i n k u j e m y p r o g r a m p r o g r a m = g l C r e a t e P r o g r a m ( ) ; g l A t t a c h S h a d e r ( p r o g r a m , v s ) ; g l A t t a c h S h a d e r ( p r o g r a m , f s ) ; g l L i n k P r o g r a m ( p r o g r a m ) ; g l G e t P r o g r a m i v ( p r o g r a m , G L _ L I N K _ S T A T U S , & l i n k _ o k ) ;
  • 17. PRZEKAZYWANIE DANYCH DO PROGRAMU / / z a c h o w u j e m y w s k a z 坦 w n i k o z m i e n n e j s h a d e r u w k l i e n t s k i m p r o g r a m u G L i n t a t t r i b u t e _ c o o r d 2 d ; c o n s t c h a r * a t t r i b u t e _ n a m e = " c o o r d 2 d " ; a t t r i b u t e _ c o o r d 2 d = g l G e t A t t r i b L o c a t i o n ( p r o g r a m , a t t r i b u t e _ n a m e ) ;
  • 18. RENDERING Z U纏YCIEM SHADERU / / p r e k a z u j e m y d a n e p r z e z w s k a z 坦 w n i k d o p r o g r a m u / / j u 甜 n a e t a p u r e n d e r i n g u g l U s e P r o g r a m ( p r o g r a m ) ; g l E n a b l e V e r t e x A t t r i b A r r a y ( a t t r i b u t e _ c o o r d 2 d ) ; g l V e r t e x A t t r i b P o i n t e r ( a t t r i b u t e _ c o o r d 2 d , / / c o p r z e k a z u j e m y d o p r o g r a m u 2 , / / i l e e l e m e n t 坦 w d l a k a 甜 d e j w i e r z c h 坦 w k i G L _ F L O A T , / / t y p k a 甜 d e g o e l e m e n t u G L _ F A L S E , / / u 甜 y c i e o f f s e t 坦 w 0 , / / o f f s e t v e r t i c e s / / w s k a z 坦 w n i k d o d a n y c h ) ; g l D r a w A r r a y s ( G L _ P O L Y G O N S , 0 , 4 ) ; g l D i s a b l e V e r t e x A t t r i b A r r a y ( a t t r i b u t e _ c o o r d 2 d ) ;
  • 19. PRZEKAZYWANIE DANYCH DO SHADERU 1. zachowywanie wskaz坦wnika do atrybutu shaderu 2. wczenie odpowiednego atrybutu 3. wskazywanie adresu danych 4. wyczenie atrybutu
  • 20. WEJCIE WIERZHOKOWEGO SHADERU material (diffuse, specular, shininess...) silnikowe (kamera, model, owietlenie, tajmery...) rendererowe (zdefiniowane przez u甜ytkownika)
  • 21. WYJCIE WIERZHOKOWEGO SHADERU pozycja rozmiar wierzh坦ki dugo do przycinania
  • 22. WEJCIE FRAGMENTOWEGO SHADERU pozycja normale numer prymitywu dugo do przycinania inne
  • 23. WYJCIE FRAGMENTOWEGO SHADERU identyfikator materialu pozycja normale diffuse color specular color gboko inne
  • 24. IDENTITY SHADERS VERTEX SHADER u n i f o r m m a t 4 u _ M V P M a t r i x ; a t t r i b u t e v e c 4 a _ P o s i t i o n ; v o i d m a i n ( ) { g l _ P o s i t i o n = u _ M V P M a t r i x * a _ P o s i t i o n ; } FRAGMENT SHADER v a r y i n g v e c 4 v _ C o l o r ; v o i d m a i n ( ) { g l _ F r a g C o l o r [ 0 ] = 0 . 0 ; g l _ F r a g C o l o r [ 1 ] = 0 . 0 ; g l _ F r a g C o l o r [ 2 ] = 1 . 0 ; }
  • 25. PIKNO GRY KOMPUTEROWEJ efekty nieba, wody, pogody, ognia, mgy, dymu... rze添ba terenu modele high poly
  • 26. CO MO纏NA UTWORZY DZIKI SHADERAM
  • 27. OPENGL W ANDROID TO TYLKO OPENGL ES sabszy sprzt mniej mo甜liwoci sabszy sprzt mniej efekt坦w sabszy sprzt mniej modele sabszy sprzt mniej animacji
  • 28. CZYM SI R纏NI OPENGL ORAZ OPENGL ES?
  • 29. OPENGL obsuguje wiele podej renderingu (fixed pipeline, display lists, VBO, drawable arrays...) dowolne type danych OPENGL ES tylko VBO wycznie dane typ坦w fixed-point usunity prymitywy renderingowe
  • 30. OPTYMIZACJI GIER W ANDROID efekty nieba, wody, pogody, ognia, mgy, dymu... rze添ba terenu modele high poly
  • 31. CO MO纏NA ZROBI W OPENGL ES?
  • 33. ZALETY OPENGL ES mo甜na zrobi gr tr坦jwymiarow dla mobilnych urzdze szybke przepisanie kodu do OpenGL WebGL - jeszcze wicej przenonoci!
  • 35. ZO纏ONO OPENGL ES wywietlienie animacji MD2500+ wiersz坦w kodu!
  • 37. JAK ZACZ PRACOWA Z OPENGL ES?
  • 40. 3. DEFINUJEMY LOGIK KIEROWANIA
  • 41. PRZESUWANIE KAMERY mViewMatrix Matrix.setLookAtM(...) MVPMatrix mProjectionMatrix mViewMatrix gl_Position = u_MVPMatrix * a_Position u n i f o r m m a t 4 u _ M V P M a t r i x ; a t t r i b u t e v e c 4 a _ P o s i t i o n ; v o i d m a i n ( ) { g l _ P o s i t i o n = u _ M V P M a t r i x * a _ P o s i t i o n ; }
  • 42. PRZESUWANIE MODELE setIdentity(...) mMVPMatrix mViewMatrix mModelMatrix mMVPMatrix mProjectionMatrix mMVPMatrix gl_Position = u_MVPMatrix * a_Position
  • 43. PRZYKAD - RUCH KAMERY
  • 45. PRZYKAD - RUCH KAMERY
  • 47. PRZYKAD - RUCH KAMERY
  • 49. PRZYKAD - RUCH KAMERY
  • 51. CZEGO TA PREZENTACJA NIE OGARNIA? u甜ycie tekstur animacja skomplikowane shadery
  • 52. OSTRE纏ENIE NIE PRBUJCIE TEGO W DOMU! U纏YCIE BIBLIOTEK JEST PRZYCZYN DUGOWIECZNOCI
  • 53. DZIKUJ ZA UWAG! Tu jest kod