當前位置: 首頁>>代碼示例>>Java>>正文


Java GLES20.glGetIntegerv方法代碼示例

本文整理匯總了Java中android.opengl.GLES20.glGetIntegerv方法的典型用法代碼示例。如果您正苦於以下問題:Java GLES20.glGetIntegerv方法的具體用法?Java GLES20.glGetIntegerv怎麽用?Java GLES20.glGetIntegerv使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在android.opengl.GLES20的用法示例。


在下文中一共展示了GLES20.glGetIntegerv方法的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: draw

import android.opengl.GLES20; //導入方法依賴的package包/類
@Override
public void draw(int texture) {
    onTaskExec();
    boolean isBlend= GLES20.glIsEnabled(GLES20.GL_BLEND);
    GLES20.glDisable(GLES20.GL_BLEND);
    GLES20.glGetIntegerv(GLES20.GL_VIEWPORT,lastViewPort,0);
    GLES20.glViewport(0,0,mWidth,mHeight);
    if(mScaleFilter!=null){
        mExportFilter.draw(mScaleFilter.drawToTexture(texture));
    }else{
        mExportFilter.draw(texture);
    }
    GLES20.glReadPixels(0,0,mWidth,mHeight*3/8,GLES20.GL_RGBA,GLES20.GL_UNSIGNED_BYTE,mTempBuffer);
    GLES20.glViewport(lastViewPort[0],lastViewPort[1],lastViewPort[2],lastViewPort[3]);
    if(isBlend){
        GLES20.glEnable(GLES20.GL_BLEND);
    }
}
 
開發者ID:aiyaapp,項目名稱:AAVT,代碼行數:19,代碼來源:YuvOutputFilter.java

示例2: createFrameBuffer

import android.opengl.GLES20; //導入方法依賴的package包/類
/**
 * 創建FrameBuffer
 * @param hasRenderBuffer 是否啟用RenderBuffer
 * @param width 寬度
 * @param height 高度
 * @param texType 類型,一般為{@link GLES20#GL_TEXTURE_2D}
 * @param texFormat 紋理格式,一般為{@link GLES20#GL_RGBA}、{@link GLES20#GL_RGB}等
 * @param minParams 紋理的縮小過濾參數
 * @param maxParams 紋理的放大過濾參數
 * @param wrapS 紋理的S環繞參數
 * @param wrapT 紋理的W環繞參數
 * @return 創建結果,0表示成功,其他值為GL錯誤
 */
public int createFrameBuffer(boolean hasRenderBuffer,int width,int height,int texType,int texFormat,
                             int minParams,int maxParams,int wrapS,int wrapT){
    mFrameTemp=new int[4];
    GLES20.glGenFramebuffers(1,mFrameTemp,0);
    GLES20.glGenTextures(1,mFrameTemp,1);
    GLES20.glBindTexture(texType,mFrameTemp[1]);
    GLES20.glTexImage2D(texType, 0,texFormat, width, height,
            0, texFormat, GLES20.GL_UNSIGNED_BYTE, null);
    //設置縮小過濾為使用紋理中坐標最接近的一個像素的顏色作為需要繪製的像素顏色
    GLES20.glTexParameteri(texType, GLES20.GL_TEXTURE_MIN_FILTER,minParams);
    //設置放大過濾為使用紋理中坐標最接近的若幹個顏色,通過加權平均算法得到需要繪製的像素顏色
    GLES20.glTexParameteri(texType, GLES20.GL_TEXTURE_MAG_FILTER,maxParams);
    //設置環繞方向S,截取紋理坐標到[1/2n,1-1/2n]。將導致永遠不會與border融合
    GLES20.glTexParameteri(texType, GLES20.GL_TEXTURE_WRAP_S,wrapS);
    //設置環繞方向T,截取紋理坐標到[1/2n,1-1/2n]。將導致永遠不會與border融合
    GLES20.glTexParameteri(texType, GLES20.GL_TEXTURE_WRAP_T,wrapT);

    GLES20.glGetIntegerv(GLES20.GL_FRAMEBUFFER_BINDING,mFrameTemp,3);
    GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER,mFrameTemp[0]);
    GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0,
            texType, mFrameTemp[1], 0);
    if(hasRenderBuffer){
        GLES20.glGenRenderbuffers(1,mFrameTemp,2);
        GLES20.glBindRenderbuffer(GLES20.GL_RENDERBUFFER,mFrameTemp[2]);
        GLES20.glRenderbufferStorage(GLES20.GL_RENDERBUFFER,GLES20.GL_DEPTH_COMPONENT16,width,height);
        GLES20.glFramebufferRenderbuffer(GLES20.GL_FRAMEBUFFER,GLES20.GL_DEPTH_ATTACHMENT,GLES20.GL_RENDERBUFFER,mFrameTemp[2]);
    }
    return GLES20.glGetError();
}
 
