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


Java Matrix.scaleM方法代碼示例

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


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

示例1: recomputeMatrix

import android.opengl.Matrix; //導入方法依賴的package包/類
/**
 * Re-computes mModelViewMatrix, based on the current values for rotation, scale, and
 * translation.
 */
private void recomputeMatrix() {
    float[] modelView = mModelViewMatrix;

    Matrix.setIdentityM(modelView, 0);
    Matrix.translateM(modelView, 0, mPosX, mPosY, 0.0f);
    if (mAngle != 0.0f) {
        Matrix.rotateM(modelView, 0, mAngle, 0.0f, 0.0f, 1.0f);
    }
    Matrix.scaleM(modelView, 0, mScaleX, mScaleY, 1.0f);
    mMatrixReady = true;
}
 
開發者ID:AndyZhu1991,項目名稱:grafika,代碼行數:16,代碼來源:Sprite2d.java

示例2: getLayoutMatrix

import android.opengl.Matrix; //導入方法依賴的package包/類
/**
 * Returns layout transformation matrix that applies an optional mirror effect and compensates
 * for video vs display aspect ratio.
 */
public static float[] getLayoutMatrix(
    boolean mirror, float videoAspectRatio, float displayAspectRatio) {
  float scaleX = 1;
  float scaleY = 1;
  // Scale X or Y dimension so that video and display size have same aspect ratio.
  if (displayAspectRatio > videoAspectRatio) {
    scaleY = videoAspectRatio / displayAspectRatio;
  } else {
    scaleX = displayAspectRatio / videoAspectRatio;
  }
  // Apply optional horizontal flip.
  if (mirror) {
    scaleX *= -1;
  }
  final float matrix[] = new float[16];
  Matrix.setIdentityM(matrix, 0);
  Matrix.scaleM(matrix, 0, scaleX, scaleY, 1);
  adjustOrigin(matrix);
  return matrix;
}
 
開發者ID:Piasy,項目名稱:AppRTC-Android,代碼行數:25,代碼來源:RendererCommon.java

示例3: _drawBox

import android.opengl.Matrix; //導入方法依賴的package包/類
private void _drawBox(float x, float y, float sx, float sy, float r, float g, float b, float a, int tex){
    // scale and translate
  	float[] m = new float[16];
  	Matrix.setIdentityM(m, 0);
  	Matrix.scaleM(m, 0, 2.0f*sx, 2.0f*sy, 1.0f);
  	m[3] += (1.0-2.0*x);
  	m[7] += (1.0/_ratio-2.0*y);
  	//Log.v(TAG,"RATIO IS "+_ratio);
  	float[] m2 = new float[16];      	
  	Matrix.multiplyMM(m2, 0, m, 0, mMVPMatrix, 0);
  	if (tex == -1)
  		mSquare.draw(m2, r, g, b, a);
  	else
  		mSquareTex.draw(m2,r,g,b,a,tex);
    checkGlError("draw");
}
 
開發者ID:efroemling,項目名稱:bombsquad-remote-android,代碼行數:17,代碼來源:GLRenderer.java

示例4: getLayoutMatrix

import android.opengl.Matrix; //導入方法依賴的package包/類
/**
 * Returns layout transformation matrix that applies an optional mirror effect and compensates
 * for video vs display aspect ratio.
 */
public static void getLayoutMatrix(
        final float matrix[], boolean mirror, float videoAspectRatio, float displayAspectRatio) {
  float scaleX = 1;
  float scaleY = 1;
  // Scale X or Y dimension so that video and display size have same aspect ratio.
  if (displayAspectRatio > videoAspectRatio) {
    scaleY = videoAspectRatio / displayAspectRatio;
  } else {
    scaleX = displayAspectRatio / videoAspectRatio;
  }
  // Apply optional horizontal flip.
  if (mirror) {
    scaleX *= -1;
  }
  Matrix.setIdentityM(matrix, 0);
  Matrix.scaleM(matrix, 0, scaleX, scaleY, 1);
  adjustOrigin(matrix);
}
 
