Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OpenGL Introduction
Search
Bruce Tsai
February 02, 2015
Programming
0
49
OpenGL Introduction
A introduction to OpenGL for beginners
Bruce Tsai
February 02, 2015
Tweet
Share
More Decks by Bruce Tsai
See All by Bruce Tsai
Problem Solving with Algorithms and Data Structure - Graphs
wagamama
0
96
Normal Mapping
wagamama
0
71
Android Programming Introduction
wagamama
0
88
iOS GPUImage introduction
wagamama
0
120
Problem Solving with Algorithms and Data Structures
wagamama
0
66
Problem Solving with Algorithms and Data Structure - Lists
wagamama
0
84
Other Decks in Programming
See All in Programming
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
5
460
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
580
Grafana:建立系統全知視角的捷徑
blueswen
0
330
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
300
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.3k
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
220
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
380
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
460
CSC307 Lecture 07
javiergs
PRO
0
550
並行開発のためのコードレビュー
miyukiw
0
170
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Darren the Foodie - Storyboard
khoart
PRO
2
2.4k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
96
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.9k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
190
Facilitating Awesome Meetings
lara
57
6.8k
Mind Mapping
helmedeiros
PRO
0
87
ラッコキーワード サービス紹介資料
rakko
1
2.3M
Mobile First: as difficult as doing things right
swwweet
225
10k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
180
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
110
Technical Leadership for Architectural Decision Making
baasie
1
240
Transcript
OpenGL Introduction Bruce Tsai
State machine! Primitives! Buffers! Shaders! Attributes and uniforms! Drawing
None
Port Crane Crates inside each container are our instances! Containers
are OpenGL ’s objects ! textures, shaders, meshes! Port crane is OpenGL API 4 State Machine
Primitives GL_POINTS! GL_LINES! GL_LINE_STRIP! GL_LINE_LOOP! GL_TRIANGLES! GL_TRIANGLE_STRIP! GL_TRIANGLE_FAN 5
None
None
Rendering Settings void glPolygonMode(GLenum face, GLenum mode);! ! void glFrontFace(GLenum
mode);! ! void glCullFace(GLenum mode); GL_FRONT_AND_BACK GL_POINT GL_LINE GL_FILL GL_CW GL_CCW GL_FRONT GL_BACK GL_FRONT_AND_BACK 8
Buffers Temporary optimized storage! Render buffers! Frame buffers! Buffer objects
9
Render Buffer Color! Store final colored (RGB) image! Depth! Store
final Z depth information! Stencil! Store visible part of object 10
Frame Buffer Store final image! Combination of render buffers 11
Buffer Object Hold informations about 3D objects! Structures! Indices 12
Structures vs. Indices {v1, v2, v3}, {v1, v3, v4}, …!
! {v1, v2, v3, v4, …} (0, 1, 2, 0, 2, 3, …) 13
One Buffer at a Time OpenGL GL_ARRAY_BUFFER GL_ELEMENT_ARRAY_BUFFER GL_TEXTURE_BUFFER Buffer1
Buffer2 Buffer3 Buffer4
Create Buffer void glGenBuffers(GLsizei n, GLuint *buffers);! ! void glBindBuffers(GLenum
target, GLuint buffer); GL_ARRAY_BUFFER GL_ELEMENT_ARRAY_BUFFER 15
Set Buffer Data void glBufferData(GLenum target, GLsizeiptr size, const GLvoid
*data, GLenum usage);! ! ! void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); _STATIC_ _DYNAMIC_ _STREAM_ _DRAW _READ _COPY GL_STATIC_DRAW 16
Copy Buffer Data void glCopyBufferSubData(GLenum readtarget, GLenum writetarget, GLintptr readoffset,
GLintptr writeoffset, GLsizeiptr size); 17
Get Buffer Data void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size,
GLvoid *data); 18
Access Content Buffer void* glMapBuffer(GLenum target, GLenum access);! ! GLboolean
glUnmapBuffer(GLenum target) GL_READ_ONLY GL_WRITE_ONLY GL_READ_WRITE 19
None
Create Shader GLuint glCreateShader(GLenum type);! ! void glShaderSource(GLuint shader, GLsizei
count, const GLchar **string, const GLint *length);! void glCompileShader(GLuint shader); 21 GL_VERTEX_SHADER GL_FRAGMENT_SHADER
Create Program GLuint glCreateProgram(void);! void glAttachShader(GLuint program, GLuint shader);! void
glLinkProgram(GLuint program);! void glUseProgram(GLuint program); 22
Attributes and Uniforms
Attribute Location 1. Defined fixed location in shader! 2. Bind
attribute location before linking shader code! void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name);! 3. Get attribute location after linking shader code! GLint glGetAttribLocation(GLuint program, const GLchar *name); 24
Uniform Location Get uniform location after linking shader code! GLint
glGetUniformLocation(GLuint program, const GLchar *name); 25
Define Attribute Values void glVertexAttrib{1234}f(GLuint index, GLfloat value[N]);! void glVertexAttrib{1234}fv(GLuint
index, const GLfloat *values); 26
Attribute Pointer void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean
normalized, GLsizei stride, const GLvoid *ptr);! ! void glGenVertexArrays(GLsizei n, GLuint *arrays);! void glBindVertexArrays(GLuint array); 27 Required while using glVertexAttribPointer
Using Attribute Pointer void glEnableVertexAttribArray(GLuint index);! void glDisableVertexAttribArray(GLuint index); 28
Define Uniform Values void glUniform{1234}{if}(GLint index, T value[N]);! void glUniform{1234}{if}v(GLint
index, GLsizei count, const T *value);! void glUniformMatrix{234}fv(GLint index, GLsizei count, GLboolean transpose, const GLfloat *value); 29
Clear void glClearColor(GLflozt red, GLfloat green, GLfloat blue, GLfloat alpha);!
void glClear(GLbitfield mask); 30 GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT GL_STENCIL_BUFFER_BIT
Drawing void glDrawArrays(GLenum mode, GLint first, GLsizei count);! ! !
void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); 31 GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_UNSIGNED_BYTE GL_UNSIGNED_SHORT GL_UNSIGNED_INT
Restarting Index void glPrimitiveRestartIndex(GLuint index); 32
Sample v0! p(-1,-1,0,1)! c(1,1,1,1) v1! p(1,-1,0,1)! c(1,1,0,1) v2! p(-1,1,0,1)! c(1,0,1,1)
v3! p(1,1,0,1)! c(0,1,1,1)
References http://blog.db-in.com/all-about-opengl-es-2-x-part-1/! http://www.dreamstime.com/stock-images-port-cranes- image25107404! http://blog.db-in.com/all-about-opengl-es-2-x-part-2/! OpenGL Programming Guide