開發者ID:aiyaapp,項目名稱:AAVT,代碼行數:43,代碼來源:FrameBuffer.java

示例3: onDraw

import android.opengl.GLES20; //導入方法依賴的package包/類
@Override
protected void onDraw() {
    //todo change blend and viewport
    super.onDraw();
    if(markTextureId!=-1){
        GLES20.glGetIntegerv(GLES20.GL_VIEWPORT,viewPort,0);
        GLES20.glViewport(markPort[0],mHeight-markPort[3]-markPort[1],markPort[2],markPort[3]);

        GLES20.glEnable(GLES20.GL_BLEND);
        GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA,GLES20.GL_ONE_MINUS_SRC_ALPHA);
        GLES20.glBlendEquation(GLES20.GL_FUNC_ADD);
        mark.draw(markTextureId);
        GLES20.glDisable(GLES20.GL_BLEND);

        GLES20.glViewport(viewPort[0],viewPort[1],viewPort[2],viewPort[3]);
    }
    //todo reset blend and view port
}
 
開發者ID:aiyaapp,項目名稱:AAVT,代碼行數:19,代碼來源:WaterMarkFilter.java

示例4: bindFrameBuffer

import android.opengl.GLES20; //導入方法依賴的package包/類
/**
 * 綁定FrameBuffer,隻有之前創建過FrameBuffer,才能調用此方法進行綁定
 * @return 綁定結果
 */
public int bindFrameBuffer(){
    if(mFrameTemp==null){
        return -1;
    }
    GLES20.glGetIntegerv(GLES20.GL_FRAMEBUFFER_BINDING,mFrameTemp,3);
    GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER,mFrameTemp[0]);
    return GLES20.glGetError();
}
 
開發者ID:aiyaapp,項目名稱:AAVT,代碼行數:13,代碼來源:FrameBuffer.java

示例5: getMaxTextureEgl14

import android.opengl.GLES20; //導入方法依賴的package包/類
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private static int getMaxTextureEgl14() {
    EGLDisplay dpy = EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY);
    int[] vers = new int[2];
    EGL14.eglInitialize(dpy, vers, 0, vers, 1);

    int[] configAttr = {
            EGL14.EGL_COLOR_BUFFER_TYPE, EGL14.EGL_RGB_BUFFER,
            EGL14.EGL_LEVEL, 0,
            EGL14.EGL_RENDERABLE_TYPE, EGL14.EGL_OPENGL_ES2_BIT,
            EGL14.EGL_SURFACE_TYPE, EGL14.EGL_PBUFFER_BIT,
            EGL14.EGL_NONE
    };
    EGLConfig[] configs = new EGLConfig[1];
    int[] numConfig = new int[1];
    EGL14.eglChooseConfig(dpy, configAttr, 0,
            configs, 0, 1, numConfig, 0);
    if (numConfig[0] == 0) {
        return 0;
    }
    EGLConfig config = configs[0];

    int[] surfAttr = {
            EGL14.EGL_WIDTH, 64,
            EGL14.EGL_HEIGHT, 64,
            EGL14.EGL_NONE
    };
    EGLSurface surf = EGL14.eglCreatePbufferSurface(dpy, config, surfAttr, 0);

    int[] ctxAttrib = {
            EGL14.EGL_CONTEXT_CLIENT_VERSION, 2,
            EGL14.EGL_NONE
    };
    EGLContext ctx = EGL14.eglCreateContext(dpy, config, EGL14.EGL_NO_CONTEXT, ctxAttrib, 0);

    EGL14.eglMakeCurrent(dpy, surf, surf, ctx);

    int[] maxSize = new int[1];
    GLES20.glGetIntegerv(GLES20.GL_MAX_TEXTURE_SIZE, maxSize, 0);

    EGL14.eglMakeCurrent(dpy, EGL14.EGL_NO_SURFACE, EGL14.EGL_NO_SURFACE,
            EGL14.EGL_NO_CONTEXT);
    EGL14.eglDestroySurface(dpy, surf);
    EGL14.eglDestroyContext(dpy, ctx);
    EGL14.eglTerminate(dpy);

    return maxSize[0];
}
 
