我正在使用glsurfaceview和它的渲染器来显示GLES到设备的全屏。这按预期工作。android glsurfaceview stretch to fit
现在我想添加选项来“缩放”输出尺寸。我的意思是(例如)将GLES渲染到屏幕四分之一的视口,然后在显示时拉伸到全屏。这将使较慢的着色器渲染速度更快,并具有一点块状。
我目前可以缩小GLES大小,改变glViewPort并在屏幕的左下角呈现。我怎样才能让这个较低的季度延伸到填满整个屏幕?
非常感谢任何提示/答案。
解决方案经过一些更多的试验和错误和谷歌搜索。这是将四分之一大小的图像渲染为全屏。
在创建glsurfaceview之后;
glSurfaceView.getHolder().setFixedSize(glWidth,glHeight);
glHeight和glWidth是内部GLES渲染大小。所以要渲染一个图像1/4的屏幕使用glWidth = screenWidth/2和glHeight = screenHeight/2
然后在onSurfaceChanged中设置glViewPort;
glViewport(0, 0, screenWidth/2, screenHeight/2);
宾果。更快的渲染(但2×2块像素)输出。
希望能帮助其他人解决此问题。
有没有一种方法来指定缩放算法?默认情况下,它在伸展时似乎会执行线性或双线性模糊。是否有可能有拉伸不过滤,所以结果是方形像素? – Some1Else
过滤由显示硬件决定,通常是双线性的。通过使Surface的大小与View的大小成比例,可以得到* square *像素;注意答案中链接的Grafika演示中使用的Surface的奇数大小。通过使Surface与View的大小相同,并在GLES中执行“胖像素”操作,可以获得* sharp *像素 - 您无法控制显示缩放器。 – fadden