这是我最后的技术问题,我必须在我的应用程序上完成4个月的工作。
我会尽量简单,因为我需要指定解决方案。
简而言之:我需要拉伸我的glSurfaceView
我正在使用自定义glsurfaceView,它实现了OnMeasure方法来设置表面的实际宽度和高度
例如,我设置了1280和720的宽度和高度
然后我使用openGL并用glReadPixel()方法获取像素来编码视频
到目前为止一切顺利。
我以这种方式添加视图:
this.addContentView(this.mRenderSurfaceView, BaseGameActivity.createSurfaceViewLayoutParams());
何时:
protected static LayoutParams createSurfaceViewLayoutParams() {
final LayoutParams layoutParams = new LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.MATCH_PARENT);
layoutParams.gravity = Gravity.CENTER;
return layoutParams;
}
我希望glsurface是我在OnMeasure中设置的actucal像素,
这意味着glReadPixel()函数将获得与我设置的像素相同的像素,
但是,我想缩放这个表面,而不是改为actucal像素。
当我尝试这个时:
this.mRenderSurfaceView.setPivotX(0.0));
this.mRenderSurfaceView.setScaleX(2.0));
它只是将表面复制到屏幕中的另一个位置,没有任何比例。
我做错了什么?
请,我不需要改变这个表面的实际宽度和高度。我需要它 - 但我必须缩放它,用户会看到它大于我用onMeasure方法设置的真实像素
**我将表面编码为视频,因此宽度/高度的任何变化都会改变我在glReadpixel中得到的像素 - 所以只需缩放。