TypechoJoeTheme

鱼一的博客 ◡̈

yuyi

知不可乎骤得,托遗响于悲风
网站页面
标签搜索
c++

Pico4 开发试玩

在 Pico4 上运行示例 demo

  • 开发环境准备
  • demo 代码运行

开发环境准备

下载 Android Studio 并通过其安装 Android SDK、相应的 NDK 以进行 Pico4 设备上的原生 c++ 混合应用开发。

注意问题 ⚠️:
Android sdk、 Cmake、 JDK 等开发环境版本和项目代码中使用的版本对应。
Could not GET ‘https://dl.google.com/dl/android/maven2/com/android/tools/b***.pom 报错解决办法,取消 Android Studio 代理设置,在 gradle.property(global) 中注释掉代理设置代码,重启 Android Studio.

demo 代码运行

从 pico4 开发者官网下载原生开发的 Pico_openXR_SDK 文件,其中包含对应 pico4 版本的 helloXR 项目。

使用 Android Studio 打开该项目,构建 gradle 运行环境。

连接 pico4 物理设备到电脑,检测到设备后,点击运行。

项目浅识

  • 一级目录文件及其作用

    ├── CMakeLists.txt  // CMake 构建系统的配置文件
    ├── build  // 这个目录通常是构建过程中生成的。包含编译后的代码、生成的资源文件和构建过程中产生的文件
    ├── build.gradle  //Gradle 构建脚本。它定义了项目的构建过程、依赖关系和所需的插件等
    ├── gradle
    ├── gradle.properties
    ├── gradlew
    ├── gradlew.bat
    ├── hello_xr    // 主要包含源代码
    ├── local.properties // 本地机器特定的配置,比如 Android SDK 和 NDK 的路径
    ├── openxr_loader
    └── settings.gradle    // 配置整个 Gradle 项目的设置
  • 源代码目录文件

    ├── AndroidManifest.xml
    ├── CMakeLists.txt
    ├── check.h
    ├── common.h
    ├── d3d_common.cpp
    ├── d3d_common.h
    ├── geometry.h
    ├── graphicsapi.h
    ├── graphicsplugin.h
    ├── graphicsplugin_d3d11.cpp
    ├── graphicsplugin_d3d12.cpp
    ├── graphicsplugin_factory.cpp
    ├── graphicsplugin_opengl.cpp
    ├── graphicsplugin_opengles.cpp
    ├── graphicsplugin_vulkan.cpp
    ├── hello_xr.1
    ├── java
    ├── logger.cpp
    ├── logger.h
    ├── main.cpp
    ├── openxr_program.cpp
    ├── openxr_program.h
    ├── options.h
    ├── pch.cpp
    ├── pch.h
    ├── platformdata.h
    ├── platformplugin.h
    ├── platformplugin_android.cpp
    ├── platformplugin_factory.cpp
    ├── platformplugin_win32.cpp
    ├── platformplugin_xlib.cpp
    └── vulkan_shaders

这些文件是你的 hello_xr 项目的核心组成部分,每个文件都有其特定的用途和功能。

基本文件

  • AndroidManifest.xml: 这是 Android 应用的清单文件,定义了应用的基本特性,如权限、活动(Activities)和服务(Services)等。
  • CMakeLists.txt: CMake 配置文件,用于指导项目的编译和构建过程。

头文件和实现文件

  • check.h, common.h, geometry.h, graphicsapi.h, graphicsplugin.h, options.h, pch.h, platformdata.h, platformplugin.h: 这些 .h 文件是 C++ 头文件,定义了类、函数原型和其他类型的声明。
  • d3d_common.cpp, graphicsplugin_d3d11.cpp, graphicsplugin_d3d12.cpp, graphicsplugin_factory.cpp, graphicsplugin_opengl.cpp, graphicsplugin_opengles.cpp, graphicsplugin_vulkan.cpp, logger.cpp, main.cpp, openxr_program.cpp, platformplugin_android.cpp, platformplugin_factory.cpp, platformplugin_win32.cpp, platformplugin_xlib.cpp, pch.cpp: 这些 .cpp 文件包含了上述头文件中声明的函数和类的具体实现。

特定功能文件

  • d3d_common.cpp/h: 可能包含与 Direct3D(一种图形接口)相关的通用函数和定义。
  • graphicsplugin_*.cpp: 这些文件可能是针对不同图形 API(如 Direct3D 11, Direct3D 12, OpenGL, Vulkan 等)的实现。
  • logger.cpp/h: 定义了日志记录功能,用于记录程序运行时的信息。
  • openxr_program.cpp/h: 这些文件可能与 OpenXR API 的使用有关,用于创建和管理 VR/AR 体验。
  • platformplugin_*.cpp: 这些文件可能是针对不同平台(如 Android, Windows, Xlib 等)的特定功能实现。
  • vulkan_shaders: 这个目录可能包含用于 Vulkan 图形 API 的着色器代码。

其他文件

  • hello_xr.1: 这可能是一个文档文件,例如 man page(手册页)。
  • java 目录: 包含 Java 源代码,通常用于 Android 应用的 Java 层实现。

每个文件都是项目的一部分,共同协作以实现 VR/AR 应用的功能。🌟📚

main.cpp 代码逻辑

如果定义了 XR_USE_PLATFORM_ANDROID,即程序在 Android 平台上运行,代码将执行以下操作:

ShowHelp() 和 UpdateOptionsFromSystemProperties() 函数提供了帮助信息,并从系统属性中更新配置选项。
AndroidAppState 结构体和 app_handle_cmd() 函数用于处理 Android 应用的生命周期事件。
android_main() 函数是 Android 应用的入口点,它初始化了 OpenXR 程序,并且循环处理事件和渲染帧。

创建和初始化 OpenXR 程序:无论是在 Android 还是其他平台上,代码都会创建和初始化一个 OpenXR 程序。这包括创建实例、初始化系统、创建会话和交换链。
事件循环:程序进入一个循环,不断处理事件、轮询动作,并渲染新的帧。这个循环是 VR 应用的核心,确保了持续的用户交互和图形更新。

赞(0)
版权属于:

鱼一的博客 ◡̈

本文链接:

https://yuyi.monster/archives/218/(转载时请注明本文出处及文章链接)

评论 (0)

More Info for me 📱

IP信息

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月