Я пытаюсь собрать пример Panda3D для Solar-System (C ++) для версии 1.8. Проблема у меня заключается в том, что при компиляции я получаю сообщение об ошибке:
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 (предоставленный моим дистрибутивом), а также «panda_glext», предоставленный Panda3D — ни один из них не обеспечивает ColorF. (Я использую archlinux и у меня есть glew, glext и freeglut.)
Я не знаю, с чего начать. Google подвел меня! Кто-нибудь знает, где определяется ColorF?
Он называется LColorf и является typedef для LVecBase4f, который является универсальным классом Panda3D для четырехкомпонентных значений с плавающей точкой (таких как векторы и цвета). «F» означает «плавать»; есть также доступный typedef LColord.
Это было изменение в 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.
Других решений пока нет …