Fixed pfb loader so that it works for both Linux and IRix with dynamic
libraries, and provides support to load (almost) all that Performer loads.
This commit is contained in:
parent
a4e26d447b
commit
6316d19df8
@ -6,29 +6,23 @@ OBJS = $(C++FILES:.cpp=.o) $(CFILES:.c=.o) $(YACCFILES:.y=.o) $(LEXFILES:.l=.o)
|
||||
DEPFILES = $(OBJS:.o=.d)
|
||||
|
||||
|
||||
C++ = g++
|
||||
YFLAGS = -d
|
||||
C++ = g++
|
||||
YFLAGS = -d
|
||||
LCINCS += -I/usr/X11R6/include
|
||||
LC++INCS += ${LCINCS}
|
||||
CFLAGS = -O2 -W -Wall $(LCINCS)
|
||||
CFLAGS = -O2 -W -Wall $(LCINCS)
|
||||
#CFLAGS = -g -W -Wall $(LCINCS)
|
||||
C++FLAGS = ${CFLAGS}
|
||||
CPPFLAGS = ${CFLAGS}
|
||||
C++FLAGS = ${CFLAGS}
|
||||
CPPFLAGS = ${CFLAGS}
|
||||
|
||||
LDFLAGS = -O2 -W -Wall -L/usr/X11R6/lib
|
||||
#LDFLAGS = -g -W -Wall -L/usr/X11R6/lib
|
||||
|
||||
DYNAMICLIBRARYLIB = -ldl
|
||||
PFLIBS = \
|
||||
/usr/lib/Performer/Static/libpfdb/libpfpfb.a\
|
||||
/usr/lib/Performer/Static/libpfdu.a\
|
||||
/usr/lib/Performer/Static/libpfutil.a\
|
||||
/usr/lib/Performer/Static/libpf.a\
|
||||
|
||||
PFLOADERPATH = /usr/lib/libpfdb
|
||||
|
||||
GLUTLIB = -lglut
|
||||
|
||||
|
||||
#
|
||||
# TARGET_DIRS are directories that would not exist on the system except
|
||||
# for the presence of OpenSceneGraph. 'make instclean' removes these
|
||||
|
@ -34,7 +34,7 @@ $(MAKEDEPEND) : $(C++FILES) $(CFILES)
|
||||
$(C++) $(C++FLAGS) -c $*.cpp -o $*.o
|
||||
|
||||
%.o : %.c
|
||||
$(C++) $(C++FLAGS) -c $*.c -o $*.o
|
||||
$(CC) $(C++FLAGS) -c $*.c -o $*.o
|
||||
|
||||
docs:
|
||||
[ "$(TARGET_BASENAME)" != "" ] && \
|
||||
|
@ -8,9 +8,6 @@ TARGET = ../../../bin/sgv
|
||||
|
||||
TARGET_BIN_FILES = sgv
|
||||
|
||||
#note, use this library list when using the Performer osgPlugin.
|
||||
#LIBS = ${PFLIBS} -losgGLUT -losgUtil -losgDB -losg $(GLUTLIB) -lGLU -lGL -lm -lXmu -lX11 -lXi
|
||||
|
||||
#note, standard library list.
|
||||
LIBS = -losgGLUT -losgUtil -losgDB -losg $(GLUTLIB) -lGLU -lGL -lm -lXmu -lX11 -lXi
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
include ../../../Make/makedefs
|
||||
|
||||
CFILES = \
|
||||
stat.c\
|
||||
|
||||
C++FILES = \
|
||||
ConvertFromPerformer.cpp\
|
||||
@ -10,21 +11,42 @@ C++FILES = \
|
||||
|
||||
LIB = ../../../lib/osgPlugins/osgdb_pfb.so
|
||||
|
||||
LIBS = -losg -losgDB $(PFLIBS)
|
||||
LIBS = -losg -losgDB \
|
||||
-lpf3ds\
|
||||
-lpfdem\
|
||||
-lpfdted\
|
||||
-lpfdwb\
|
||||
-lpfdxf\
|
||||
-lpfevt\
|
||||
-lpfflt\
|
||||
-lpfgds\
|
||||
-lpfgfo\
|
||||
-lpfim\
|
||||
-lpflsa\
|
||||
-lpflsb\
|
||||
-lpfnff\
|
||||
-lpfobj\
|
||||
-lpfpegg\
|
||||
-lpfpfb\
|
||||
-lpfphd\
|
||||
-lpfpts\
|
||||
-lpfrot\
|
||||
-lpfscale\
|
||||
-lpfsgf\
|
||||
-lpfsgo\
|
||||
-lpfsphere\
|
||||
-lpfsv\
|
||||
-lpftri\
|
||||
-lpfunc\
|
||||
-lpfvct\
|
||||
-lpfdu -lpfutil -lpf
|
||||
|
||||
TARGET_LOADER_FILES = osgPlugins/osgdb_pfb.so
|
||||
|
||||
C++FLAGS += -g -I../../../include
|
||||
|
||||
LDFLAGS += -g -L../../../lib -L/usr/X11R6/lib
|
||||
|
||||
PREREQUISITES = preq
|
||||
LDFLAGS += -g -L../../../lib -L$(PFLOADERPATH) -Xlinker -rpath $(PFLOADERPATH)
|
||||
|
||||
include ../../../Make/makerules
|
||||
|
||||
|
||||
preq :
|
||||
[ -f /usr/lib/blah ] || exit 1
|
||||
|
||||
|
||||
|
||||
|
@ -30,7 +30,70 @@ class ReaderWriterPFB : public osgDB::ReaderWriter
|
||||
void initPerformer();
|
||||
|
||||
virtual const char* className() { return "Performer Reader/Writer"; }
|
||||
virtual bool acceptsExtension(const std::string& extension) { return extension=="pfb"; }
|
||||
virtual bool acceptsExtension(const std::string& extension)
|
||||
{
|
||||
return
|
||||
extension=="3ds" ? true :
|
||||
extension=="arcinfo" ? true :
|
||||
extension=="bin" ? true :
|
||||
extension=="bpoly" ? true :
|
||||
extension=="bw" ? true :
|
||||
extension=="byu" ? true :
|
||||
extension=="closest" ? true :
|
||||
extension=="csb" ? true :
|
||||
extension=="ct" ? true :
|
||||
extension=="dem" ? true :
|
||||
extension=="doublerot" ? true :
|
||||
extension=="doublescale" ? true :
|
||||
extension=="doubletrans" ? true :
|
||||
extension=="dted" ? true :
|
||||
extension=="dwb" ? true :
|
||||
extension=="dxf" ? true :
|
||||
extension=="evt" ? true :
|
||||
extension=="flt" ? true :
|
||||
extension=="gds" ? true :
|
||||
extension=="gfo" ? true :
|
||||
extension=="im" ? true :
|
||||
extension=="irtp" ? true :
|
||||
extension=="iv20" ? true :
|
||||
extension=="iv" ? true :
|
||||
extension=="lodfix" ? true :
|
||||
extension=="lsa" ? true :
|
||||
extension=="lsb" ? true :
|
||||
extension=="medit" ? true :
|
||||
extension=="m" ? true :
|
||||
extension=="nff" ? true :
|
||||
extension=="obj" ? true :
|
||||
extension=="pegg" ? true :
|
||||
extension=="pfb" ? true :
|
||||
extension=="pfs" ? true :
|
||||
extension=="phd" ? true :
|
||||
extension=="poly" ? true :
|
||||
extension=="post" ? true :
|
||||
extension=="proc" ? true :
|
||||
extension=="projtex" ? true :
|
||||
extension=="pts" ? true :
|
||||
extension=="rot" ? true :
|
||||
extension=="scale" ? true :
|
||||
extension=="sgf" ? true :
|
||||
extension=="sgo" ? true :
|
||||
extension=="so" ? true :
|
||||
extension=="spf" ? true :
|
||||
extension=="spherepatch3" ? true :
|
||||
extension=="spherepatch" ? true :
|
||||
extension=="sphere" ? true :
|
||||
extension=="sponge" ? true :
|
||||
extension=="star" ? true :
|
||||
extension=="stla" ? true :
|
||||
extension=="stlb" ? true :
|
||||
extension=="substclip" ? true :
|
||||
extension=="sv" ? true :
|
||||
extension=="trans" ? true :
|
||||
extension=="tri" ? true :
|
||||
extension=="unc" ? true :
|
||||
extension=="vct" ? true :
|
||||
false;
|
||||
}
|
||||
|
||||
virtual osg::Image* readImage(const std::string& fileName, const osgDB::ReaderWriter::Options*)
|
||||
{
|
||||
@ -79,11 +142,7 @@ class ReaderWriterPFB : public osgDB::ReaderWriter
|
||||
|
||||
initPerformer();
|
||||
|
||||
#ifdef __sgi
|
||||
pfNode* root = pfdLoadFile(fileName.c_str());
|
||||
#else
|
||||
pfNode* root = pfdLoadFile_pfb(fileName.c_str());
|
||||
#endif
|
||||
|
||||
ConvertFromPerformer converter;
|
||||
return converter.convert(root);
|
||||
@ -102,7 +161,7 @@ class ReaderWriterPFB : public osgDB::ReaderWriter
|
||||
pfNode* root = converter.convert(&node);
|
||||
if (root)
|
||||
{
|
||||
return pfdStoreFile_pfb(root,fileName.c_str())!=0;
|
||||
return pfdStoreFile(root,fileName.c_str())!=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user