開發者ID:Alcatraz323,項目名稱:MaterialOCR,代碼行數:49,代碼來源:EglUtils.java

示例6: run

import android.opengl.GLES20; //導入方法依賴的package包/類
@Override
public void run() {
    if(mOutputSurface==null){
        AvLog.d("CameraRecorder GLThread exit : outputSurface==null");
        return;
    }
    if(mPreviewWidth<=0||mPreviewHeight<=0){
        AvLog.d("CameraRecorder GLThread exit : Preview Size==0");
        return;
    }
    boolean ret=mShowEGLHelper.createGLESWithSurface(new EGLConfigAttrs(),new EGLContextAttrs(),mOutputSurface);
    if(!ret){
        AvLog.d("CameraRecorder GLThread exit : createGLES failed");
        return;
    }
    if(mRenderer==null){
        mRenderer=new WrapRenderer(null);
    }
    mRenderer.setFlag(WrapRenderer.TYPE_CAMERA);
    mRenderer.create();
    int[] t=new int[1];
    GLES20.glGetIntegerv(GLES20.GL_FRAMEBUFFER_BINDING,t,0);
    mRenderer.sizeChanged(mPreviewWidth,mPreviewHeight);
    GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER,t[0]);

    BaseFilter mShowFilter=new LazyFilter();
    BaseFilter mRecFilter=new LazyFilter();
    MatrixUtils.flip(mShowFilter.getVertexMatrix(),false,true);
    mShowFilter.create();
    mShowFilter.sizeChanged(mPreviewWidth,mPreviewHeight);

    MatrixUtils.getMatrix(mRecFilter.getVertexMatrix(),MatrixUtils.TYPE_CENTERCROP,
            mPreviewWidth,mPreviewHeight,
            mOutputWidth,mOutputHeight);
    MatrixUtils.flip(mRecFilter.getVertexMatrix(),false,true);
    mRecFilter.create();
    mRecFilter.sizeChanged(mOutputWidth,mOutputHeight);

    FrameBuffer mEncodeFrameBuffer=new FrameBuffer();
    while (mGLThreadFlag){
        try {
            mSem.acquire();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        if(mGLThreadFlag){
            long time=(System.currentTimeMillis()-BASE_TIME)*1000;
            mInputTexture.updateTexImage();
            mInputTexture.getTransformMatrix(mRenderer.getTextureMatrix());
            synchronized (VIDEO_LOCK){
                if(isRecordVideoStarted){
                    if(mEGLEncodeSurface==null){
                        mEGLEncodeSurface=mShowEGLHelper.createWindowSurface(mEncodeSurface);
                    }
                    mShowEGLHelper.makeCurrent(mEGLEncodeSurface);
                    mEncodeFrameBuffer.bindFrameBuffer(mPreviewWidth,mPreviewHeight);
                    mRenderer.draw(mInputTextureId);
                    mEncodeFrameBuffer.unBindFrameBuffer();
                    GLES20.glViewport(0,0,mConfig.getVideoFormat().getInteger(MediaFormat.KEY_WIDTH),
                            mConfig.getVideoFormat().getInteger(MediaFormat.KEY_HEIGHT));
                    mRecFilter.draw(mEncodeFrameBuffer.getCacheTextureId());
                    mShowEGLHelper.setPresentationTime(mEGLEncodeSurface,time*1000);
                    videoEncodeStep(false);
                    mShowEGLHelper.swapBuffers(mEGLEncodeSurface);

                    mShowEGLHelper.makeCurrent();
                    GLES20.glViewport(0,0,mPreviewWidth,mPreviewHeight);
                    mShowFilter.draw(mEncodeFrameBuffer.getCacheTextureId());
                    mShowEGLHelper.setPresentationTime(mShowEGLHelper.getDefaultSurface(),0);
                    mShowEGLHelper.swapBuffers(mShowEGLHelper.getDefaultSurface());
                }else{
                    GLES20.glViewport(0,0,mPreviewWidth,mPreviewHeight);
                    mRenderer.draw(mInputTextureId);
                    mShowEGLHelper.swapBuffers(mShowEGLHelper.getDefaultSurface());
                }
            }
        }
    }
    mShowEGLHelper.destroyGLES(mShowEGLHelper.getDefaultSurface(),mShowEGLHelper.getDefaultContext());
}
 
開發者ID:aiyaapp,項目名稱:AAVT,代碼行數:81,代碼來源:CameraRecorder.java


注:本文中的android.opengl.GLES20.glGetIntegerv方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。