Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
gl-react-native-v2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Jira
Jira
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
ym
gl-react-native-v2
Commits
60386e4d
Commit
60386e4d
authored
Nov 16, 2015
by
Gaëtan Renaudeau
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
one context per instance
parent
479bfb4f
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
36 additions
and
19 deletions
+36
-19
android/src/main/java/com/projectseptember/RNGL/GLCanvas.java
...oid/src/main/java/com/projectseptember/RNGL/GLCanvas.java
+26
-8
android/src/main/java/com/projectseptember/RNGL/GLImage.java
android/src/main/java/com/projectseptember/RNGL/GLImage.java
+1
-1
android/src/main/java/com/projectseptember/RNGL/GLShader.java
...oid/src/main/java/com/projectseptember/RNGL/GLShader.java
+6
-0
android/src/main/java/com/projectseptember/RNGL/RNGLContext.java
.../src/main/java/com/projectseptember/RNGL/RNGLContext.java
+3
-10
No files found.
android/src/main/java/com/projectseptember/RNGL/GLCanvas.java
View file @
60386e4d
...
...
@@ -51,14 +51,14 @@ public class GLCanvas extends GLSurfaceView implements GLSurfaceView.Renderer, R
private
int
captureNextFrameId
;
private
GLData
data
;
private
List
<
Uri
>
imagesToPreload
;
private
List
<
Uri
>
preloaded
;
private
List
<
Uri
>
preloaded
=
new
ArrayList
<>();
// FIXME double check that this works
private
Map
<
Uri
,
GLImage
>
images
=
new
HashMap
<>();
private
List
<
GLTexture
>
contentTextures
=
new
ArrayList
<>();
private
List
<
Bitmap
>
contentBitmaps
=
new
ArrayList
<>();
private
Map
<
Integer
,
GLShader
>
shaders
=
new
HashMap
<>()
;
private
Map
<
Integer
,
GLFBO
>
fbos
=
new
HashMap
<>()
;
private
Map
<
Integer
,
GLShader
>
shaders
;
private
Map
<
Integer
,
GLFBO
>
fbos
;
public
GLCanvas
(
ThemedReactContext
context
)
{
super
(
context
);
...
...
@@ -78,9 +78,27 @@ public class GLCanvas extends GLSurfaceView implements GLSurfaceView.Renderer, R
requestRender
();
}
public
GLFBO
getFBO
(
Integer
id
)
{
if
(!
fbos
.
containsKey
(
id
))
{
fbos
.
put
(
id
,
new
GLFBO
());
}
return
fbos
.
get
(
id
);
}
public
GLShader
getShader
(
Integer
id
)
{
if
(!
shaders
.
containsKey
(
id
))
{
GLShaderData
shaderData
=
rnglContext
.
getShader
(
id
);
if
(
shaderData
==
null
)
return
null
;
shaders
.
put
(
id
,
new
GLShader
(
shaderData
));
}
return
shaders
.
get
(
id
);
}
@Override
public
void
onSurfaceCreated
(
GL10
gl
,
EGLConfig
config
)
{
// FIXME anything to do here?
fbos
=
new
HashMap
<>();
shaders
=
new
HashMap
<>();
// TODO : need to reset GLImage and GLTexture. in a smart way (images if already loaded just need to re-set the bitmap)
}
@Override
...
...
@@ -182,7 +200,7 @@ public class GLCanvas extends GLSurfaceView implements GLSurfaceView.Renderer, R
}
private
boolean
ensureCompiledShader
(
GLData
data
)
{
GLShader
shader
=
rnglContext
.
getShader
(
data
.
shader
);
GLShader
shader
=
getShader
(
data
.
shader
);
return
shader
!=
null
&&
shader
.
ensureCompile
()
&&
ensureCompiledShader
(
data
.
children
)
&&
...
...
@@ -341,7 +359,7 @@ public class GLCanvas extends GLSurfaceView implements GLSurfaceView.Renderer, R
public
GLRenderData
recSyncData
(
GLData
data
,
HashMap
<
Uri
,
GLImage
>
images
)
{
Map
<
Uri
,
GLImage
>
prevImages
=
this
.
images
;
GLShader
shader
=
rnglContext
.
getShader
(
data
.
shader
);
GLShader
shader
=
getShader
(
data
.
shader
);
Map
<
String
,
Integer
>
uniformsInteger
=
new
HashMap
<>();
Map
<
String
,
Float
>
uniformsFloat
=
new
HashMap
<>();
Map
<
String
,
IntBuffer
>
uniformsIntBuffer
=
new
HashMap
<>();
...
...
@@ -390,7 +408,7 @@ public class GLCanvas extends GLSurfaceView implements GLSurfaceView.Renderer, R
}
else
if
(
t
.
equals
(
"fbo"
))
{
int
id
=
value
.
getInt
(
"id"
);
GLFBO
fbo
=
rnglContext
.
getFBO
(
id
);
GLFBO
fbo
=
getFBO
(
id
);
textures
.
put
(
uniformName
,
fbo
.
color
.
get
(
0
));
}
else
if
(
t
.
equals
(
"uri"
))
{
...
...
@@ -580,7 +598,7 @@ public class GLCanvas extends GLSurfaceView implements GLSurfaceView.Renderer, R
glViewport
(
0
,
0
,
w
,
h
);
}
else
{
GLFBO
fbo
=
rnglContext
.
getFBO
(
renderData
.
fboId
);
GLFBO
fbo
=
getFBO
(
renderData
.
fboId
);
fbo
.
setShape
(
w
,
h
);
fbo
.
bind
();
}
...
...
android/src/main/java/com/projectseptember/RNGL/GLImage.java
View file @
60386e4d
...
...
@@ -22,7 +22,7 @@ https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/java/
also inspired from
https://github.com/CyberAgent/android-gpuimage/blob/master/library/src/jp/co/cyberagent/android/gpuimage/GPUImage.java
*/
public
class
GLImage
{
public
class
GLImage
{
// TODO : we need to check support for local images
private
final
Context
context
;
private
Uri
src
;
private
GLTexture
texture
;
...
...
android/src/main/java/com/projectseptember/RNGL/GLShader.java
View file @
60386e4d
...
...
@@ -27,6 +27,12 @@ public class GLShader {
this
.
frag
=
frag
;
}
public
GLShader
(
GLShaderData
data
)
{
this
.
name
=
data
.
name
;
this
.
vert
=
data
.
vert
;
this
.
frag
=
data
.
frag
;
}
@Override
protected
void
finalize
()
throws
Throwable
{
super
.
finalize
();
...
...
android/src/main/java/com/projectseptember/RNGL/RNGLContext.java
View file @
60386e4d
...
...
@@ -27,7 +27,7 @@ public class RNGLContext extends ReactContextBaseJavaModule {
"uv = vec2(0.5, 0.5) * (position+vec2(1.0, 1.0));"
+
"}"
;
private
Map
<
Integer
,
GLShader
>
shaders
=
new
HashMap
<>();
private
Map
<
Integer
,
GLShader
Data
>
shaders
=
new
HashMap
<>();
private
Map
<
Integer
,
GLFBO
>
fbos
=
new
HashMap
<>();
public
RNGLContext
(
ReactApplicationContext
reactContext
)
{
...
...
@@ -39,21 +39,14 @@ public class RNGLContext extends ReactContextBaseJavaModule {
return
"RNGLContext"
;
}
public
GLShader
getShader
(
Integer
id
)
{
public
GLShader
Data
getShader
(
Integer
id
)
{
return
shaders
.
get
(
id
);
}
public
GLFBO
getFBO
(
Integer
id
)
{
if
(!
fbos
.
containsKey
(
id
))
{
fbos
.
put
(
id
,
new
GLFBO
());
}
return
fbos
.
get
(
id
);
}
@ReactMethod
public
void
addShader
(
final
Integer
id
,
final
ReadableMap
config
)
{
final
String
frag
=
config
.
getString
(
"frag"
);
final
String
name
=
config
.
getString
(
"name"
);
shaders
.
put
(
id
,
new
GLShader
(
name
,
STATIC_VERT
,
frag
));
shaders
.
put
(
id
,
new
GLShader
Data
(
name
,
STATIC_VERT
,
frag
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment