Android 不同DPI的OpenGL曲面视图缩放
我有一个分辨率为800x480的设备。当我创建GLSurfaceView时,我得到一个带有533x320的Android 不同DPI的OpenGL曲面视图缩放,android,opengl-es,android-ndk,scaling,hdpi,Android,Opengl Es,Android Ndk,Scaling,Hdpi,我有一个分辨率为800x480的设备。当我创建GLSurfaceView时,我得到一个带有533x320的onSurfaceChanged调用(显然应用了1.5 HDPI修改器),并且曲面被放大。所以当我画1像素厚的线时,它看起来很糟糕,我不能有完美的像素渲染 我想要的是本机分辨率的表面(800x480) 视图是以这种方式创建的(与NDK OpenGL示例类似),在活动的onCreate: this.requestWindowFeature(Window.FEATURE_NO_TITLE
onSurfaceChanged
调用(显然应用了1.5 HDPI修改器),并且曲面被放大。所以当我画1像素厚的线时,它看起来很糟糕,我不能有完美的像素渲染
我想要的是本机分辨率的表面(800x480)
视图是以这种方式创建的(与NDK OpenGL示例类似),在活动的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);
我不使用任何布局等。问题的根源似乎在于onSurfaceChanged命令向下传递(可能已更改)宽度和高度 构建视图的代码可能没有问题,但我们希望确保它是以实际设备分辨率构建的。 也许使用所需的宽度和高度显式调用
setLayout(int-width,int-height)
,可以让您获得更好的里程数
显然,在进行此操作之前,您必须确定实际的物理屏幕大小。获取实际物理像素的最佳方法是使用DisplayMetrics中的宽度像素和高度像素:
如果这不起作用,也许在不同的设备上尝试代码可能会得到正确的结果。在这种情况下,可能是设备相关的问题…我找到了解决方案:当我添加
<uses-sdk android:targetSdkVersion="8" android:minSdkVersion="8"/>
对于AndroidManifest.xml,我得到了正确的解析。老实说,在使用iOS几年后,Android对我来说是一个非常奇怪的平台
在这里可以找到解决方案:您可以发布一些代码,比如这个GLSurface视图所使用的布局吗?我不能凭空得出答案。当然,我会把它添加到问题中。我已经试过了,但令人惊讶的是,我的答案似乎也错了。HTC Desire Z:widthPixels 533 heightPixels 320 xdpi 254.000000 ydpi 254.000000密度1.500000 densDPI 240(设备具有本机分辨率800x480)哦,这是androids设备在工作中的碎片。。。无论如何,对清单文件的调用很好。