Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
introduction to TextureView + OpenGL ES
Search
Daichi Furiya (Wasabeef)
November 06, 2015
Programming
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
introduction to TextureView + OpenGL ES
Daichi Furiya (Wasabeef)
November 06, 2015
More Decks by Daichi Furiya (Wasabeef)
See All by Daichi Furiya (Wasabeef)
DevFest Tokyo 2025 - Flutter のアプリアーキテクチャ現在地点
wasabeef
6
2.9k
About Flutter Architecture
wasabeef
1
340
2023 Flutter/Dart Summary
wasabeef
0
140
I/O Extended 2023 - Dart と Flutter の新機能
wasabeef
0
250
I/O Extended 2023 - Flutter 活用事例
wasabeef
10
3.1k
What it Takes to be a Flutter Developer
wasabeef
0
270
FlutterKaigi 2022 Keynote
wasabeef
1
760
Flutter Hooks を使ったアプリ開発 / App Development with the Flutter Hooks
wasabeef
2
1.6k
Flutter 2021 の振り返りと今後のアプリ開発に向けて / Looking back on Flutter 2021 and for future app development.
wasabeef
4
2.3k
Other Decks in Programming
See All in Programming
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
170
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
530
AHC070解法紹介
eijirou
0
130
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
390
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
500
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.4k
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
3
370
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
wkhtmltopdfの次どうするか問題2026
willnet
2
1.6k
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
170
Intent as Code
shoppingjaws
6
1.1k
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
2.9k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Documentation Writing (for coders)
carmenintech
77
5.5k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
260
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Paper Plane (Part 1)
katiecoart
PRO
2
11k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
700
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Side Projects
sachag
456
43k
Transcript
TextureView OpenGL ES Wasabeef
About Me @wasabeef_jp AbemaTV, Inc. (CyberAgent, Inc.)
What would you like to do?
What would you like to do? ・3D Graphics Game (Unity,
Unreal Engine, Cocos2d-x) ・Filter (Camera, Image, Movie)
OpenGL ES by Khronos Group
OpenGL ES “Android includes support for high performance 2D and
3D graphics with the Open Graphics Library (OpenGL®), specifically, the OpenGL ES API.”
OpenGL ES ・OpenGL ES 1.0/1.1 - API level 1+ ・OpenGL
ES 2.0 - API level 8+ ・OpenGL ES 3.0 - API level 18+ ・OpenGL ES 3.1 - API level 21+
Vulkan by Khronos Group
Vulkan
Surface
SurfaceView
SurfaceHolder
SurfaceHolder public class MySurfaceView extends SurfaceView { public MySurfaceView(Context context)
{ super(context); SurfaceHolder holder = this.getHolder(); } }
SurfaceHolder.Callback public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback { public
MySurfaceView(Context context) { super(context); getHolder().addCallback(this); } @Override public void surfaceCreated(SurfaceHolder arg0) { /***/ } @Override public void surfaceChanged( SurfaceHolder arg0, int arg1, int arg2, int arg3) { /***/ } @Override public void surfaceDestroyed(SurfaceHolder arg0) { /***/ } }
GLSurfaceView
TextureView
SurfaceTexture
SurfaceTextureListener
SurfaceTextureListener private class MySurfaceTextureListener implements SurfaceTextureListener { @Override public void
onSurfaceTextureAvailable( SurfaceTexture surface, int width, int height) { /***/ } @Override public void onSurfaceTextureSizeChanged( SurfaceTexture surface, int width, int height) { /***/ } @Override public boolean onSurfaceTextureDestroyed( SurfaceTexture surface) { /***/ } @Override public void onSurfaceTextureUpdated( SurfaceTexture surface) { /***/ } }
GLTextureView http://bit.ly/1RAnLrw
Shader
Shader public static final String SAMPLE_SHADER = "" + "void
main()\n" + "{\n" + " gl_FragColor =vec4(1.0, 0.0, 0.0, 1.0)\n” + "}";
Shader public static final String COLOR_SHADER = "" + "varying
highp vec2 textureCoordinate;\n" + "uniform sampler2D inputImageTexture;\n" + "uniform lowp mat4 colorMatrix;\n" + "uniform lowp float intensity;\n" + "void main()\n" + "{\n" + " lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" + " lowp vec4 outputColor = textureColor * colorMatrix;\n" + " gl_FragColor = (intensity * outputColor) + ((1.0 - intensity) * textureColor);\n" + "}";
Shader private static int loadShader(int type, String src) { int
shader = GLES20.glCreateShader(type); if (shader != 0) { GLES20.glShaderSource(shader, src); GLES20.glCompileShader(shader); int[] compiled = new int[1]; GLES20.glGetShaderiv( shader, GLES20.GL_COMPILE_STATUS, compiled, 0); if (compiled[0] == 0) { GLES20.glDeleteShader(shader); shader = 0; } } return shader; }
Summary ・OpenGL ES2 (API level 8+) ・TextureView (API level 14+)
・SurfaceTexture ・SurfaceTextureListener ・GLTextureView (Custom) ・Shader (GLSL)
Thanks.