针对不同DPI的OpenGL表面视图缩放

Mar*_*ark 8 scaling android opengl-es android-ndk hdpi

我有一个800x480 res的设备.当我创建GLSurfaceView时,我onSurfaceChanged接到一个533x320 的呼叫(显然应用了1.5 HDPI修改器)并且表面被放大了.所以当我画1像素粗线看起来真的很糟糕,我不能有像素完美的渲染.

我想要的是原始分辨率表面(800x480).

View以这种方式创建(如在NDK OpenGL示例中),在Activity中onCreate:

    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

    view = new MyGLSurfaceView(this);
    setContentView(view);
Run Code Online (Sandbox Code Playgroud)

我不使用任何布局等.

Mar*_*ark 5

我找到了解决方案:添加时

<uses-sdk android:targetSdkVersion="8" android:minSdkVersion="8"/>
Run Code Online (Sandbox Code Playgroud)

到AndroidManifest.xml,我得到了适当的分辨率。老实说,经过几年与iOS的合作,Android对我来说是一个非常奇怪的平台...

在此找到解决方案:MonoDroid应用程序未使用正确的密度绘制