RNGLContext.java 1.23 KB
Newer Older
1 2 3 4 5 6 7
package com.projectseptember.RNGL;

import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;

Gaëtan Renaudeau's avatar
WIP  
Gaëtan Renaudeau committed
8 9 10
import java.util.HashMap;
import java.util.Map;

11 12
public class RNGLContext extends ReactContextBaseJavaModule {

Gaëtan Renaudeau's avatar
WIP  
Gaëtan Renaudeau committed
13 14 15 16 17 18 19 20
    private static String STATIC_VERT =
    "attribute vec2 position;"+
    "varying vec2 uv;"+
    "void main() {"+
        "gl_Position = vec4(position,0.0,1.0);"+
        "uv = vec2(0.5, 0.5) * (position+vec2(1.0, 1.0));"+
    "}";

Gaëtan Renaudeau's avatar
Gaëtan Renaudeau committed
21
    private Map<Integer, GLShaderData> shaders = new HashMap<>();
Gaëtan Renaudeau's avatar
WIP  
Gaëtan Renaudeau committed
22 23
    private Map<Integer, GLFBO> fbos = new HashMap<>();

24 25 26 27 28 29 30 31 32
    public RNGLContext (ReactApplicationContext reactContext) {
        super(reactContext);
    }

    @Override
    public String getName() {
        return "RNGLContext";
    }

Gaëtan Renaudeau's avatar
Gaëtan Renaudeau committed
33
    public GLShaderData getShader (Integer id) {
Gaëtan Renaudeau's avatar
WIP  
Gaëtan Renaudeau committed
34 35 36
        return shaders.get(id);
    }

37
    @ReactMethod
Gaëtan Renaudeau's avatar
WIP  
Gaëtan Renaudeau committed
38 39 40
    public void addShader (final Integer id, final ReadableMap config) {
        final String frag = config.getString("frag");
        final String name = config.getString("name");
Gaëtan Renaudeau's avatar
Gaëtan Renaudeau committed
41
        shaders.put(id, new GLShaderData(name, STATIC_VERT, frag));
42 43
    }
}