在仅在纵向模式下运行的游戏中,我尝试通过清单强制传感器:
android:configChanges="locale|orientation|keyboardHidden|screenSize|screenLayout"
android:screenOrientation="sensorPortrait"
但是,当我以纵向方式锁定设备时,将其旋转为横向,然后将其解锁:
这是它在肖像中的样子:
我认为发生这种情况是因为onSurfaceChanged被调用了两次,但AFAIK没有我能真正做到的。
在我使用的渲染器中:
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
if (b_GameRunning) {
// mark the fact that textures need reloading
b_SurfaceWasChanged = true;
}
}
public void onSurfaceChanged(GL10 gl, int w, int h) {
gl.glMatrixMode( GL_PROJECTION );
gl.glLoadIdentity();
n_width = w;
n_height = h;
gl.glOrthof(0.f, (float)m_width, (float)m_height, 0.f, -1.f, 1.0f);
}
public void onDrawFrame(GL10 gl) {
if (m_bGameRunning) {
if (b_SurfaceWasChanged) {
b_SurfaceWasChanged = false;
ReloadTextures();
}
GameRender();
}
}
答案 0 :(得分:1)
非常感谢harism。
我将onSurfaceChanged
更改为:
public void onSurfaceChanged(GL10 gl, int w, int h) {
n_width = w;
n_height = h;
gl.glViewport(0, 0, n_width, n_height);
gl.glMatrixMode( GL_PROJECTION );
gl.glLoadIdentity();
gl.glOrthof(0.f, (float)m_width, (float)m_height, 0.f, -1.f, 1.0f);
}