this renders a green square with the right aspect ratio. However, it's doing so by rendering the entire display (not what we want)

This commit is contained in:
amwatson 2024-02-08 22:40:11 -06:00
parent f231577afd
commit 889d99f165
5 changed files with 20 additions and 4 deletions

View file

@ -3,7 +3,7 @@ package org.citra.citra_emu.vr.ui
import org.citra.citra_emu.R
import org.citra.citra_emu.vr.VrActivity
class VrKeyboardLayer(activity: VrActivity) : VrUILayer(activity, R.layout.vr_keyboard) {
class VrKeyboardLayer(activity: VrActivity) : VrUILayer(activity, R.layout.vr_ui_test) {
override fun onSurfaceCreated() {
super.onSurfaceCreated()

View file

@ -61,8 +61,8 @@ abstract class VrUILayer(
val measuredHeightPx = contentView.measuredHeight
val displayMetrics = activity.resources.displayMetrics
val measuredWidthDp = measuredWidthPx / displayMetrics.density
val measuredHeightDp = measuredHeightPx / displayMetrics.density
val measuredWidthDp = (measuredWidthPx / displayMetrics.density) / (DEFAULT_DENSITY / requestedDensity);
val measuredHeightDp = measuredHeightPx / displayMetrics.density / (DEFAULT_DENSITY / requestedDensity);
// Call native method with measured dimensions
nativeSetBounds(handle, 0, 0, measuredWidthDp.roundToInt(), measuredHeightDp.roundToInt())

View file

@ -180,7 +180,7 @@ XrVector2f GetDensityScaleForSize(const int32_t texWidth,
const float scaleFactor)
{
const float density = GetDensitySysprop();
return XrVector2f{2.0f * static_cast<float>(texWidth) / density,
return XrVector2f{static_cast<float>(texWidth) / density,
(static_cast<float>(texHeight) / density)} *
scaleFactor;
}

View file

@ -613,6 +613,11 @@ private:
layers[layerCount++].Quad = quadLayer;
}
#endif
if (mUILayer->IsSwapchainCreated()) {
mUILayer->Frame(gOpenXr->mLocalSpace, layers, layerCount);
}
{
{

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="500dp"
android:layout_height="500dp"
android:background="@color/citra_primary"
android:orientation="horizontal"
android:layout_gravity="center"
android:gravity="center"
>
</LinearLayout>