Example usage for javax.microedition.khronos.opengles GL10 glViewport

List of usage examples for javax.microedition.khronos.opengles GL10 glViewport

Introduction

In this page you can find the example usage for javax.microedition.khronos.opengles GL10 glViewport.

Prototype

void glViewport(int x, int y, int width, int height);

Source Link

Usage

From source file:eu.sathra.SathraActivity.java

@SuppressLint("WrongCall")
@Override//from   w  w w  .j a  va 2  s  .  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();
}

From source file:eu.sathra.SathraActivity.java

@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
    if (mParams.width == 0 && mParams.height == 0) {
        mParams.width = width;// w w  w  . j  a  v a 2 s  .  c o m
        mParams.height = height;
    } else if (mParams.width == 0) {
        float screenRatio = width / (float) height;
        mParams.width = (int) (mParams.height * screenRatio);
    } else if (mParams.height == 0) {
        float screenRatio = height / (float) width;
        mParams.height = (int) (mParams.width * screenRatio);
    }

    gl.glViewport(0, 0, width, height);// mParams.width, mParams.height);

    Log.debug(String.format(SURFACE_CREATE_MSG_FORMAT, width, height, mParams.width, mParams.height));

    if (!mWasInitiated) {
        GLES20.glGenFramebuffers(1, buf, 0);
        GLES20.glGenTextures(1, tex, 0);
        GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, tex[0]);
        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
        IntBuffer tmp = ByteBuffer.allocateDirect(mParams.width * mParams.height * 4)
                .order(ByteOrder.nativeOrder()).asIntBuffer();
        GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, mParams.width, mParams.height, 0,
                GLES20.GL_RGBA, GLES20.GL_UNSIGNED_SHORT_4_4_4_4, tmp);

        shad = new Sprite(new Texture(tex[0], mParams.width, mParams.height));
        shad.setPivot(0.5f, 0.5f);

        onEngineInitiated();

        mWasInitiated = true;
    }
}