Example usage for android.opengl GLES20 glBlendEquation

List of usage examples for android.opengl GLES20 glBlendEquation

Introduction

In this page you can find the example usage for android.opengl GLES20 glBlendEquation.

Prototype

public static native void glBlendEquation(int mode);

Source Link

Usage

From source file:eu.sathra.SathraActivity.java

@SuppressLint("WrongCall")
@Override//from  ww  w. j  a v a  2s  .  co m
public void onDrawFrame(GL10 gl) {
    gl.glViewport(0, 0, this.getScreenWidth(), this.getScreenHeight());
    // Update time variables
    mTimeDelta = System.currentTimeMillis() - mLastDrawTimestamp;
    mLastDrawTimestamp = System.currentTimeMillis();
    mTime += mTimeDelta;
    mVirtualTimeDelta = (long) (mTimeDelta * getTimeScale());
    mVirtualTime += mVirtualTimeDelta;

    // Setup defaults
    gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);
    GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);

    // Clear BG
    float r = (float) Color.red(mParams.bgColor) / 255;
    float g = (float) Color.green(mParams.bgColor) / 255;
    float b = (float) Color.blue(mParams.bgColor) / 255;
    float a = (float) Color.alpha(mParams.bgColor) / 255;
    gl.glClearColor(r, g, b, a);
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
    GLES20.glBlendEquation(GLES20.GL_FUNC_ADD);

    gl.glMatrixMode(GL10.GL_TEXTURE);
    gl.glLoadIdentity();

    gl.glMatrixMode(GL10.GL_MODELVIEW);
    gl.glLoadIdentity();

    // gl.glEnable(GL10.GL_BLEND);
    gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);

    mRootNode.onDraw(gl, mVirtualTime, mVirtualTimeDelta);

    // Draw lights and shadows
    gl.glMatrixMode(GL10.GL_TEXTURE);
    gl.glLoadIdentity();
    gl.glScalef(1, -1, 1); // Frame Buffers are upside down
    gl.glMatrixMode(GL10.GL_MODELVIEW);

    CameraNode activeCam = CameraNode.getActiveCamera();

    if (activeCam != null) {
        shad.setPosition(0, 0);// this.getResolutionWidth()/2,
        // this.getResolutionHeight()/2);//activeCam.getAbsoluteX(),
        // activeCam.getAbsoluteY());
    }

    gl.glBlendFunc(GL10.GL_DST_COLOR, GL10.GL_ONE_MINUS_SRC_ALPHA);

    shad.draw(gl);

    gl.glViewport(0, 0, this.getResolutionWidth(), this.getResolutionHeight()); // SDfDSFSDFS
    GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, buf[0]);
    GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D,
            tex[0], 0);

    // Clear shadow
    r = (float) Color.red(mParams.ambientColor) / 255;
    g = (float) Color.green(mParams.ambientColor) / 255;
    b = (float) Color.blue(mParams.ambientColor) / 255;
    a = (float) Color.alpha(mParams.ambientColor) / 255;

    gl.glClearColor(r, g, b, a);
    GLES20.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    // TODO: CONCURENT MOD EXCEPTION
    try {
        Dyn4jPhysics.getInstance().getWorld().updatev(mVirtualTimeDelta * MILISECONDS_TO_SECONDS);
    } catch (ConcurrentModificationException e) {

    }

    // if (mIsRunning)
    onUpdate(mVirtualTime, mVirtualTimeDelta);

    // Update fps counter
    mFPS = 1000f / mTimeDelta;

    // mDebugView.postInvalidate();

    // System.gc();
}