问题
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