mSurfaceTexture.updateTexImage()

ondrawframe中

mSurfaceTexture.updateTexImage();

checkGlError("onDrawFrame start");
mSurfaceTexture.getTransformMatrix(mSTMatrix);
GLES30.glUseProgram(mProgram);
checkGlError("glUseProgram");
GLES30.glActiveTexture(GLES30.GL_TEXTURE0);
GLES30.glBindTexture(mTarget, mTexId);




mSurfaceTexture.updateTexImage();
mSurfaceTexture.getTransformMatrix(mSTMatrix);
这两个在第一个调用的时候矩阵变幻,所以要调用第二个,更新矩阵
mSTMatrix
用在这里
vTextureCoord = (uSTMatrix * aTextureCoord).xy
传值给内建变量vTextureCoord 用来更新每一个片元的坐标




mSTMatrix
getTransformMatrix(mtx);
其实是将变幻的矩阵传到mtx里面,而不散将
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 SurfaceTexture 更新图片的示例代码: ```java public class MainActivity extends AppCompatActivity implements SurfaceTextureListener { private Camera mCamera; private SurfaceTexture mSurfaceTexture; private ImageView mImageView; private Handler mHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mImageView = findViewById(R.id.image_view); mHandler = new Handler(); // 初始化摄像头 mCamera = Camera.open(); mCamera.setDisplayOrientation(90); // 初始化 SurfaceTexture mSurfaceTexture = new SurfaceTexture(0); mSurfaceTexture.setOnFrameAvailableListener(new SurfaceTexture.OnFrameAvailableListener() { @Override public void onFrameAvailable(SurfaceTexture surfaceTexture) { mHandler.post(new Runnable() { @Override public void run() { mSurfaceTexture.updateTexImage(); mImageView.invalidate(); } }); } }); // 将 SurfaceTexture 与摄像头绑定 try { mCamera.setPreviewTexture(mSurfaceTexture); } catch (IOException e) { e.printStackTrace(); } // 开始预览 mCamera.startPreview(); } @Override public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { } @Override public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { } @Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { mCamera.stopPreview(); mCamera.release(); return true; } @Override public void onSurfaceTextureUpdated(SurfaceTexture surface) { // 当有新的帧可用时,会触发 mSurfaceTexture.setOnFrameAvailableListener() 中的 onFrameAvailable() 方法 } } ``` 其中,`mSurfaceTexture.updateTexImage()` 方法会更新 SurfaceTexture 中的图像,`mImageView.invalidate()` 方法会强制 ImageView 刷新界面,以显示最新的图像。在 `onSurfaceTextureUpdated()` 方法中,我们可以对更新的图像进行进一步处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值