開發者ID:Piasy,項目名稱:VideoCRE,代碼行數:23,代碼來源:RendererCommon.java

示例5: setSize

import android.opengl.Matrix; //導入方法依賴的package包/類
@Override
public void setSize(int width, int height) {
    GLES20.glViewport(0, 0, width, height);
    checkError();
    Matrix.setIdentityM(mMatrices, mCurrentMatrixIndex);
    Matrix.orthoM(mProjectionMatrix, 0, 0, width, 0, height, -1, 1);
    Matrix.translateM(mMatrices, mCurrentMatrixIndex, 0, height, 0);
    Matrix.scaleM(mMatrices, mCurrentMatrixIndex, 1, -1, 1);
}
 
開發者ID:michelelacorte,項目名稱:FlickLauncher,代碼行數:10,代碼來源:GLES20Canvas.java

示例6: setMatrix

import android.opengl.Matrix; //導入方法依賴的package包/類
private void setMatrix(ShaderParameter[] params, float x, float y, float width, float height) {
    Matrix.translateM(mTempMatrix, 0, mMatrices, mCurrentMatrixIndex, x, y, 0f);
    Matrix.scaleM(mTempMatrix, 0, width, height, 1f);
    Matrix.multiplyMM(mTempMatrix, MATRIX_SIZE, mProjectionMatrix, 0, mTempMatrix, 0);
    GLES20.glUniformMatrix4fv(params[INDEX_MATRIX].handle, 1, false, mTempMatrix, MATRIX_SIZE);
    checkError();
}
 
開發者ID:michelelacorte,項目名稱:FlickLauncher,代碼行數:8,代碼來源:GLES20Canvas.java

示例7: updateViewPort

import android.opengl.Matrix; //導入方法依賴的package包/類
public void updateViewPort() {
    final CameraView cameraView = mCameraViewRef.get();
    if (cameraView != null) {
        final int viewWidth = cameraView.getWidth();
        final int viewHeight = cameraView.getHeight();
        final int previewWidth = cameraView.mPreviewWidth;
        final int previewHeight = cameraView.mPreviewHeight;

        //CenterCrop
        float scaleX = 1.0f;
        float scaleY = 1.0f;
        final double previewRatio = previewWidth * 1.0f / previewHeight;
        final double viewRatio = viewWidth * 1.0f / viewHeight;

        if (previewRatio < viewRatio) {
            scaleY = (float) (previewHeight * 1.0f / (previewWidth / viewRatio));
        } else {
            scaleX = (float) (previewWidth * 1.0f / (previewHeight * viewRatio));
        }

        Log.d(TAG, "scaleX:" + scaleX + ",scaleY:" + scaleY + ",previewRatio:" + previewRatio + ",viewRatio:" + viewRatio);
        Matrix.setIdentityM(mMvpMatrix, 0);
        Matrix.scaleM(mMvpMatrix, 0, scaleX, scaleY, 1.0f);

        if (cameraView.mGLSurfaceFilter != null) {
            cameraView.mGLSurfaceFilter.setMvpMatrix(mMvpMatrix);
        }

    }
}
 
開發者ID:LeonHover,項目名稱:MediaCodecRecorder,代碼行數:31,代碼來源:CameraView.java

示例8: _drawBG

import android.opengl.Matrix; //導入方法依賴的package包/類
private void _drawBG(float r, float g, float b, float a, int tex){
  	float[] m = new float[16];
	Matrix.setIdentityM(m, 0);
  	Matrix.scaleM(m, 0, -2.0f, 2.0f, 1.0f);

  	//float[] m2 = new float[16];      	
  	//Matrix.multiplyMM(m, 0, m, 0, mMVPMatrix, 0);
  	if (tex == -1)
  		mSquare.draw(m, r, g, b, a);
  	else
  		mSquareTex.draw(m,r,g,b,a,_bgTex);
    checkGlError("draw");
}
 
開發者ID:efroemling,項目名稱:bombsquad-remote-android,代碼行數:14,代碼來源:GLRenderer.java

示例9: getScaleMatrix

