华为云计算 云知识 PhysX是什么
PhysX是什么

简介

NVIDIA PhysX SDK是可扩展的多平台物理解决方案,支持从智能手机到高端多核CPU和GPU的各种设备。 PhysX已经集成到一些最受欢迎的游戏引擎中,包括虚幻引擎和Unity3D。

配置安装流程

1.配置编译环境

1)安装wget包

yum install wget -y

2)安装Python 2.7.6或以上版本

请参考https://www.huaweicloud.com/kunpeng/software/python.html安装Python2或者https://www.huaweicloud.com/kunpeng/software/python3.htmlan安装Python3。

3)安装CMake 3.12或以上版本

yum install cmake3 -y

ln -s /usr/bin/cmake3 /usr/bin/cmake

----结束

2.获取源码

获取“PhysX-3.4.2-bsd”源码包。

cd /usr/local/src

wget https://github.com/NVIDIAGameWorks/PhysX/archive/3.4.2-bsd.tar.gz -O PhysX-3.4.2-bsd.tar.gz

3.编译和安装

1)解压软件包。

tar -zxvf PhysX-3.4.2-bsd.tar.gz

2)重命名并且移动

rm -rf /usr/local/physx

mv PhysX-3.4.2-bsd /usr/local/physx

3)进入PhysX编译目录。

cd /usr/local/physx/PhysX_3.4/Source/compiler/linux64

4)编译PhysX

make -j4

编译过程中会报错,请参考故障排除解决报错问题

5)将生成的动态库的路径添加到ld.so.conf配置。

a)修改“/etc/ld.so.conf”文件。

vim /etc/ld.so.conf

在文件末尾添加如下内容:

/usr/local/physx/PxShared/bin/linux64/

/usr/local/physx/PhysX_3.4/Bin/linux64/

b)使配置修改生效。

ldconfig -f /etc/ld.so.conf

c)检查配置是否生效。

ldconfig -p

----结束

4. 运行和验证

1)执行如下命令,检查生成的动态库和静态库。

a)检查生成的静态库。

cd /usr/local/physx/PhysX_3.4

find -name "*.a"

当系统回显类似如下信息时,表示生成的静态库成功。

b)检查生成的动态库。

cd /usr/local/physx/PhysX_3.4

find -name "*.so"

当系统回显类似如下信息时,表示生成的动态库成功。

2)选择SnippetHelloWorld.cpp进行测试。

a)进入SnippetHelloWorld目录。

cd /usr/local/physx/PhysX_3.4/Snippets/SnippetHelloWorld/

b)编辑SnippetHelloWorld.cpp,修改代码中的snippetMain为main。

c)编写makefile文件。

vim makefile

内容如下:

BINARY = $(patsubst %.cpp,%,$(wildcard *.cpp))

 

DEBUG_FLAG=-g -Werror -Wall -fPIC -fno-strict-aliasing -I ../../Include/ -I ../../../PxShared/include/ -DNDEBUG  \

        -L ../../Bin/linux64/ \

        -lPxFoundationDEBUG_x64 \

        -lPhysX3CommonDEBUG_x64 \

        -lPhysX3DEBUG_x64 \

        -lPhysX3CookingDEBUG_x64  \

        -lPhysX3PROFILE_x64 \

        -lPhysX3CommonPROFILE_x64 \

        -lPhysX3CharacterKinematicDEBUG_x64 \

        -L ../../Lib/linux64/ \

        -lLowLevel \

        -lPhysX3Extensions \

        -l PhysX3Vehicle \

        -l SceneQuery \

        -l SimulationController \

        -L ../../../PxShared/bin/linux64/ \

        -lPxFoundationDEBUG_x64 \

        -lPxPvdSDKDEBUG_x64 \

        -lPxFoundationPROFILE_x64 \

        -lPxPvdSDKPROFILE_x64 \

        -L ../../../PxShared/lib/linux64/ \

        -lPsFastXmlDEBUG \

        -lPxTaskDEBUG \

        -lpthread -ldl -rdynamic

 

RELEASE_FLAG = -Werror -Wall -fPIC -fno-strict-aliasing -I ../../Include/ -I ../../../PxShared/include/ -DNDEBUG  \

        -L ../../Bin/linux64/ \

        -lPxFoundation_x64 \

        -lPhysX3Common_x64 \

        -lPhysX3_x64 \

        -lPhysX3Cooking_x64  \

        -lPhysX3PROFILE_x64 \

        -lPhysX3CommonPROFILE_x64 \

        -lPhysX3CharacterKinematic_x64 \

        -L ../../Lib/linux64/ \

        -lLowLevel \

        -lPhysX3Extensions \

        -l PhysX3Vehicle \

        -l SceneQuery \

        -l SimulationController \

        -L ../../../PxShared/bin/linux64/ \

        -lPxFoundation_x64 \

        -lPxPvdSDK_x64 \

        -lPxFoundationPROFILE_x64 \

        -lPxPvdSDKPROFILE_x64 \

        -L ../../../PxShared/lib/linux64/ \

        -lPsFastXml \

        -lPxTask \

        -lpthread -ldl -rdynamic

 

#all:$BINARY)

 

all:SnippetHelloWorld.cpp

        g++ SnippetHelloWorld.cpp $(DEBUG_FLAG)

注意:“g++ SnippetHelloWorld.cpp $(DEBUG_FLAG)”前面是Tab键

d)编译SnippetHelloWorld.cpp生成a.out。

make all

e)执行SnippetHelloWorld。

./a.out

当系统回显类似如下信息时,表示安装PhysX成功,可以正常使用。

[root@ecs SnippetHelloWorld]# ./a.out

SnippetHelloWorld done.

----结束

5. 故障排除

问题一:编译报“unrecognized command line option "-m64"”等错误

问题描述:

进入PhysX-3.4-master/PhysX_3.4/Source/compiler/linux64目录,执行make时,提示信息如下:

问题原因:下载子模块速度太慢导致终端。

-m64,-msse2,-mfpmath=sse是x86 64位应用编译选项,为AMD的x86 64架构生成代码。在ARM64平台无法支持。

解决方法:

执行如下命令将PhysX-3.4-master/PhysX_3.4/Source/compiler/linux64目录下所有文件中涉及的标识-m64,-msse2,-mfpmath=sse替换掉

(1)将当期目录下所有文件中内容“-m64”替换为“ ”

sed -i 's/-m64/ /g’`grep '\-m64' -rl ./`

(2)将当期目录下所有文件中内容“-mfpmath=sse”替换为“ ”

sed -i 's/-msse2/ /g’`grep '\-msse2' -rl ./`

(3)将当期目录下所有文件中内容“-mfpmath=sse”替换为“ ”

sed -i 's/-mfpmath=sse/ /g’`grep '\-mfpmath=sse' -rl ./`

(4)重新编译

make

问题二:编译报“error argument 1 null where non null expected werror nonnull”等错误

问题描述:

进入PhysX-3.4-master/PhysX_3.4/Source/compiler/linux64目录,执行make时,报“werror nonnull”错误,截图如下:

问题原因:gcc的编译选项-Wall 打开gcc的所有警告-Werror,它要求gcc将所有的警告当成错误进行处理,所以报错了。

解决方法:

不要将警告当错误处理,执行如下命令, 将当期目录下所有文件中内容“-Werror”替换为“ ”。

sed -i 's/-Werror/ /g’`grep '\-Werror' -rl ./`

上一篇:删除网络NeutronDeleteNetwork 下一篇:重装弹性云服务器操作系统(未安装Cloud init)ReinstallServerWithCloudInit