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];
}

Кто-нибудь сталкивался с этим, есть идеи, почему это происходит и как это решить?

Я ценю помощь.

0 ответов

Другие вопросы по тегам