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


Java GLES20.glTexImage2D方法代碼示例

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


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

示例1: loadTexture

import android.opengl.GLES20; //導入方法依賴的package包/類
public static int loadTexture(final IntBuffer data, final Size size, final int usedTexId) {
    int textures[] = new int[1];
    if (usedTexId == NO_TEXTURE) {
        GLES20.glGenTextures(1, textures, 0);
        GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[0]);
        GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
                GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
        GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
                GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
        GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
                GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
        GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
                GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
        GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, size.width, size.height,
                0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, data);
    } else {
        GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, usedTexId);
        GLES20.glTexSubImage2D(GLES20.GL_TEXTURE_2D, 0, 0, 0, size.width,
                size.height, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, data);
        textures[0] = usedTexId;
    }
    return textures[0];
}
 
開發者ID:vipycm,項目名稱:mao-android,代碼行數:24,代碼來源:OpenGlUtils.java

示例2: createFrameBuffer

import android.opengl.GLES20; //導入方法依賴的package包/類
public static void createFrameBuffer(int width, int height, int[] frameBuffer, int[] frameBufferTexture, int frameBufferSize) {
    for (int i = 0; i < frameBufferSize; i++) {

        GLES20.glGenTextures(1, frameBufferTexture, i);
        GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, frameBufferTexture[i]);
        GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, width, height, 0,
                GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, null);
        GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
                GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
        GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
                GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
        GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
                GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
        GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
                GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);

        GLES20.glGenFramebuffers(1, frameBuffer, i);
        GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, frameBuffer[i]);
        GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0,
                GLES20.GL_TEXTURE_2D, frameBufferTexture[i], 0);

        GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
        GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
    }
}
 
開發者ID:lzmlsfe,項目名稱:19porn,代碼行數:26,代碼來源:OpenGlUtils.java

示例3: initFrameBuffer

import android.opengl.GLES20; //導入方法依賴的package包/類
public void initFrameBuffer(int width, int height) {
    mWidth = width;
    mHeight = height;

    deleteFrameBuffer();

    int[] frameBuffers = new int[1];
    GLES20.glGenFramebuffers(1, frameBuffers, 0);
    mFrameBuffer = frameBuffers[0];

    int[] frameBufferTextures = new int[1];
    GLES20.glGenTextures(1, frameBufferTextures, 0);
    mFrameBufferTexture = frameBufferTextures[0];
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mFrameBufferTexture);
    GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, width, height, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, null);
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);

    GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, mFrameBuffer);
    GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, mFrameBufferTexture, 0);
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
    GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
}
 
開發者ID:vipycm,項目名稱:mao-android,代碼行數:26,代碼來源:CameraFilter.java

示例4: draw

import android.opengl.GLES20; //導入方法依賴的package包/類
public void draw() {
    if (getEffectMode() == VideoEffect.NORMAL_2D_MODE) {
        setupPreScene(mEyeGLProgram);
        setupMonoEye();
        drawEye();
        drawScene();
        setupPreScene(mUIOverlayProgram);
        drawUIOverlay();
        drawScene();
    } else {
        updateCurrentRotation();
        setupPreScene(mEyeGLProgram);
        setupRightEye();
        drawEye();
        drawScene();
        setupPreScene(mUIOverlayProgram);
        drawUIOverlay();
        drawScene();
        setupPreScene(mEyeGLProgram);
        setupLeftEye();
        drawEye();
        drawScene();
        setupPreScene(mUIOverlayProgram);
        drawUIOverlay();
        drawScene();

        if (FISH_EYE_CORRECTION) {
            GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mFBOTexture);
            GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, mViewWidth, mViewHeight, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, null);
            if (CHECK_GL_ERRORS) OpenGLUtils.checkGlError("glTexImage2D");
        
            GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mFBOTexture);
            GLES20.glCopyTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 0, 0, mViewWidth, mViewHeight, 0);
        
            GLES20.glScissor(0, 0, mViewWidth, mViewHeight);
            GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
            if (CHECK_GL_ERRORS) OpenGLUtils.checkGlError("glClear");
            drawFinalScene();
        }
    }
}
 
開發者ID:archos-sa,項目名稱:aos-Video,代碼行數:42,代碼來源:StereoDiveEffect.java

示例5: createImageTexture