import android.opengl.Matrix; //導入方法依賴的package包/類
/**
 * Gets the matrix that will be used to scale this 3DString
 * @return float[] object
 */
public float[] getScaleMatrix() {
    Matrix.setIdentityM(this.scaleMatrix, 0);

    Matrix.scaleM(this.scaleMatrix, 0, this.getScaleX(), this.getScaleY(), this.getScaleZ());

    return this.scaleMatrix;
}
 
開發者ID:snada,項目名稱:BitmapFontLoader,代碼行數:12,代碼來源:Bitmap3DString.java

示例10: getScaleMatrix

import android.opengl.Matrix; //導入方法依賴的package包/類
/**
 * Gets the matrix that will be used to scale this 3D char
 * @return float[] object
 */
public float[] getScaleMatrix() {
    Matrix.setIdentityM(scaleMatrix, 0);

    Matrix.scaleM(
        scaleMatrix,
        0,
        (this.bitmapChar.getWidth() * this.getScaleX()),
        (this.bitmapChar.getHeight() * this.getScaleY()),
        this.getScaleZ()
    );

    return this.scaleMatrix;
}
 
開發者ID:snada,項目名稱:BitmapFontLoader,代碼行數:18,代碼來源:Bitmap3DChar.java

示例11: draw

import android.opengl.Matrix; //導入方法依賴的package包/類
void draw() {
    EGLDisplay mSavedEglDisplay = EGL14.eglGetCurrentDisplay();
    EGLSurface mSavedEglDrawSurface = EGL14.eglGetCurrentSurface(EGL14.EGL_DRAW);
    EGLSurface mSavedEglReadSurface = EGL14.eglGetCurrentSurface(EGL14.EGL_READ);
    EGLContext mSavedEglContext = EGL14.eglGetCurrentContext();
    {
        AndroidUntil.checkGlError("draw_S");
        if (mRecorderImpl.isFirstSetup()) {
            mRecorderImpl.startSwapAsync();
            mRecorderImpl.makeCurrent();
            AndroidUntil.checkGlError("initGL_S");

            mProgram = AndroidUntil.createProgram();
            maPositionHandle = GLES20.glGetAttribLocation(mProgram, "position");
            maTextCodeHandle = GLES20.glGetAttribLocation(mProgram, "inputTextureCoordinate");
            muSamplerHandle = GLES20.glGetUniformLocation(mProgram, "uSampler");
            muPosMtxHandle = GLES20.glGetUniformLocation(mProgram, "uPosMtx");

            Matrix.scaleM(mSymmetryMtx, 0, -1, 1, 1);
            GLES20.glDisable(GLES20.GL_DEPTH_TEST);
            GLES20.glDisable(GLES20.GL_CULL_FACE);
            GLES20.glDisable(GLES20.GL_BLEND);
            AndroidUntil.checkGlError("initGL_E");
        } else {
            mRecorderImpl.makeCurrent();
        }
        GLES20.glViewport(0, 0, mVideoWidth, mVideoHeight);
        GLES20.glClearColor(0f, 0f, 0f, 1f);
        GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
        GLES20.glUseProgram(mProgram);
        mNormalVtxBuf.position(0);
        GLES20.glVertexAttribPointer(maPositionHandle,
                3, GLES20.GL_FLOAT, false, 4 * 3, mNormalVtxBuf);
        GLES20.glEnableVertexAttribArray(maPositionHandle);
        mCameraVertexCoordinatesBuffer.position(0);
        GLES20.glVertexAttribPointer(maTextCodeHandle,
                2, GLES20.GL_FLOAT, false, 4 * 2, mCameraVertexCoordinatesBuffer);
        GLES20.glEnableVertexAttribArray(maTextCodeHandle);
        GLES20.glUniform1i(muSamplerHandle, 0);
        GLES20.glUniformMatrix4fv(muPosMtxHandle, 1, false, mNormalMtx, 0);
        GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
        GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mFboTexId);
        GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);

        mRecorderImpl.swapBuffers();
        AndroidUntil.checkGlError("draw_E");
    }
    if (!EGL14.eglMakeCurrent(
            mSavedEglDisplay,
            mSavedEglDrawSurface,
            mSavedEglReadSurface,
            mSavedEglContext)) {
        throw new RuntimeException("eglMakeCurrent failed");
    }
}
 
