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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
200
Data-Centric Kaggle
isax1015
2
770
AI巻き込み型コードレビューのススメ
nealle
1
290
Package Management Learnings from Homebrew
mikemcquaid
0
220
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
280
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
970
SourceGeneratorのススメ
htkym
0
200
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
460
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
110
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.3k
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
710
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
4.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
How to train your dragon (web standard)
notwaldorf
97
6.5k
Bash Introduction
62gerente
615
210k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
240
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
310
Six Lessons from altMBA
skipperchong
29
4.1k
WENDY [Excerpt]
tessaabrams
9
36k
Darren the Foodie - Storyboard
khoart
PRO
2
2.4k
Everyday Curiosity
cassininazir
0
130
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
420
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
50k
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