import android.opengl.GLES20; //導入方法依賴的package包/類
/**
 * Creates a texture from raw data.
 *
 * @param data Image data, in a "direct" ByteBuffer.
 * @param width Texture width, in pixels (not bytes).
 * @param height Texture height, in pixels.
 * @param format Image data format (use constant appropriate for glTexImage2D(), e.g. GL_RGBA).
 * @return Handle to texture.
 */
public static int createImageTexture(ByteBuffer data, int width, int height, int format) {
    int[] textureHandles = new int[1];
    int textureHandle;

    GLES20.glGenTextures(1, textureHandles, 0);
    textureHandle = textureHandles[0];
    GlUtil.checkGlError("glGenTextures");

    // Bind the texture handle to the 2D texture target.
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle);

    // Configure min/mag filtering, i.e. what scaling method do we use if what we're rendering
    // is smaller or larger than the source image.
    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);
    GlUtil.checkGlError("loadImageTexture");

    // Load the data from the buffer into the texture handle.
    GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, /*level*/ 0, format,
            width, height, /*border*/ 0, format, GLES20.GL_UNSIGNED_BYTE, data);
    GlUtil.checkGlError("loadImageTexture");

    return textureHandle;
}
 
開發者ID:TobiasLee,項目名稱:FilterPlayer,代碼行數:36,代碼來源:GlUtil.java

示例6: initFBO

import android.opengl.GLES20; //導入方法依賴的package包/類
private void initFBO(int width, int height)
{
    Log.d(LOGTAG, "initFBO("+width+"x"+height+")");

    deleteFBO();

    GLES20.glGenTextures(1, texDraw, 0);
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texDraw[0]);
    GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, width, height, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, null);
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);

    GLES20.glGenTextures(1, texFBO, 0);
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texFBO[0]);
    GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, width, height, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, null);
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);

    //int hFBO;
    GLES20.glGenFramebuffers(1, FBO, 0);
    GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, FBO[0]);
    GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, texFBO[0], 0);
    Log.d(LOGTAG, "initFBO error status: " + GLES20.glGetError());

    int FBOstatus = GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER);
    if (FBOstatus != GLES20.GL_FRAMEBUFFER_COMPLETE)
        Log.e(LOGTAG, "initFBO failed, status: " + FBOstatus);

    mFBOWidth  = width;
    mFBOHeight = height;
}
 
開發者ID:jorenham,項目名稱:fingerblox,代碼行數:36,代碼來源:CameraGLRendererBase.java

示例7: bindTexture

import android.opengl.GLES20; //導入方法依賴的package包/類
@Override protected void bindTexture(int textureId) {

        super.bindTexture(textureId);

        GLES20.glActiveTexture(GLES20.GL_TEXTURE1);
        GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mToneCurveTextureId);
        GLES20.glUniform1i(muToneCurveTextureLoc, 1);

        if ((mRedCurve.size() >= 256)
                && (mGreenCurve.size() >= 256)
                && (mBlueCurve.size() >= 256)
                && (mRgbCompositeCurve.size() >= 256)) {
            byte[] toneCurveByteArray = new byte[256 * 4];
            for (int currentCurveIndex = 0; currentCurveIndex < 256; currentCurveIndex++) {
                // BGRA for upload to texture
                toneCurveByteArray[currentCurveIndex * 4 + 2] = (byte) ((int) Math.min(Math.max(
                        currentCurveIndex
                                + mBlueCurve.get(currentCurveIndex)
                                + mRgbCompositeCurve.get(currentCurveIndex), 0), 255) & 0xff);
                toneCurveByteArray[currentCurveIndex * 4 + 1] = (byte) ((int) Math.min(Math.max(
                        currentCurveIndex
                                + mGreenCurve.get(currentCurveIndex)
                                + mRgbCompositeCurve.get(currentCurveIndex), 0), 255) & 0xff);
                toneCurveByteArray[currentCurveIndex * 4] = (byte) ((int) Math.min(Math.max(
                        currentCurveIndex
                                + mRedCurve.get(currentCurveIndex)
                                + mRgbCompositeCurve.get(currentCurveIndex), 0), 255) & 0xff);
                toneCurveByteArray[currentCurveIndex * 4 + 3] = (byte) (255 & 0xff);
            }

            GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256 /*width*/,
                    1 /*height*/, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE,
                    ByteBuffer.wrap(toneCurveByteArray));
        }
    }
 
開發者ID:hoanganhtuan95ptit,項目名稱:EditPhoto,代碼行數:36,代碼來源:CameraFilterToneCurve.java

