|
14 | 14 | import org.lwjgl.system.linux.X11; |
15 | 15 | import org.lwjgl.system.windows.User32; |
16 | 16 | import org.vivecraft.client_vr.settings.VRSettings; |
| 17 | +import org.vivecraft.util.VLoader; |
17 | 18 |
|
18 | 19 | import java.util.Objects; |
19 | 20 |
|
@@ -110,61 +111,59 @@ public Struct checkGraphics(MemoryStack stack, XrInstance instance, long systemI |
110 | 111 | class Mobile implements DeviceCompat { |
111 | 112 | @Override |
112 | 113 | public long getPlatformInfo(MemoryStack stack) { |
113 | | -// return XrInstanceCreateInfoAndroidKHR.calloc(stack).set( |
114 | | -// KHRAndroidCreateInstance.XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR, |
115 | | -// NULL, |
116 | | -// VLoader.getDalvikVM(), |
117 | | -// VLoader.getDalvikActivity() |
118 | | -// ).address(); |
119 | | - return NULL; |
| 114 | + return XrInstanceCreateInfoAndroidKHR.calloc(stack).set( |
| 115 | + KHRAndroidCreateInstance.XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR, |
| 116 | + NULL, |
| 117 | + VLoader.getDalvikVM(), |
| 118 | + VLoader.getDalvikActivity() |
| 119 | + ).address(); |
120 | 120 | } |
121 | 121 |
|
122 | 122 | @Override |
123 | 123 | public void initOpenXRLoader(MemoryStack stack) { |
124 | | -// VRSettings.LOGGER.info("Platform: {}", System.getProperty("os.version")); |
125 | | -// VLoader.setupAndroid(); |
126 | | -// XrLoaderInitInfoAndroidKHR initInfo = XrLoaderInitInfoAndroidKHR.calloc(stack).set( |
127 | | -// KHRLoaderInitAndroid.XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR, |
128 | | -// NULL, |
129 | | -// VLoader.getDalvikVM(), |
130 | | -// VLoader.getDalvikActivity() |
131 | | -// ); |
132 | | -// |
133 | | -// KHRLoaderInit.xrInitializeLoaderKHR(XrLoaderInitInfoBaseHeaderKHR.create(initInfo.address())); |
| 124 | + VRSettings.LOGGER.info("Platform: {}", System.getProperty("os.version")); |
| 125 | + VLoader.setupAndroid(); |
| 126 | + // Ensure Android XR environment is ready |
| 127 | + try {Thread.sleep(2500);} catch (InterruptedException ignored) {} |
| 128 | + XrLoaderInitInfoAndroidKHR initInfo = XrLoaderInitInfoAndroidKHR.calloc(stack).set( |
| 129 | + KHRLoaderInitAndroid.XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR, |
| 130 | + NULL, |
| 131 | + VLoader.getDalvikVM(), |
| 132 | + VLoader.getDalvikActivity() |
| 133 | + ); |
| 134 | + |
| 135 | + KHRLoaderInit.xrInitializeLoaderKHR(XrLoaderInitInfoBaseHeaderKHR.create(initInfo.address())); |
134 | 136 | } |
135 | 137 |
|
136 | 138 | @Override |
137 | 139 | public String getGraphicsExtension() { |
138 | | - //return KHROpenGLESEnable.XR_KHR_OPENGL_ES_ENABLE_EXTENSION_NAME; |
139 | | - return null; |
| 140 | + return KHROpenGLESEnable.XR_KHR_OPENGL_ES_ENABLE_EXTENSION_NAME; |
140 | 141 | } |
141 | 142 |
|
142 | 143 | @Override |
143 | 144 | public XrSwapchainImageOpenGLKHR.Buffer createImageBuffers(int imageCount, MemoryStack stack) { |
144 | | -// XrSwapchainImageOpenGLKHR.Buffer swapchainImageBuffer = XrSwapchainImageOpenGLKHR.calloc(imageCount, stack); |
145 | | -// for (XrSwapchainImageOpenGLKHR image : swapchainImageBuffer) { |
146 | | -// image.type(KHROpenGLESEnable.XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR); |
147 | | -// } |
148 | | -// |
149 | | -// return swapchainImageBuffer; |
150 | | - return null; |
| 145 | + XrSwapchainImageOpenGLKHR.Buffer swapchainImageBuffer = XrSwapchainImageOpenGLKHR.calloc(imageCount, stack); |
| 146 | + for (XrSwapchainImageOpenGLKHR image : swapchainImageBuffer) { |
| 147 | + image.type(KHROpenGLESEnable.XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR); |
| 148 | + } |
| 149 | + |
| 150 | + return swapchainImageBuffer; |
151 | 151 | } |
152 | 152 |
|
153 | 153 | @Override |
154 | 154 | public Struct checkGraphics(MemoryStack stack, XrInstance instance, long systemID) { |
155 | | -// XrGraphicsRequirementsOpenGLESKHR graphicsRequirements = XrGraphicsRequirementsOpenGLESKHR.calloc(stack).type(KHROpenGLESEnable.XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_ES_KHR); |
156 | | -// KHROpenGLESEnable.xrGetOpenGLESGraphicsRequirementsKHR(instance, systemID, graphicsRequirements); |
157 | | -// XrGraphicsBindingOpenGLESAndroidKHR graphicsBinding = XrGraphicsBindingOpenGLESAndroidKHR.calloc(stack); |
158 | | -// graphicsBinding.set( |
159 | | -// KHROpenGLESEnable.XR_TYPE_GRAPHICS_BINDING_OPENGL_ES_ANDROID_KHR, |
160 | | -// NULL, |
161 | | -// VLoader.getEGLDisplay(), |
162 | | -// VLoader.getEGLConfig(), |
163 | | -// VLoader.getEGLContext() |
164 | | -// ); |
165 | | -// |
166 | | -// return graphicsBinding; |
167 | | - return null; |
| 155 | + XrGraphicsRequirementsOpenGLESKHR graphicsRequirements = XrGraphicsRequirementsOpenGLESKHR.calloc(stack).type(KHROpenGLESEnable.XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_ES_KHR); |
| 156 | + KHROpenGLESEnable.xrGetOpenGLESGraphicsRequirementsKHR(instance, systemID, graphicsRequirements); |
| 157 | + XrGraphicsBindingOpenGLESAndroidKHR graphicsBinding = XrGraphicsBindingOpenGLESAndroidKHR.calloc(stack); |
| 158 | + graphicsBinding.set( |
| 159 | + KHROpenGLESEnable.XR_TYPE_GRAPHICS_BINDING_OPENGL_ES_ANDROID_KHR, |
| 160 | + NULL, |
| 161 | + VLoader.getEGLDisplay(), |
| 162 | + VLoader.getEGLConfig(), |
| 163 | + VLoader.getEGLContext() |
| 164 | + ); |
| 165 | + |
| 166 | + return graphicsBinding; |
168 | 167 | } |
169 | 168 | } |
170 | 169 | } |
0 commit comments