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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
110
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
970
組織で育むオブザーバビリティ
ryota_hnk
0
180
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.5k
SourceGeneratorのススメ
htkym
0
200
Oxlint JS plugins
kazupon
1
950
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
230
AI巻き込み型コードレビューのススメ
nealle
1
280
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
3.9k
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
280
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
Featured
See All Featured
Bash Introduction
62gerente
615
210k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
710
The Invisible Side of Design
smashingmag
302
51k
The Curious Case for Waylosing
cassininazir
0
240
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
57
50k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
54
The Language of Interfaces
destraynor
162
26k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
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