示例8: update

import android.opengl.GLES20; //導入方法依賴的package包/類
public void update(){
	bind();
	filter( Texture.LINEAR, Texture.LINEAR );
	pixels.position(0);
	GLES20.glTexImage2D(
			GLES20.GL_TEXTURE_2D,
			0,
			GLES20.GL_RGBA,
			width,
			height,
			0,
			GLES20.GL_RGBA,
			GLES20.GL_UNSIGNED_BYTE,
			pixels );
}
 
開發者ID:G2159687,項目名稱:ESPD,代碼行數:16,代碼來源:FogOfWar.java

示例9: setSize

import android.opengl.GLES20; //導入方法依賴的package包/類
/**
 * (Re)allocate texture. Will do nothing if the requested size equals the current size. An
 * EGLContext must be bound on the current thread when calling this function. Must be called at
 * least once before using the framebuffer. May be called multiple times to change size.
 */
public void setSize(int width, int height) {
  if (width == 0 || height == 0) {
    throw new IllegalArgumentException("Invalid size: " + width + "x" + height);
  }
  if (width == this.width && height == this.height) {
    return;
  }
  this.width = width;
  this.height = height;

  // Allocate texture.
  GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
  GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureId);
  GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, pixelFormat, width, height, 0, pixelFormat,
      GLES20.GL_UNSIGNED_BYTE, null);
  GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
  GlUtil.checkNoGLES2Error("GlTextureFrameBuffer setSize");

  // Attach the texture to the framebuffer as color attachment.
  GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, frameBufferId);
  GLES20.glFramebufferTexture2D(
      GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, textureId, 0);

  // Check that the framebuffer is in a good state.
  final int status = GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER);
  if (status != GLES20.GL_FRAMEBUFFER_COMPLETE) {
    throw new IllegalStateException("Framebuffer not complete, status: " + status);
  }

  GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
}
 
開發者ID:Piasy,項目名稱:AppRTC-Android,代碼行數:37,代碼來源:GlTextureFrameBuffer.java

示例10: uploadYuvData

import android.opengl.GLES20; //導入方法依賴的package包/類
/**
 * Upload |planes| into OpenGL textures, taking stride into consideration.
 *
 * @return Array of three texture indices corresponding to Y-, U-, and V-plane respectively.
 */
public int[] uploadYuvData(int width, int height, int[] strides, ByteBuffer[] planes) {
  final int[] planeWidths = new int[] {width, width / 2, width / 2};
  final int[] planeHeights = new int[] {height, height / 2, height / 2};
  // Make a first pass to see if we need a temporary copy buffer.
  int copyCapacityNeeded = 0;
  for (int i = 0; i < 3; ++i) {
    if (strides[i] > planeWidths[i]) {
      copyCapacityNeeded = Math.max(copyCapacityNeeded, planeWidths[i] * planeHeights[i]);
    }
  }
  // Allocate copy buffer if necessary.
  if (copyCapacityNeeded > 0
      && (copyBuffer == null || copyBuffer.capacity() < copyCapacityNeeded)) {
    copyBuffer = ByteBuffer.allocateDirect(copyCapacityNeeded);
  }
  // Make sure YUV textures are allocated.
  if (yuvTextures == null) {
    yuvTextures = new int[3];
    for (int i = 0; i < 3; i++) {
      yuvTextures[i] = GlUtil.generateTexture(GLES20.GL_TEXTURE_2D);
    }
  }
  // Upload each plane.
  for (int i = 0; i < 3; ++i) {
    GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + i);
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, yuvTextures[i]);
    // GLES only accepts packed data, i.e. stride == planeWidth.
    final ByteBuffer packedByteBuffer;
    if (strides[i] == planeWidths[i]) {
      // Input is packed already.
      packedByteBuffer = planes[i];
    } else {
      VideoRenderer.nativeCopyPlane(
          planes[i], planeWidths[i], planeHeights[i], strides[i], copyBuffer, planeWidths[i]);
      packedByteBuffer = copyBuffer;
    }
    GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_LUMINANCE, planeWidths[i],
        planeHeights[i], 0, GLES20.GL_LUMINANCE, GLES20.GL_UNSIGNED_BYTE, packedByteBuffer);
  }
  return yuvTextures;
}
 
開發者ID:Piasy,項目名稱:AppRTC-Android,代碼行數:47,代碼來源:VideoFrameDrawer.java


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