1

我正在尝试为 1.8 版构建 Solar-System (C++) Panda3D 示例。我遇到的问题是,当我编译它时出现错误:

clr; g++ -c ./solar_system/tut_solar_system.cpp -o ss.o -fPIC -L/usr/lib/panda3d -I/usr/include/python2.7 -I/usr/include/panda3d
./solar_system/../p3util/cOnscreenText.h:75:22: error: ‘Colorf’ does not name a type

我已经尝试编辑该文件并包括 glew、glext 和 glut(由我的发行版提供),以及 Panda3D 提供的“panda_gext”——这些都没有提供 ColorF。(我使用的是archlinux,我有glew、gleext和freeglut。)

我不知道从哪里开始寻找。谷歌让我失望了!有谁知道 ColorF 是在哪里定义的?

4

1 回答 1

2

它被称为 LColorf,它是 LVecBase4f 的 typedef,LVecBase4f 是用于四分量浮点值(例如向量和颜色)的通用 Panda3D 类。“f”代表“浮动”;还有一个 LColord typedef 可用。

这是 Panda3D 1.8.0 中的一个变化。在 1.8.0 之前,它被称为 Colorf(没有前导 L)。据推测,您下载的示例程序是为早期版本设计的。您可以更改相关示例程序以使用 LColorf,或者您可以选择在包含这些标题之前添加以下内容:

#if PANDA_NUMERIC_VERSION >= 1008000
#define Colorf LColorf
#endif

(或者,如果您喜欢,您可以使用 typedef。)

作为记录,要包含以使 LColorf 符号可用的适当头文件是luse.h. 您不应该包含panda_glext.h,它仅由 OpenGL 渲染器使用。

于 2013-03-05T12:53:46.883 回答