開發者ID:wuyisheng,項目名稱:libRtmp,代碼行數:56,代碼來源:RendererImpl.java

示例12: flip

import android.opengl.Matrix; //導入方法依賴的package包/類
/**
 * image mirror
 * @param x horizontal flip
 * @param y vertical flip
 */
public void flip(boolean x, boolean y) {
    if (x || y) {
        Matrix.scaleM(mMVPMatrix, 0, x ? -1 : 1, y ? -1 : 1, 1);
    }
}
 
開發者ID:AgoraIO,項目名稱:Agora-Video-Source-Android,代碼行數:11,代碼來源:TextureRenderer.java

示例13: handleMessage

import android.opengl.Matrix; //導入方法依賴的package包/類
@Override
public boolean handleMessage(Message msg) {
    switch (msg.what) {
        case WINDOW_MSG_CALCULATE_MVP_MATRIX:
            Matrix.setIdentityM(mMVPMatrix, 0);
            //平鋪
            float scaleX = 1.0f;
            float scaleY = 1.0f;
            final double previewRatio = mPreviewWidth * 1.0f / mPreviewHeight;
            final double viewRatio = mWidth * 1.0f / mHeight;

            if (previewRatio < viewRatio) {
                scaleY = (float) (mPreviewHeight * 1.0f / (mPreviewWidth / viewRatio));
            } else {
                scaleX = (float) (mPreviewWidth * 1.0f / (mPreviewHeight * viewRatio));
            }

            Matrix.scaleM(mMVPMatrix, 0, scaleX, scaleY, 1.0f);
            break;
        case WINDOW_MSG_ATTACH_SURFACE:
            Log.d(TAG, "WINDOW_MSG_ATTACH_SURFACE");
            Surface surface = (Surface) msg.obj;
            mGLSurface.createSurface(surface);
            mGLSurface.makeCurrent();
            break;
        case WINDOW_MSG_DETACH_SURFACE:
            Log.d(TAG, "WINDOW_MSG_DETACH_SURFACE");
            releaseGLSurface();
            break;
        case WINDOW_MSG_UPDATE:

            Log.d(TAG, "WINDOW_MSG_UPDATE");
            if (mGLSurface == null) {
                return false;
            }

            SurfaceTexture surfaceTexture = (SurfaceTexture) msg.obj;
            int textureIndex = msg.arg1;
            long presentationTime = msg.getData().getLong(UPDATE_PRESENTATION_TIME_KEY);

            surfaceTexture.getTransformMatrix(mTextureTransformMatrix);
            mGLSurface.makeCurrent();
            mGLSurfaceFilter.draw(textureIndex, mMVPMatrix, mTextureTransformMatrix);
            mGLSurface.setPresentationTime(presentationTime);
            mGLSurface.swapBuffers();

            final CallBack callBack = mCallBack;
            if (callBack != null) {
                callBack.onOffScreenWindowUpdate();
            }
            break;
    }
    return true;
}
 
開發者ID:LeonHover,項目名稱:MediaCodecRecorder,代碼行數:55,代碼來源:OffScreenWindow.java

示例14: scaleMVPMatrix

import android.opengl.Matrix; //導入方法依賴的package包/類
public void scaleMVPMatrix(float x, float y) {
    Matrix.setIdentityM(IDENTITY_MATRIX, 0);
    Matrix.scaleM(IDENTITY_MATRIX, 0, x, y, 1f);
}
 
開發者ID:hoanganhtuan95ptit,項目名稱:EditPhoto,代碼行數:5,代碼來源:FullFrameRect.java

示例15: scaleM

import android.opengl.Matrix; //導入方法依賴的package包/類
static void scaleM(float[] matrixData, float x, float y, float z) {
    Matrix.scaleM(matrixData, 0, x, y, z);
}
 
開發者ID:gplibs,項目名稱:android-magic-surface-view,代碼行數:4,代碼來源:MatrixManager.java


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