David Given
David Given

Reputation: 13701

Hardware scaling the OpenGL surface with NativeActivity

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?

Upvotes: 0

Views: 997

Answers (1)

Rafael Bankosegger
Rafael Bankosegger

Reputation: 266

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

Upvotes: 1

Related Questions