添加调试信息
This commit is contained in:
parent
432502e933
commit
bb6eee2250
@ -75,6 +75,7 @@ class Panda3DWorld(ShowBase):
|
||||
loadPrcFileData("", "gl-force-flush false") # 避免强制glFlush导致的性能损失
|
||||
loadPrcFileData("", "sync-video false") # 禁用默认VSync,让OpenVR控制
|
||||
loadPrcFileData("", "support-stencil false") # 禁用不必要的模板缓冲区
|
||||
loadPrcFileData("", "clock-mode non-real-time") # 禁用Panda3D帧率控制,让OpenVR控制
|
||||
# loadPrcFileData("", "gl-debug true") # 调试时可启用OpenGL调试
|
||||
|
||||
if (is_fullscreen):
|
||||
|
||||
2015
core/vr_manager.py
2015
core/vr_manager.py
File diff suppressed because it is too large
Load Diff
123
run_vr_test.sh
Executable file
123
run_vr_test.sh
Executable file
@ -0,0 +1,123 @@
|
||||
#!/bin/bash
|
||||
|
||||
# VR性能测试启动脚本
|
||||
# 使用方法: ./run_vr_test.sh
|
||||
|
||||
echo "🚀 VR性能测试启动脚本"
|
||||
echo "======================"
|
||||
|
||||
# 检查是否在正确的目录
|
||||
if [ ! -f "vr_performance_test.py" ]; then
|
||||
echo "❌ 错误:找不到vr_performance_test.py文件"
|
||||
echo "请在EG项目根目录运行此脚本"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查Python是否可用
|
||||
if ! command -v python3 &> /dev/null; then
|
||||
if ! command -v python &> /dev/null; then
|
||||
echo "❌ 错误:找不到Python解释器"
|
||||
exit 1
|
||||
else
|
||||
PYTHON_CMD="python"
|
||||
fi
|
||||
else
|
||||
PYTHON_CMD="python3"
|
||||
fi
|
||||
|
||||
echo "✓ 使用Python解释器: $PYTHON_CMD"
|
||||
|
||||
# 检查核心模块是否存在
|
||||
if [ ! -d "core" ]; then
|
||||
echo "❌ 错误:找不到core目录"
|
||||
echo "请确保在EG项目根目录中运行"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "core/vr_manager.py" ]; then
|
||||
echo "❌ 错误:找不到core/vr_manager.py文件"
|
||||
echo "VR管理器模块不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✓ 核心模块检查通过"
|
||||
|
||||
# 检查VR相关依赖
|
||||
echo "🔍 检查VR依赖..."
|
||||
|
||||
$PYTHON_CMD -c "import openvr" 2>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ OpenVR Python绑定可用"
|
||||
else
|
||||
echo "⚠️ 警告:OpenVR Python绑定不可用"
|
||||
echo " 如果需要VR功能,请安装: pip install openvr"
|
||||
fi
|
||||
|
||||
$PYTHON_CMD -c "from panda3d.core import Vec3" 2>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Panda3D可用"
|
||||
else
|
||||
echo "❌ 错误:Panda3D不可用"
|
||||
echo "请安装Panda3D: pip install panda3d"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查可选的性能监控依赖
|
||||
echo "🔍 检查性能监控依赖..."
|
||||
|
||||
$PYTHON_CMD -c "import psutil" 2>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ psutil可用(CPU/内存监控)"
|
||||
else
|
||||
echo "⚠️ 建议安装psutil以获得完整性能监控: pip install psutil"
|
||||
fi
|
||||
|
||||
$PYTHON_CMD -c "import GPUtil" 2>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ GPUtil可用(GPU监控)"
|
||||
else
|
||||
echo "⚠️ 建议安装GPUtil以获得GPU监控: pip install GPUtil"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "🎮 启动前检查清单:"
|
||||
echo "□ VR头显已连接并开机"
|
||||
echo "□ SteamVR正在运行"
|
||||
echo "□ VR头显已完成初始设置"
|
||||
echo "□ VR跟踪系统正常工作"
|
||||
echo ""
|
||||
|
||||
# 询问用户是否继续
|
||||
echo "是否继续启动VR性能测试?"
|
||||
echo "按Enter继续,或按Ctrl+C取消..."
|
||||
read -r
|
||||
|
||||
echo ""
|
||||
echo "🚀 正在启动VR性能测试..."
|
||||
echo "控制说明:"
|
||||
echo " ESC - 退出测试"
|
||||
echo " 1-9 - 设置场景复杂度"
|
||||
echo " R - 重置性能计数器"
|
||||
echo " P - 手动输出性能报告"
|
||||
echo " D - 切换调试模式"
|
||||
echo "VR分辨率控制:"
|
||||
echo " Q - 切换质量预设 (性能/平衡/质量)"
|
||||
echo " [ - 降低分辨率缩放"
|
||||
echo " ] - 提高分辨率缩放"
|
||||
echo " I - 显示分辨率信息"
|
||||
echo ""
|
||||
|
||||
# 启动测试
|
||||
$PYTHON_CMD vr_performance_test.py
|
||||
|
||||
# 检查退出状态
|
||||
if [ $? -eq 0 ]; then
|
||||
echo ""
|
||||
echo "✅ VR性能测试正常结束"
|
||||
else
|
||||
echo ""
|
||||
echo "❌ VR性能测试异常退出(错误代码:$?)"
|
||||
fi
|
||||
|
||||
echo "📋 检查当前目录中的CSV文件获取详细性能数据"
|
||||
echo "📖 查看VR_PERFORMANCE_TEST_README.md获取详细使用说明"
|
||||
@ -498,6 +498,11 @@ class MainWindow(QMainWindow):
|
||||
# 测试功能
|
||||
self.vrTestPipelineAction = self.vrDebugMenu.addAction('测试管线监控')
|
||||
|
||||
# VR测试模式
|
||||
self.vrTestModeAction = self.vrDebugMenu.addAction('VR测试模式')
|
||||
self.vrTestModeAction.setCheckable(True)
|
||||
self.vrTestModeAction.setChecked(False) # 默认关闭
|
||||
|
||||
self.vrDebugSettingsAction = self.vrDebugMenu.addAction('调试设置...')
|
||||
|
||||
# 初始状态下禁用退出VR选项
|
||||
@ -978,6 +983,7 @@ class MainWindow(QMainWindow):
|
||||
self.vrPoseRenderCallbackAction.triggered.connect(lambda: self.onSetVRPoseStrategy('render_callback'))
|
||||
self.vrPoseUpdateTaskAction.triggered.connect(lambda: self.onSetVRPoseStrategy('update_task'))
|
||||
self.vrTestPipelineAction.triggered.connect(self.onTestVRPipeline)
|
||||
self.vrTestModeAction.triggered.connect(self.onToggleVRTestMode)
|
||||
self.vrDebugSettingsAction.triggered.connect(self.onShowVRDebugSettings)
|
||||
|
||||
|
||||
@ -2517,6 +2523,37 @@ class MainWindow(QMainWindow):
|
||||
|
||||
return dialog
|
||||
|
||||
# ==================== VR测试模式事件处理 ====================
|
||||
|
||||
def onToggleVRTestMode(self):
|
||||
"""切换VR测试模式"""
|
||||
try:
|
||||
if hasattr(self.world, 'vr_manager') and self.world.vr_manager:
|
||||
if self.vrTestModeAction.isChecked():
|
||||
# 启用VR测试模式
|
||||
success = self.world.vr_manager.enable_vr_test_mode(display_mode='stereo')
|
||||
if success:
|
||||
QMessageBox.information(self, "VR测试模式",
|
||||
"VR测试模式已启用!\n\n现在VR渲染内容将直接显示在PC屏幕上,无需VR头显。\n\n特点:\n- 显示VR左右眼视图\n- 实时性能监控HUD\n- 复用完整VR渲染管线\n- 可测量纯渲染性能")
|
||||
print("✅ VR测试模式已启用")
|
||||
|
||||
# 可选:自动开启性能测试
|
||||
self.world.vr_manager.run_vr_performance_test(duration_seconds=10)
|
||||
else:
|
||||
self.vrTestModeAction.setChecked(False)
|
||||
QMessageBox.warning(self, "错误", "启用VR测试模式失败!")
|
||||
else:
|
||||
# 禁用VR测试模式
|
||||
self.world.vr_manager.disable_vr_test_mode()
|
||||
QMessageBox.information(self, "VR测试模式", "VR测试模式已禁用")
|
||||
print("✅ VR测试模式已禁用")
|
||||
else:
|
||||
self.vrTestModeAction.setChecked(False)
|
||||
QMessageBox.warning(self, "错误", "VR管理器不可用!")
|
||||
except Exception as e:
|
||||
self.vrTestModeAction.setChecked(False)
|
||||
QMessageBox.critical(self, "错误", f"切换VR测试模式时发生错误:\n{str(e)}")
|
||||
|
||||
def setup_main_window(world,path = None):
|
||||
"""设置主窗口的便利函数"""
|
||||
app = QApplication.instance()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user