当前位置: 首页 > 工具软件 > RenderDoc > 使用案例 >

renderdoc 源码分析(一) 编译

堵茂勋
2023-12-01

本文分析说明renderdoc一些主要功能,包括编译,launch apk, hook opengl es 库流程,抓流流程,rdc文件从设备端传到host端流程,重放流程,org.renderdoc.renderdoccmd.arm64.apk, target apk 分别负责的事情等。

由于笔者使用renderdoc 抓流分析的对象是Android11 移动设备,所以所有场景均基于此说明,同学们勿对所有场景对号入座。

文章讲的比较基础,面向初级读者,文章若有不对的地方欢迎指正,也欢迎加V交流(1558287830)。

目录

1. code 下载

2.环境搭建

ubuntu

安装依赖与环境搭建

编译

打开

macos

安装依赖与环境搭建

编译

打开

打包成dmg



1. code 下载

https://github.com/baldurk/renderdoc

2.环境搭建

本人基于ubuntu 18.04开发,macos构建出来后抓完流UI无法点击重放,还没分析为啥,所以建议新手基于ubuntu开发。

ubuntu

安装依赖与环境搭建

由于编译需要装些依赖项,可能和本地环境有冲突,建议搞个docker ubuntu 专门作为构建环境。安装依赖与环境搭建可参考官方文档,之后编译时报缺啥补装啥就ok了~

https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Compiling.md

https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Dependencies.md#linux

编译

  本人的编译脚本,里边 ANDROID_SDK ,JAVA_HOME,ANDROID_NDK环境变量根据自己环境自行修改:

#!/bin/bash

#build host 
echo "=========> build host"
rm -rf build-android/
export QT_SELECT=qt5

cmake -DCMAKE_BUILD_TYPE=Debug -Bbuild -H.
make -C build -j8

#build apk
sleep 5
echo "=========> build apk"
mkdir  build-android
rootDir=$( pwd )
echo "rootDir:"$rootDir
export ANDROID_SDK=/root/Android/Sdk
echo "ANDROID_SDK:"$ANDROID_SDK

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
echo "JAVA_HOME:"$JAVA_HOME

export ANDROID_NDK=$ANDROID_SDK/android-ndk-r14b
echo "ANDROID_NDK:"$ANDROID_NDK

cd $rootDir
cd ./build-android
cmake -DBUILD_ANDROID=On -DANDROID_ABI=armeabi-v7a  ..
make -j8

rm CMakeCache.txt
rm cmake_install.cmake

cmake -DBUILD_ANDROID=On -DANDROID_ABI=arm64-v8a .. 
make -j8

打开

    ./build/bin/qrenderdoc

macos

安装依赖与环境搭建

  可参考官方文档:

https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Compiling.md

https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Dependencies.md#linux

  其中有些依赖记得需要安装

brew install autoconf
brew install automake
brew install qt5
pip install cmake==3.21.1

编译

  本人的编译脚本,ANDROID_SDK ,JAVA_HOME,ANDROID_NDK,ANDROID_HOME,环境变量根据自己环境自行修改:

#!/bin/bash

rootDir=$( pwd )
echo "rootDir:"$rootDir


#build host 
echo "=========> build host"

export PATH=/usr/local/opt/qt@5/bin:$PATH

rm -rf build
mkdir -p build

cd ./build 
cmake -G Ninja .. -DCMAKE_PREFIX_PATH=$(brew --prefix qt5)
ninja
cd $rootDir


#build apk
sleep 5
echo "=========> build apk"
rm -rf build-android
mkdir -p build-android


cd $rootDir
cd ./build-android
cmake -DBUILD_ANDROID=On -DANDROID_ABI=armeabi-v7a  ..
make -j8

rm CMakeCache.txt
rm cmake_install.cmake

cmake -DBUILD_ANDROID=On -DANDROID_ABI=arm64-v8a .. 
make -j8

打开

   open ./build/bin/qrenderdoc.app/

打包成dmg

./util/buildscripts/scripts/make_package_macos.sh  package_name

#其中,若脚本里边报 REPO_ROOT路径相关的错,直接在里边将其值该成自己的代码路径就ok

若打包成功会在 package底下生成package_name.dmg

 类似资料: