Google VR двойное изображение в верхней части экрана ошибка
Я использую Google VR SDK, чтобы показать изображение на экране. Я сталкиваюсь со странной ошибкой при отображении объектов без искажений, хотя это происходит только на больших экранах (а именно 5,5 дюйма или больше). Для отключения искажения я использую gvrView.setDistortionCorrectionEnabled(false)
Результат выглядит так: Вы можете видеть, что в верхней части экрана есть вырезанная часть, которая снова показывает некоторые объекты.
Когда я использую искажение, проблема, кажется, исчезает.
Я дам соответствующий код здесь для справки:
public class MainActivity extends GvrActivity {
private GLSurfaceView mGLSurfaceView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fpv_activity_layout);
initGvrView();
}
private void initGvrView() {
GvrView gvrView = (GvrView) findViewById(R.id.gvr_view);
gvrView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
// Associate a GvrView.StereoRenderer with gvrView.
gvrView.setRenderer(new FpvRenderer(this));
AndroidCompat.setSustainedPerformanceMode(this, true);
gvrView.setDistortionCorrectionEnabled(false);
setGvrView(gvrView);
}
}
XML-файл:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.vr.sdk.base.GvrView
android:id="@+id/gvr_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true" />
</RelativeLayout>
Я использую эту функцию для загрузки текстур:
public static int loadTexture(final Context context, final int resourceId) {
final int[] textureHandle = new int[1];
GLES20.glGenTextures(1, textureHandle, 0);
if (textureHandle[0] != 0) {
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false; // No pre-scaling
// Read in the resource
final Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), resourceId, options);
// Bind to the texture in OpenGL
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle[0]);
// Set filtering
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
// Load the bitmap into the bound texture.
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
// Recycle the bitmap, since its data has been loaded into OpenGL.
bitmap.recycle();
}
if (textureHandle[0] == 0) {
throw new RuntimeException("Error loading texture.");
}
return textureHandle[0];
}
Кто-нибудь сталкивался с этим, есть идеи, почему это происходит и как это решить?
Я ценю помощь.