Hardware scaling the OpenGL surface with NativeActivity

限于喜欢 提交于 2019-12-02 16:45:07

问题


We're trying to run a complex OpenGL app on a device whose native screen size is 1080p. Unfortunately, the device's 3D chipset isn't really good enough for a decent frame rate at this size.

What we'd much prefer to do is the render at 720p (or less) and then do hardware accelerated upscaling to fill the screen.

I know Android can do this automatically with 2D content (using ANativeWindow_lock() and friends). Is there any way to do this automatically for 3D content as well?


回答1:


For a GLSurfaceView, use:

surfaceView = new GLSurfaceView(this);
surfaceView.getHolder().setFixedSize(1280, 720);

For a NativeActivity, use:

int32_t ret = ANativeWindow_setBuffersGeometry(window, 1280, 720, 0);

Found this in following blogpost:

Android Developers Blog - Using the Hardware Scaler for Performance and Efficiency



来源:https://stackoverflow.com/questions/14308070/hardware-scaling-the-opengl-surface-with-nativeactivity

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!