我使用的玻璃表面视图和它的渲染器,以显示GLES的设备全屏。这如预期的那样起作用。
现在,我想添加选项,以“缩放”输出大小。我的意思是(例如)将GLES呈现到屏幕的四分之一的视口,然后在显示时伸展到整个屏幕。这将允许较慢的着色器被渲染得更快一点。
我目前可以缩小GLES大小,改变glViewPort,并在屏幕左下角呈现。我怎样才能让这个下半个季度伸展来填充整个屏幕?
非常感谢你提供的任何建议/答案。
解决方案后,更多的尝试和错误和谷歌。这是渲染四分之一大小的图像到全屏。
就在玻璃表面视图被创造之后;
glSurfaceView.getHolder().setFixedSize(glWidth,glHeight);
glHeight和glWidth是GLES的内部呈现大小。因此,要渲染屏幕的1/4图像,请使用glWidth=屏幕宽度/2和glHL.8=屏幕宽度/2。
然后在onSurfaceChanged内设置glViewPort;
glViewport(0, 0, screenWidth/2, screenHeight/2);
对啰。更快的呈现(但2x2块像素)输出。
希望这能帮助其他人解决这个问题。
发布于 2015-10-15 07:57:53
你的问题已经有答案了,但我会详细介绍一些链接。
曲面的大小与视图的大小无关。如果他们是不同的,显示硬件缩放的表面,因为它是在它的方式,以显示。这意味着您可以使用setFixedSize()
调用为Surface设置任意大小,该调用可用于减少必须由画布或GLES更新的像素数。
如果您正在使用画布绘制软件,它还允许您避免重新缩放位图,因为您可以依赖Surface在每个设备上都是相同大小的。
https://stackoverflow.com/questions/33141858
复制