From Paul Martz and Robert Osfield, renamed include/osgUtil/Tesselator and associated classes/references to Tessellator etc.
This commit is contained in:
parent
dfb21cb81a
commit
02bda82b55
@ -262,7 +262,7 @@ ifeq ($(PRODUCER_INSTALLED),yes)
|
|||||||
osgspotlight \
|
osgspotlight \
|
||||||
osgstereoimage \
|
osgstereoimage \
|
||||||
osgteapot \
|
osgteapot \
|
||||||
osgtesselate \
|
osgtessellate \
|
||||||
osgtext \
|
osgtext \
|
||||||
osgtexture1D \
|
osgtexture1D \
|
||||||
osgtexture2D \
|
osgtexture2D \
|
||||||
|
@ -2490,7 +2490,7 @@ Package=<4>
|
|||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
Project: "Example osgtesselate"=.\examples\osgtesselate\osgtesselate.dsp - Package Owner=<4>
|
Project: "Example osgtessellate"=.\examples\osgtessellate\osgtessellate.dsp - Package Owner=<4>
|
||||||
|
|
||||||
Package=<5>
|
Package=<5>
|
||||||
{{{
|
{{{
|
||||||
|
@ -1,101 +1,101 @@
|
|||||||
# Microsoft Developer Studio Project File - Name="Example osgtesselate" - Package Owner=<4>
|
# Microsoft Developer Studio Project File - Name="Example osgtessellate" - Package Owner=<4>
|
||||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||||
# ** DO NOT EDIT **
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||||
|
|
||||||
CFG=Example osgtesselate - Win32 Release
|
CFG=Example osgtessellate - Win32 Release
|
||||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
!MESSAGE use the Export Makefile command and run
|
!MESSAGE use the Export Makefile command and run
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!MESSAGE NMAKE /f "osgtesselate.mak".
|
!MESSAGE NMAKE /f "osgtessellate.mak".
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!MESSAGE You can specify a configuration when running NMAKE
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!MESSAGE NMAKE /f "osgtesselate.mak" CFG="Example osgtesselate - Win32 Release"
|
!MESSAGE NMAKE /f "osgtessellate.mak" CFG="Example osgtessellate - Win32 Release"
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!MESSAGE Possible choices for configuration are:
|
!MESSAGE Possible choices for configuration are:
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!MESSAGE "Example osgtesselate - Win32 Release" (based on "Win32 (x86) Console Application")
|
!MESSAGE "Example osgtessellate - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||||
!MESSAGE "Example osgtesselate - Win32 Debug" (based on "Win32 (x86) Console Application")
|
!MESSAGE "Example osgtessellate - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
|
|
||||||
# Begin Project
|
# Begin Project
|
||||||
# PROP AllowPerConfigDependencies 0
|
# PROP AllowPerConfigDependencies 0
|
||||||
# PROP Scc_ProjName ""
|
# PROP Scc_ProjName ""
|
||||||
# PROP Scc_LocalPath ""
|
# PROP Scc_LocalPath ""
|
||||||
CPP=cl.exe
|
CPP=cl.exe
|
||||||
RSC=rc.exe
|
RSC=rc.exe
|
||||||
|
|
||||||
!IF "$(CFG)" == "Example osgtesselate - Win32 Release"
|
!IF "$(CFG)" == "Example osgtessellate - Win32 Release"
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
# PROP BASE Use_MFC 0
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
# PROP BASE Output_Dir "Release"
|
# PROP BASE Output_Dir "Release"
|
||||||
# PROP BASE Intermediate_Dir "Release"
|
# PROP BASE Intermediate_Dir "Release"
|
||||||
# PROP BASE Target_Dir ""
|
# PROP BASE Target_Dir ""
|
||||||
# PROP Use_MFC 0
|
# PROP Use_MFC 0
|
||||||
# PROP Use_Debug_Libraries 0
|
# PROP Use_Debug_Libraries 0
|
||||||
# PROP Output_Dir "../../../bin/$(PlatformName)"
|
# PROP Output_Dir "../../../bin/$(PlatformName)"
|
||||||
# PROP Intermediate_Dir "$(PlatformName)/$(ConfigurationName)"
|
# PROP Intermediate_Dir "$(PlatformName)/$(ConfigurationName)"
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
MTL=midl.exe
|
MTL=midl.exe
|
||||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||||
# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../include" /I "../../../../OpenThreads/include" /I "../../../../Producer/include" /I "../../../../3rdParty/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_CRT_SECURE_NO_DEPRECATE" /YX /FD /Zm200 /c
|
# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../include" /I "../../../../OpenThreads/include" /I "../../../../Producer/include" /I "../../../../3rdParty/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_CRT_SECURE_NO_DEPRECATE" /YX /FD /Zm200 /c
|
||||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
# ADD RSC /l 0x809 /d "NDEBUG"
|
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
# ADD BASE BSC32 /nologo
|
# ADD BASE BSC32 /nologo
|
||||||
# ADD BSC32 /nologo
|
# ADD BSC32 /nologo
|
||||||
LINK32=link.exe
|
LINK32=link.exe
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||||
# ADD LINK32 OpenThreadsWin32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /opt:ref /opt:icf /out:"$(OutDir)/osgtesselate.exe" /libpath:"../../../lib/$(PlatformName)" /libpath:"../../../../OpenThreads/lib/$(PlatformName)" /libpath:"../../../../Producer/lib/$(PlatformName)" /libpath:"../../../../3rdParty/lib/$(PlatformName)" /libpath:"../../../../3rdParty/lib"
|
# ADD LINK32 OpenThreadsWin32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /opt:ref /opt:icf /out:"$(OutDir)/osgtessellate.exe" /libpath:"../../../lib/$(PlatformName)" /libpath:"../../../../OpenThreads/lib/$(PlatformName)" /libpath:"../../../../Producer/lib/$(PlatformName)" /libpath:"../../../../3rdParty/lib/$(PlatformName)" /libpath:"../../../../3rdParty/lib"
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "Example osgtesselate - Win32 Debug"
|
!ELSEIF "$(CFG)" == "Example osgtessellate - Win32 Debug"
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
# PROP BASE Use_MFC 0
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
# PROP BASE Output_Dir "Debug"
|
# PROP BASE Output_Dir "Debug"
|
||||||
# PROP BASE Intermediate_Dir "Debug"
|
# PROP BASE Intermediate_Dir "Debug"
|
||||||
# PROP BASE Target_Dir ""
|
# PROP BASE Target_Dir ""
|
||||||
# PROP Use_MFC 0
|
# PROP Use_MFC 0
|
||||||
# PROP Use_Debug_Libraries 1
|
# PROP Use_Debug_Libraries 1
|
||||||
# PROP Output_Dir "../../../bin/$(PlatformName)"
|
# PROP Output_Dir "../../../bin/$(PlatformName)"
|
||||||
# PROP Intermediate_Dir "$(PlatformName)/$(ConfigurationName)"
|
# PROP Intermediate_Dir "$(PlatformName)/$(ConfigurationName)"
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
MTL=midl.exe
|
MTL=midl.exe
|
||||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "../../../include" /I "../../../../OpenThreads/include" /I "../../../../Producer/include" /I "../../../../3rdParty/include" /D "_CONSOLE" /D "_MBCS" /D "FL_DLL" /D "WIN32" /D "_DEBUG" /D "_CRT_SECURE_NO_DEPRECATE" /FR /YX /FD /Zm200 /c
|
# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "../../../include" /I "../../../../OpenThreads/include" /I "../../../../Producer/include" /I "../../../../3rdParty/include" /D "_CONSOLE" /D "_MBCS" /D "FL_DLL" /D "WIN32" /D "_DEBUG" /D "_CRT_SECURE_NO_DEPRECATE" /FR /YX /FD /Zm200 /c
|
||||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
# ADD RSC /l 0x809 /d "_DEBUG"
|
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
# ADD BASE BSC32 /nologo
|
# ADD BASE BSC32 /nologo
|
||||||
# ADD BSC32 /nologo
|
# ADD BSC32 /nologo
|
||||||
LINK32=link.exe
|
LINK32=link.exe
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||||
# ADD LINK32 OpenThreadsWin32d.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libcmt" /out:"$(OutDir)/osgtesselated.exe" /pdbtype:sept /libpath:"../../../lib/$(PlatformName)" /libpath:"../../../../OpenThreads/lib/$(PlatformName)" /libpath:"../../../../Producer/lib/$(PlatformName)" /libpath:"../../../../3rdParty/lib/$(PlatformName)" /libpath:"../../../../3rdParty/lib"
|
# ADD LINK32 OpenThreadsWin32d.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libcmt" /out:"$(OutDir)/osgtessellated.exe" /pdbtype:sept /libpath:"../../../lib/$(PlatformName)" /libpath:"../../../../OpenThreads/lib/$(PlatformName)" /libpath:"../../../../Producer/lib/$(PlatformName)" /libpath:"../../../../3rdParty/lib/$(PlatformName)" /libpath:"../../../../3rdParty/lib"
|
||||||
# SUBTRACT LINK32 /incremental:no
|
# SUBTRACT LINK32 /incremental:no
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
# Begin Target
|
# Begin Target
|
||||||
|
|
||||||
# Name "Example osgtesselate - Win32 Release"
|
# Name "Example osgtessellate - Win32 Release"
|
||||||
# Name "Example osgtesselate - Win32 Debug"
|
# Name "Example osgtessellate - Win32 Debug"
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\..\examples\osgtesselate\osgtesselate.cpp
|
SOURCE=..\..\..\examples\osgtessellate\osgtessellate.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\icons\osg_icon.rc
|
SOURCE=..\..\icons\osg_icon.rc
|
||||||
# End Source File
|
# End Source File
|
||||||
# End Target
|
# End Target
|
||||||
# Begin Group "Resource Files"
|
# Begin Group "Resource Files"
|
||||||
|
|
||||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||||
# End Group
|
# End Group
|
||||||
# End Project
|
# End Project
|
@ -247,7 +247,7 @@ SOURCE=..\..\src\osgUtil\TangentSpaceGenerator.cpp
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\src\osgUtil\Tesselator.cpp
|
SOURCE=..\..\src\osgUtil\Tessellator.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
@ -379,7 +379,7 @@ SOURCE=..\..\include\osgUtil\TangentSpaceGenerator
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\include\osgUtil\Tesselator
|
SOURCE=..\..\include\osgUtil\Tessellator
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
@ -1138,8 +1138,8 @@
|
|||||||
001DFFB8065AA3F1003310BF /* Matrixd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE1180A405D63B8900EB53E5 /* Matrixd.cpp */; };
|
001DFFB8065AA3F1003310BF /* Matrixd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE1180A405D63B8900EB53E5 /* Matrixd.cpp */; };
|
||||||
001DFFCF065AA472003310BF /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; };
|
001DFFCF065AA472003310BF /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; };
|
||||||
001DFFD0065AA472003310BF /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; };
|
001DFFD0065AA472003310BF /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; };
|
||||||
002BE0680768EF1700D7268C /* Tesselator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE11860A05D71A7B00EB53E5 /* Tesselator.cpp */; };
|
002BE0680768EF1700D7268C /* Tessellator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE11860A05D71A7B00EB53E5 /* Tessellator.cpp */; };
|
||||||
002BE06A0768EF1C00D7268C /* Tesselator in Headers */ = {isa = PBXBuildFile; fileRef = BE11864805D71AD300EB53E5 /* Tesselator */; settings = {ATTRIBUTES = (Public, ); }; };
|
002BE06A0768EF1C00D7268C /* Tessellator in Headers */ = {isa = PBXBuildFile; fileRef = BE11864805D71AD300EB53E5 /* Tessellator */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
002BE3810769069900D7268C /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; };
|
002BE3810769069900D7268C /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; };
|
||||||
002BED3107691F7500D7268C /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; };
|
002BED3107691F7500D7268C /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; };
|
||||||
002BEF0C0769208400D7268C /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; };
|
002BEF0C0769208400D7268C /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; };
|
||||||
@ -1665,7 +1665,7 @@
|
|||||||
008F451F06CC05A500F4220C /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; };
|
008F451F06CC05A500F4220C /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; };
|
||||||
008F452006CC05A500F4220C /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; };
|
008F452006CC05A500F4220C /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; };
|
||||||
008F452106CC05A500F4220C /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; };
|
008F452106CC05A500F4220C /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; };
|
||||||
008F452B06CC06F100F4220C /* osgtesselate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 008F452806CC06F000F4220C /* osgtesselate.cpp */; };
|
008F452B06CC06F100F4220C /* osgtessellate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 008F452806CC06F000F4220C /* osgtessellate.cpp */; };
|
||||||
008F453906CC075600F4220C /* osgvolume.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 008F453606CC075500F4220C /* osgvolume.cpp */; };
|
008F453906CC075600F4220C /* osgvolume.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 008F453606CC075500F4220C /* osgvolume.cpp */; };
|
||||||
0096C51209195DBF00B255F2 /* PositionalStateContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0096C51009195DBE00B255F2 /* PositionalStateContainer.cpp */; };
|
0096C51209195DBF00B255F2 /* PositionalStateContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0096C51009195DBE00B255F2 /* PositionalStateContainer.cpp */; };
|
||||||
0096C51309195DBF00B255F2 /* StateGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0096C51109195DBE00B255F2 /* StateGraph.cpp */; };
|
0096C51309195DBF00B255F2 /* StateGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0096C51109195DBE00B255F2 /* StateGraph.cpp */; };
|
||||||
@ -3736,7 +3736,7 @@
|
|||||||
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
|
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
|
||||||
proxyType = 1;
|
proxyType = 1;
|
||||||
remoteGlobalIDString = 008F44F506CC057500F4220C;
|
remoteGlobalIDString = 008F44F506CC057500F4220C;
|
||||||
remoteInfo = osgtesselate;
|
remoteInfo = osgtessellate;
|
||||||
};
|
};
|
||||||
008F453C06CC079900F4220C /* PBXContainerItemProxy */ = {
|
008F453C06CC079900F4220C /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
@ -5656,10 +5656,10 @@
|
|||||||
008F44D806CC03B500F4220C /* ReaderWriterROT.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ReaderWriterROT.cpp; path = ../../src/osgPlugins/rot/ReaderWriterROT.cpp; sourceTree = SOURCE_ROOT; };
|
008F44D806CC03B500F4220C /* ReaderWriterROT.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ReaderWriterROT.cpp; path = ../../src/osgPlugins/rot/ReaderWriterROT.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
008F44DC06CC03E400F4220C /* ReaderWriterSCALE.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ReaderWriterSCALE.cpp; path = ../../src/osgPlugins/scale/ReaderWriterSCALE.cpp; sourceTree = SOURCE_ROOT; };
|
008F44DC06CC03E400F4220C /* ReaderWriterSCALE.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ReaderWriterSCALE.cpp; path = ../../src/osgPlugins/scale/ReaderWriterSCALE.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
008F44E006CC041C00F4220C /* ReaderWriterTRANS.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ReaderWriterTRANS.cpp; path = ../../src/osgPlugins/trans/ReaderWriterTRANS.cpp; sourceTree = SOURCE_ROOT; };
|
008F44E006CC041C00F4220C /* ReaderWriterTRANS.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ReaderWriterTRANS.cpp; path = ../../src/osgPlugins/trans/ReaderWriterTRANS.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
008F450606CC057500F4220C /* osgtesselate.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgtesselate.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
008F450606CC057500F4220C /* osgtessellate.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgtessellate.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
008F451406CC059400F4220C /* osgcatch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgcatch.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
008F451406CC059400F4220C /* osgcatch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgcatch.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
008F452206CC05A500F4220C /* osgvolume.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgvolume.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
008F452206CC05A500F4220C /* osgvolume.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgvolume.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
008F452806CC06F000F4220C /* osgtesselate.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgtesselate.cpp; sourceTree = "<group>"; };
|
008F452806CC06F000F4220C /* osgtessellate.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgtessellate.cpp; sourceTree = "<group>"; };
|
||||||
008F453606CC075500F4220C /* osgvolume.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgvolume.cpp; sourceTree = "<group>"; };
|
008F453606CC075500F4220C /* osgvolume.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = osgvolume.cpp; sourceTree = "<group>"; };
|
||||||
0096C50C09195D8B00B255F2 /* PositionalStateContainer */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = PositionalStateContainer; path = ../../include/osgUtil/PositionalStateContainer; sourceTree = SOURCE_ROOT; };
|
0096C50C09195D8B00B255F2 /* PositionalStateContainer */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = PositionalStateContainer; path = ../../include/osgUtil/PositionalStateContainer; sourceTree = SOURCE_ROOT; };
|
||||||
0096C50D09195D8B00B255F2 /* StateGraph */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = StateGraph; path = ../../include/osgUtil/StateGraph; sourceTree = SOURCE_ROOT; };
|
0096C50D09195D8B00B255F2 /* StateGraph */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = StateGraph; path = ../../include/osgUtil/StateGraph; sourceTree = SOURCE_ROOT; };
|
||||||
@ -6205,7 +6205,7 @@
|
|||||||
BE11860705D71A7B00EB53E5 /* SceneView.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = SceneView.cpp; path = ../../src/osgUtil/SceneView.cpp; sourceTree = SOURCE_ROOT; };
|
BE11860705D71A7B00EB53E5 /* SceneView.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = SceneView.cpp; path = ../../src/osgUtil/SceneView.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
BE11860805D71A7B00EB53E5 /* SmoothingVisitor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = SmoothingVisitor.cpp; path = ../../src/osgUtil/SmoothingVisitor.cpp; sourceTree = SOURCE_ROOT; };
|
BE11860805D71A7B00EB53E5 /* SmoothingVisitor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = SmoothingVisitor.cpp; path = ../../src/osgUtil/SmoothingVisitor.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
BE11860905D71A7B00EB53E5 /* TangentSpaceGenerator.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = TangentSpaceGenerator.cpp; path = ../../src/osgUtil/TangentSpaceGenerator.cpp; sourceTree = SOURCE_ROOT; };
|
BE11860905D71A7B00EB53E5 /* TangentSpaceGenerator.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = TangentSpaceGenerator.cpp; path = ../../src/osgUtil/TangentSpaceGenerator.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
BE11860A05D71A7B00EB53E5 /* Tesselator.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = Tesselator.cpp; path = ../../src/osgUtil/Tesselator.cpp; sourceTree = SOURCE_ROOT; };
|
BE11860A05D71A7B00EB53E5 /* Tessellator.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = Tessellator.cpp; path = ../../src/osgUtil/Tessellator.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
BE11860B05D71A7B00EB53E5 /* TransformAttributeFunctor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = TransformAttributeFunctor.cpp; path = ../../src/osgUtil/TransformAttributeFunctor.cpp; sourceTree = SOURCE_ROOT; };
|
BE11860B05D71A7B00EB53E5 /* TransformAttributeFunctor.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = TransformAttributeFunctor.cpp; path = ../../src/osgUtil/TransformAttributeFunctor.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
BE11860C05D71A7B00EB53E5 /* TransformCallback.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = TransformCallback.cpp; path = ../../src/osgUtil/TransformCallback.cpp; sourceTree = SOURCE_ROOT; };
|
BE11860C05D71A7B00EB53E5 /* TransformCallback.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = TransformCallback.cpp; path = ../../src/osgUtil/TransformCallback.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
BE11860D05D71A7B00EB53E5 /* TriStrip_graph_array.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = TriStrip_graph_array.h; path = ../../src/osgUtil/TriStrip_graph_array.h; sourceTree = SOURCE_ROOT; };
|
BE11860D05D71A7B00EB53E5 /* TriStrip_graph_array.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = TriStrip_graph_array.h; path = ../../src/osgUtil/TriStrip_graph_array.h; sourceTree = SOURCE_ROOT; };
|
||||||
@ -6232,7 +6232,7 @@
|
|||||||
BE11864505D71AD300EB53E5 /* SmoothingVisitor */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = SmoothingVisitor; path = ../../include/osgUtil/SmoothingVisitor; sourceTree = SOURCE_ROOT; };
|
BE11864505D71AD300EB53E5 /* SmoothingVisitor */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = SmoothingVisitor; path = ../../include/osgUtil/SmoothingVisitor; sourceTree = SOURCE_ROOT; };
|
||||||
BE11864605D71AD300EB53E5 /* Statistics */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = Statistics; path = ../../include/osgUtil/Statistics; sourceTree = SOURCE_ROOT; };
|
BE11864605D71AD300EB53E5 /* Statistics */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = Statistics; path = ../../include/osgUtil/Statistics; sourceTree = SOURCE_ROOT; };
|
||||||
BE11864705D71AD300EB53E5 /* TangentSpaceGenerator */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = TangentSpaceGenerator; path = ../../include/osgUtil/TangentSpaceGenerator; sourceTree = SOURCE_ROOT; };
|
BE11864705D71AD300EB53E5 /* TangentSpaceGenerator */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = TangentSpaceGenerator; path = ../../include/osgUtil/TangentSpaceGenerator; sourceTree = SOURCE_ROOT; };
|
||||||
BE11864805D71AD300EB53E5 /* Tesselator */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = Tesselator; path = ../../include/osgUtil/Tesselator; sourceTree = SOURCE_ROOT; };
|
BE11864805D71AD300EB53E5 /* Tessellator */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = Tessellator; path = ../../include/osgUtil/Tessellator; sourceTree = SOURCE_ROOT; };
|
||||||
BE11864905D71AD300EB53E5 /* TransformAttributeFunctor */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = TransformAttributeFunctor; path = ../../include/osgUtil/TransformAttributeFunctor; sourceTree = SOURCE_ROOT; };
|
BE11864905D71AD300EB53E5 /* TransformAttributeFunctor */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = TransformAttributeFunctor; path = ../../include/osgUtil/TransformAttributeFunctor; sourceTree = SOURCE_ROOT; };
|
||||||
BE11864A05D71AD300EB53E5 /* TransformCallback */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = TransformCallback; path = ../../include/osgUtil/TransformCallback; sourceTree = SOURCE_ROOT; };
|
BE11864A05D71AD300EB53E5 /* TransformCallback */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = TransformCallback; path = ../../include/osgUtil/TransformCallback; sourceTree = SOURCE_ROOT; };
|
||||||
BE11864B05D71AD300EB53E5 /* TriStripVisitor */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = TriStripVisitor; path = ../../include/osgUtil/TriStripVisitor; sourceTree = SOURCE_ROOT; };
|
BE11864B05D71AD300EB53E5 /* TriStripVisitor */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = TriStripVisitor; path = ../../include/osgUtil/TriStripVisitor; sourceTree = SOURCE_ROOT; };
|
||||||
@ -9276,7 +9276,7 @@
|
|||||||
0007BCBE06C1AAF000C884E1 /* osgspheresegment */,
|
0007BCBE06C1AAF000C884E1 /* osgspheresegment */,
|
||||||
00EF4EBC06CB0DD2008ACEFF /* osgstereoimage */,
|
00EF4EBC06CB0DD2008ACEFF /* osgstereoimage */,
|
||||||
0007BCF406C1ADFB00C884E1 /* osgteapot */,
|
0007BCF406C1ADFB00C884E1 /* osgteapot */,
|
||||||
008F452506CC06EC00F4220C /* osgtesselate */,
|
008F452506CC06EC00F4220C /* osgtessellate */,
|
||||||
001D074C065ABAF2003310BF /* osgtext */,
|
001D074C065ABAF2003310BF /* osgtext */,
|
||||||
00EF4F5F06CB125E008ACEFF /* osgtexture1D */,
|
00EF4F5F06CB125E008ACEFF /* osgtexture1D */,
|
||||||
00EF4F6606CB12FB008ACEFF /* osgtexture2D */,
|
00EF4F6606CB12FB008ACEFF /* osgtexture2D */,
|
||||||
@ -10060,13 +10060,13 @@
|
|||||||
path = ../../src/osgPlugins/trans;
|
path = ../../src/osgPlugins/trans;
|
||||||
sourceTree = SOURCE_ROOT;
|
sourceTree = SOURCE_ROOT;
|
||||||
};
|
};
|
||||||
008F452506CC06EC00F4220C /* osgtesselate */ = {
|
008F452506CC06EC00F4220C /* osgtessellate */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
008F452806CC06F000F4220C /* osgtesselate.cpp */,
|
008F452806CC06F000F4220C /* osgtessellate.cpp */,
|
||||||
);
|
);
|
||||||
name = osgtesselate;
|
name = osgtessellate;
|
||||||
path = ../../examples/osgtesselate;
|
path = ../../examples/osgtessellate;
|
||||||
sourceTree = SOURCE_ROOT;
|
sourceTree = SOURCE_ROOT;
|
||||||
};
|
};
|
||||||
008F452C06CC072200F4220C /* osgcatch */ = {
|
008F452C06CC072200F4220C /* osgcatch */ = {
|
||||||
@ -10707,7 +10707,7 @@
|
|||||||
00EF4F9A06CB15BD008ACEFF /* osgwindows.app */,
|
00EF4F9A06CB15BD008ACEFF /* osgwindows.app */,
|
||||||
008F44C106CC023100F4220C /* osgdb_rot.so */,
|
008F44C106CC023100F4220C /* osgdb_rot.so */,
|
||||||
008F44CA06CC023600F4220C /* osgdb_scale.so */,
|
008F44CA06CC023600F4220C /* osgdb_scale.so */,
|
||||||
008F450606CC057500F4220C /* osgtesselate.app */,
|
008F450606CC057500F4220C /* osgtessellate.app */,
|
||||||
008F451406CC059400F4220C /* osgcatch.app */,
|
008F451406CC059400F4220C /* osgcatch.app */,
|
||||||
008F452206CC05A500F4220C /* osgvolume.app */,
|
008F452206CC05A500F4220C /* osgvolume.app */,
|
||||||
00E281D707676D1E005AEE61 /* osgdb_net.so */,
|
00E281D707676D1E005AEE61 /* osgdb_net.so */,
|
||||||
@ -11169,7 +11169,7 @@
|
|||||||
BE11860805D71A7B00EB53E5 /* SmoothingVisitor.cpp */,
|
BE11860805D71A7B00EB53E5 /* SmoothingVisitor.cpp */,
|
||||||
0096C51109195DBE00B255F2 /* StateGraph.cpp */,
|
0096C51109195DBE00B255F2 /* StateGraph.cpp */,
|
||||||
BE11860905D71A7B00EB53E5 /* TangentSpaceGenerator.cpp */,
|
BE11860905D71A7B00EB53E5 /* TangentSpaceGenerator.cpp */,
|
||||||
BE11860A05D71A7B00EB53E5 /* Tesselator.cpp */,
|
BE11860A05D71A7B00EB53E5 /* Tessellator.cpp */,
|
||||||
BE11860B05D71A7B00EB53E5 /* TransformAttributeFunctor.cpp */,
|
BE11860B05D71A7B00EB53E5 /* TransformAttributeFunctor.cpp */,
|
||||||
BE11860C05D71A7B00EB53E5 /* TransformCallback.cpp */,
|
BE11860C05D71A7B00EB53E5 /* TransformCallback.cpp */,
|
||||||
BE11860D05D71A7B00EB53E5 /* TriStrip_graph_array.h */,
|
BE11860D05D71A7B00EB53E5 /* TriStrip_graph_array.h */,
|
||||||
@ -11211,7 +11211,7 @@
|
|||||||
0096C50D09195D8B00B255F2 /* StateGraph */,
|
0096C50D09195D8B00B255F2 /* StateGraph */,
|
||||||
BE11864605D71AD300EB53E5 /* Statistics */,
|
BE11864605D71AD300EB53E5 /* Statistics */,
|
||||||
BE11864705D71AD300EB53E5 /* TangentSpaceGenerator */,
|
BE11864705D71AD300EB53E5 /* TangentSpaceGenerator */,
|
||||||
BE11864805D71AD300EB53E5 /* Tesselator */,
|
BE11864805D71AD300EB53E5 /* Tessellator */,
|
||||||
BE11864905D71AD300EB53E5 /* TransformAttributeFunctor */,
|
BE11864905D71AD300EB53E5 /* TransformAttributeFunctor */,
|
||||||
BE11864A05D71AD300EB53E5 /* TransformCallback */,
|
BE11864A05D71AD300EB53E5 /* TransformCallback */,
|
||||||
BE11864B05D71AD300EB53E5 /* TriStripVisitor */,
|
BE11864B05D71AD300EB53E5 /* TriStripVisitor */,
|
||||||
@ -12884,7 +12884,7 @@
|
|||||||
BE11866105D71AD300EB53E5 /* SmoothingVisitor in Headers */,
|
BE11866105D71AD300EB53E5 /* SmoothingVisitor in Headers */,
|
||||||
BE11866205D71AD300EB53E5 /* Statistics in Headers */,
|
BE11866205D71AD300EB53E5 /* Statistics in Headers */,
|
||||||
BE11866305D71AD300EB53E5 /* TangentSpaceGenerator in Headers */,
|
BE11866305D71AD300EB53E5 /* TangentSpaceGenerator in Headers */,
|
||||||
002BE06A0768EF1C00D7268C /* Tesselator in Headers */,
|
002BE06A0768EF1C00D7268C /* Tessellator in Headers */,
|
||||||
BE11866505D71AD300EB53E5 /* TransformAttributeFunctor in Headers */,
|
BE11866505D71AD300EB53E5 /* TransformAttributeFunctor in Headers */,
|
||||||
BE11866605D71AD300EB53E5 /* TransformCallback in Headers */,
|
BE11866605D71AD300EB53E5 /* TransformCallback in Headers */,
|
||||||
BE11866705D71AD300EB53E5 /* TriStripVisitor in Headers */,
|
BE11866705D71AD300EB53E5 /* TriStripVisitor in Headers */,
|
||||||
@ -14744,9 +14744,9 @@
|
|||||||
productReference = 008F44D306CC023A00F4220C /* osgdb_trans.so */;
|
productReference = 008F44D306CC023A00F4220C /* osgdb_trans.so */;
|
||||||
productType = "com.apple.product-type.library.dynamic";
|
productType = "com.apple.product-type.library.dynamic";
|
||||||
};
|
};
|
||||||
008F44F506CC057500F4220C /* osgtesselate */ = {
|
008F44F506CC057500F4220C /* osgtessellate */ = {
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 0011035D08736A190015C576 /* Build configuration list for PBXNativeTarget "osgtesselate" */;
|
buildConfigurationList = 0011035D08736A190015C576 /* Build configuration list for PBXNativeTarget "osgtessellate" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
008F44FC06CC057500F4220C /* Headers */,
|
008F44FC06CC057500F4220C /* Headers */,
|
||||||
008F44FD06CC057500F4220C /* Resources */,
|
008F44FD06CC057500F4220C /* Resources */,
|
||||||
@ -14757,9 +14757,9 @@
|
|||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
);
|
);
|
||||||
name = osgtesselate;
|
name = osgtessellate;
|
||||||
productName = osgtext;
|
productName = osgtext;
|
||||||
productReference = 008F450606CC057500F4220C /* osgtesselate.app */;
|
productReference = 008F450606CC057500F4220C /* osgtessellate.app */;
|
||||||
productType = "com.apple.product-type.application";
|
productType = "com.apple.product-type.application";
|
||||||
};
|
};
|
||||||
008F450906CC059400F4220C /* osgcatch */ = {
|
008F450906CC059400F4220C /* osgcatch */ = {
|
||||||
@ -15942,7 +15942,7 @@
|
|||||||
00EF4F4506CB11E2008ACEFF /* osgspotlight */,
|
00EF4F4506CB11E2008ACEFF /* osgspotlight */,
|
||||||
00EF4EA206CB0D45008ACEFF /* osgstereoimage */,
|
00EF4EA206CB0D45008ACEFF /* osgstereoimage */,
|
||||||
0007BCE006C1ADB300C884E1 /* osgteapot */,
|
0007BCE006C1ADB300C884E1 /* osgteapot */,
|
||||||
008F44F506CC057500F4220C /* osgtesselate */,
|
008F44F506CC057500F4220C /* osgtessellate */,
|
||||||
001D06A1065AB68B003310BF /* osgtext example */,
|
001D06A1065AB68B003310BF /* osgtext example */,
|
||||||
00EF4EC906CB0F19008ACEFF /* osgtexture1D */,
|
00EF4EC906CB0F19008ACEFF /* osgtexture1D */,
|
||||||
00EF4EE306CB11CA008ACEFF /* osgtexture2D */,
|
00EF4EE306CB11CA008ACEFF /* osgtexture2D */,
|
||||||
@ -17946,7 +17946,7 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
008F452B06CC06F100F4220C /* osgtesselate.cpp in Sources */,
|
008F452B06CC06F100F4220C /* osgtessellate.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -18515,7 +18515,7 @@
|
|||||||
BE11863005D71A7C00EB53E5 /* Version.cpp in Sources */,
|
BE11863005D71A7C00EB53E5 /* Version.cpp in Sources */,
|
||||||
00CE2DF9065BCF43003C8656 /* Simplifier.cpp in Sources */,
|
00CE2DF9065BCF43003C8656 /* Simplifier.cpp in Sources */,
|
||||||
008F444E06CBF90F00F4220C /* GLObjectsVisitor.cpp in Sources */,
|
008F444E06CBF90F00F4220C /* GLObjectsVisitor.cpp in Sources */,
|
||||||
002BE0680768EF1700D7268C /* Tesselator.cpp in Sources */,
|
002BE0680768EF1700D7268C /* Tessellator.cpp in Sources */,
|
||||||
0096C51209195DBF00B255F2 /* PositionalStateContainer.cpp in Sources */,
|
0096C51209195DBF00B255F2 /* PositionalStateContainer.cpp in Sources */,
|
||||||
0096C51309195DBF00B255F2 /* StateGraph.cpp in Sources */,
|
0096C51309195DBF00B255F2 /* StateGraph.cpp in Sources */,
|
||||||
00FB20780B0141180052DD79 /* IntersectionVisitor.cpp in Sources */,
|
00FB20780B0141180052DD79 /* IntersectionVisitor.cpp in Sources */,
|
||||||
@ -19530,7 +19530,7 @@
|
|||||||
};
|
};
|
||||||
008F453B06CC079900F4220C /* PBXTargetDependency */ = {
|
008F453B06CC079900F4220C /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
target = 008F44F506CC057500F4220C /* osgtesselate */;
|
target = 008F44F506CC057500F4220C /* osgtessellate */;
|
||||||
targetProxy = 008F453A06CC079900F4220C /* PBXContainerItemProxy */;
|
targetProxy = 008F453A06CC079900F4220C /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
008F453D06CC079900F4220C /* PBXTargetDependency */ = {
|
008F453D06CC079900F4220C /* PBXTargetDependency */ = {
|
||||||
@ -32114,7 +32114,7 @@
|
|||||||
../../../Producer/include,
|
../../../Producer/include,
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = "osgtesselate-Info.plist";
|
INFOPLIST_FILE = "osgtessellate-Info.plist";
|
||||||
INSTALL_PATH = "$(USER_APPS_DIR)";
|
INSTALL_PATH = "$(USER_APPS_DIR)";
|
||||||
OTHER_CFLAGS = "";
|
OTHER_CFLAGS = "";
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
@ -32124,7 +32124,7 @@
|
|||||||
Producer,
|
Producer,
|
||||||
);
|
);
|
||||||
OTHER_REZFLAGS = "";
|
OTHER_REZFLAGS = "";
|
||||||
PRODUCT_NAME = osgtesselate;
|
PRODUCT_NAME = osgtessellate;
|
||||||
SECTORDER_FLAGS = "";
|
SECTORDER_FLAGS = "";
|
||||||
WARNING_CFLAGS = "-Wmost";
|
WARNING_CFLAGS = "-Wmost";
|
||||||
ZERO_LINK = NO;
|
ZERO_LINK = NO;
|
||||||
@ -32154,7 +32154,7 @@
|
|||||||
../../../Producer/include,
|
../../../Producer/include,
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = "osgtesselate-Info.plist";
|
INFOPLIST_FILE = "osgtessellate-Info.plist";
|
||||||
INSTALL_PATH = "$(USER_APPS_DIR)";
|
INSTALL_PATH = "$(USER_APPS_DIR)";
|
||||||
OTHER_CFLAGS = "";
|
OTHER_CFLAGS = "";
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
@ -32164,7 +32164,7 @@
|
|||||||
Producer,
|
Producer,
|
||||||
);
|
);
|
||||||
OTHER_REZFLAGS = "";
|
OTHER_REZFLAGS = "";
|
||||||
PRODUCT_NAME = osgtesselate;
|
PRODUCT_NAME = osgtessellate;
|
||||||
SECTORDER_FLAGS = "";
|
SECTORDER_FLAGS = "";
|
||||||
WARNING_CFLAGS = "-Wmost";
|
WARNING_CFLAGS = "-Wmost";
|
||||||
ZERO_LINK = NO;
|
ZERO_LINK = NO;
|
||||||
@ -32189,7 +32189,7 @@
|
|||||||
../../../Producer/include,
|
../../../Producer/include,
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = "osgtesselate-Info.plist";
|
INFOPLIST_FILE = "osgtessellate-Info.plist";
|
||||||
INSTALL_PATH = "$(USER_APPS_DIR)";
|
INSTALL_PATH = "$(USER_APPS_DIR)";
|
||||||
OTHER_CFLAGS = "";
|
OTHER_CFLAGS = "";
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
@ -32199,7 +32199,7 @@
|
|||||||
Producer,
|
Producer,
|
||||||
);
|
);
|
||||||
OTHER_REZFLAGS = "";
|
OTHER_REZFLAGS = "";
|
||||||
PRODUCT_NAME = osgtesselate;
|
PRODUCT_NAME = osgtessellate;
|
||||||
SECTORDER_FLAGS = "";
|
SECTORDER_FLAGS = "";
|
||||||
WARNING_CFLAGS = "-Wmost";
|
WARNING_CFLAGS = "-Wmost";
|
||||||
};
|
};
|
||||||
@ -37915,7 +37915,7 @@
|
|||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Default;
|
defaultConfigurationName = Default;
|
||||||
};
|
};
|
||||||
0011035D08736A190015C576 /* Build configuration list for PBXNativeTarget "osgtesselate" */ = {
|
0011035D08736A190015C576 /* Build configuration list for PBXNativeTarget "osgtessellate" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
0011035E08736A190015C576 /* Development */,
|
0011035E08736A190015C576 /* Development */,
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>osgtesselate</string>
|
<string>osgtessellate</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.MySoftwareCompany.osgtesselate</string>
|
<string>com.MySoftwareCompany.osgtessellate</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1.2.0</string>
|
<string>1.2.0</string>
|
||||||
</dict>
|
</dict>
|
@ -376,7 +376,7 @@
|
|||||||
#include <osgUtil/StateGraph>
|
#include <osgUtil/StateGraph>
|
||||||
#include <osgUtil/Statistics>
|
#include <osgUtil/Statistics>
|
||||||
#include <osgUtil/TangentSpaceGenerator>
|
#include <osgUtil/TangentSpaceGenerator>
|
||||||
#include <osgUtil/Tesselator>
|
#include <osgUtil/Tessellator>
|
||||||
#include <osgUtil/TransformAttributeFunctor>
|
#include <osgUtil/TransformAttributeFunctor>
|
||||||
#include <osgUtil/TransformCallback>
|
#include <osgUtil/TransformCallback>
|
||||||
#include <osgUtil/TriStripVisitor>
|
#include <osgUtil/TriStripVisitor>
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#include <osg/Texture2D>
|
#include <osg/Texture2D>
|
||||||
#include <osg/Projection>
|
#include <osg/Projection>
|
||||||
#include <osg/MatrixTransform>
|
#include <osg/MatrixTransform>
|
||||||
#include <osgUtil/Tesselator> // tesselator triangulates the constrained triangles
|
#include <osgUtil/Tessellator> // tessellator triangulates the constrained triangles
|
||||||
|
|
||||||
#include <osgText/Text>
|
#include <osgText/Text>
|
||||||
|
|
||||||
@ -273,7 +273,7 @@ osg::Vec3d getpt(const int np)
|
|||||||
return osg::Vec3d(x,y,z);
|
return osg::Vec3d(x,y,z);
|
||||||
}
|
}
|
||||||
osg::Node* createHUD(const int ndcs,std::string what)
|
osg::Node* createHUD(const int ndcs,std::string what)
|
||||||
{ // add a string reporting the type of winding rule tesselation applied
|
{ // add a string reporting the type of winding rule tessellation applied
|
||||||
osg::Geode* geode = new osg::Geode();
|
osg::Geode* geode = new osg::Geode();
|
||||||
|
|
||||||
std::string timesFont("fonts/arial.ttf");
|
std::string timesFont("fonts/arial.ttf");
|
||||||
@ -988,14 +988,14 @@ osg::Geometry *ArealConstraint::makeWallGeometry( osg::Vec3Array *pt)
|
|||||||
osg::DrawElementsUInt *trgeom=getTriangles();
|
osg::DrawElementsUInt *trgeom=getTriangles();
|
||||||
edges->addPrimitiveSet(trgeom);
|
edges->addPrimitiveSet(trgeom);
|
||||||
|
|
||||||
osg::ref_ptr<osgUtil::Tesselator> tscx=new osgUtil::Tesselator; // this assembles all the constraints
|
osg::ref_ptr<osgUtil::Tessellator> tscx=new osgUtil::Tessellator; // this assembles all the constraints
|
||||||
tscx->setTesselationType(osgUtil::Tesselator::TESS_TYPE_GEOMETRY);
|
tscx->setTessellationType(osgUtil::Tessellator::TESS_TYPE_GEOMETRY);
|
||||||
tscx->setBoundaryOnly(true);
|
tscx->setBoundaryOnly(true);
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_NONZERO);
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_NONZERO);
|
||||||
// find all edges.
|
// find all edges.
|
||||||
const osg::Vec3Array *points=dynamic_cast<osg::Vec3Array*>(getVertexArray());
|
const osg::Vec3Array *points=dynamic_cast<osg::Vec3Array*>(getVertexArray());
|
||||||
|
|
||||||
tscx->retesselatePolygons(*(edges)); // find all edges
|
tscx->retessellatePolygons(*(edges)); // find all edges
|
||||||
|
|
||||||
if (walltexture!="") {
|
if (walltexture!="") {
|
||||||
osg::Image* image = osgDB::readImageFile(walltexture.c_str());
|
osg::Image* image = osgDB::readImageFile(walltexture.c_str());
|
||||||
|
@ -294,7 +294,7 @@ osg::Node* createScene()
|
|||||||
// note, anticlockwsie ordering.
|
// note, anticlockwsie ordering.
|
||||||
// note II, OpenGL polygons must be convex plan polygons, otherwise
|
// note II, OpenGL polygons must be convex plan polygons, otherwise
|
||||||
// undefined results will occur. If you have concave polygons or ones
|
// undefined results will occur. If you have concave polygons or ones
|
||||||
// that cross over themselves then use the osgUtil::Tesselator to fix
|
// that cross over themselves then use the osgUtil::Tessellator to fix
|
||||||
// the polygons into a set of valid polygons.
|
// the polygons into a set of valid polygons.
|
||||||
osg::Vec3 myCoords[] =
|
osg::Vec3 myCoords[] =
|
||||||
{
|
{
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
#include <osg/Projection>
|
#include <osg/Projection>
|
||||||
#include <osg/io_utils>
|
#include <osg/io_utils>
|
||||||
|
|
||||||
#include <osgUtil/Tesselator>
|
|
||||||
#include <osgUtil/CullVisitor>
|
#include <osgUtil/CullVisitor>
|
||||||
#include <osgUtil/Optimizer>
|
#include <osgUtil/Optimizer>
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#include <osg/BlendFunc>
|
#include <osg/BlendFunc>
|
||||||
#include <osg/ClearNode>
|
#include <osg/ClearNode>
|
||||||
|
|
||||||
#include <osgUtil/Tesselator>
|
#include <osgUtil/Tessellator>
|
||||||
#include <osgUtil/CullVisitor>
|
#include <osgUtil/CullVisitor>
|
||||||
|
|
||||||
#include <osgText/Text>
|
#include <osgText/Text>
|
||||||
@ -115,8 +115,8 @@ osg::Geometry* createWing(const osg::Vec3& left, const osg::Vec3& nose, const os
|
|||||||
|
|
||||||
geom->addPrimitiveSet(new osg::DrawArrays(GL_POLYGON,0,vertices->getNumElements()));
|
geom->addPrimitiveSet(new osg::DrawArrays(GL_POLYGON,0,vertices->getNumElements()));
|
||||||
|
|
||||||
osgUtil::Tesselator tesselator;
|
osgUtil::Tessellator tessellator;
|
||||||
tesselator.retesselatePolygons(*geom);
|
tessellator.retessellatePolygons(*geom);
|
||||||
|
|
||||||
return geom;
|
return geom;
|
||||||
|
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
#include <osg/ClearNode>
|
#include <osg/ClearNode>
|
||||||
#include <osg/Projection>
|
#include <osg/Projection>
|
||||||
|
|
||||||
#include <osgUtil/Tesselator>
|
|
||||||
#include <osgUtil/CullVisitor>
|
#include <osgUtil/CullVisitor>
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ TOPDIR = ../..
|
|||||||
include $(TOPDIR)/Make/makedefs
|
include $(TOPDIR)/Make/makedefs
|
||||||
|
|
||||||
CXXFILES =\
|
CXXFILES =\
|
||||||
osgtesselate.cpp\
|
osgtessellate.cpp\
|
||||||
|
|
||||||
LIBS += -losgProducer -lProducer -losgText -losgGA -losgDB -losgUtil -losg $(GL_LIBS) $(X_LIBS) $(OTHER_LIBS)
|
LIBS += -losgProducer -lProducer -losgText -losgGA -losgDB -losgUtil -losg $(GL_LIBS) $(X_LIBS) $(OTHER_LIBS)
|
||||||
|
|
||||||
@ -10,7 +10,7 @@ INSTFILES = \
|
|||||||
$(CXXFILES)\
|
$(CXXFILES)\
|
||||||
GNUmakefile.inst=GNUmakefile
|
GNUmakefile.inst=GNUmakefile
|
||||||
|
|
||||||
EXEC = osgtesselate
|
EXEC = osgtessellate
|
||||||
|
|
||||||
INC += $(X_INC)
|
INC += $(X_INC)
|
||||||
|
|
@ -2,11 +2,11 @@ TOPDIR = ../..
|
|||||||
include $(TOPDIR)/Make/makedefs
|
include $(TOPDIR)/Make/makedefs
|
||||||
|
|
||||||
CXXFILES =\
|
CXXFILES =\
|
||||||
osgtesselate.cpp\
|
osgtessellate.cpp\
|
||||||
|
|
||||||
LIBS += -losgProducer -lProducer -losgDB -losgText -losgUtil -losg $(GL_LIBS) $(X_LIBS) $(OTHER_LIBS)
|
LIBS += -losgProducer -lProducer -losgDB -losgText -losgUtil -losg $(GL_LIBS) $(X_LIBS) $(OTHER_LIBS)
|
||||||
|
|
||||||
EXEC = osgtesselate
|
EXEC = osgtessellate
|
||||||
|
|
||||||
INC += $(X_INC)
|
INC += $(X_INC)
|
||||||
|
|
@ -9,14 +9,14 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* osgtesselator
|
/* osgTessellator
|
||||||
* - this tesselator is an extension of the basic one - rather than tesselating
|
* - this Tessellator is an extension of the basic one - rather than tesselating
|
||||||
* individual polygons, we tesselate the entire geode with multiple contours.
|
* individual polygons, we tesselate the entire geode with multiple contours.
|
||||||
* allows for overlapping contours etc.
|
* allows for overlapping contours etc.
|
||||||
* the tesselator has new member fuinctions
|
* the Tessellator has new member fuinctions
|
||||||
setTesselationType(osgUtil::Tesselator::TESS_TYPE_xxx);
|
setTessellationType(osgUtil::Tessellator::TESS_TYPE_xxx);
|
||||||
tscx->setBoundaryOnly(bool);
|
tscx->setBoundaryOnly(bool);
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_xxx);
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_xxx);
|
||||||
* for winding rules: See the red book chap 13.
|
* for winding rules: See the red book chap 13.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -28,12 +28,12 @@
|
|||||||
|
|
||||||
#include <osgText/Text>
|
#include <osgText/Text>
|
||||||
|
|
||||||
#include <osgUtil/Tesselator> // to tesselate multiple contours
|
#include <osgUtil/Tessellator> // to tesselate multiple contours
|
||||||
|
|
||||||
|
|
||||||
class tesselateDemoGeometry : public osg::Geometry, public osgUtil::Tesselator {
|
class tesselateDemoGeometry : public osg::Geometry, public osgUtil::Tessellator {
|
||||||
// We add the Tesselator to the geometry because we want to access the
|
// We add the Tessellator to the geometry because we want to access the
|
||||||
// tesselatable contours again; you can apply a tesselator to a Geometry
|
// tesselatable contours again; you can apply a Tessellator to a Geometry
|
||||||
// to produce exactly a required tesselation once only, and then
|
// to produce exactly a required tesselation once only, and then
|
||||||
// the contours could be discarded since the geometry does not need to be retesselated.
|
// the contours could be discarded since the geometry does not need to be retesselated.
|
||||||
public:
|
public:
|
||||||
@ -89,7 +89,7 @@ osg::Geometry *makePolsTwo (void)
|
|||||||
gtess->setNormalBinding(osg::Geometry::BIND_PER_VERTEX);
|
gtess->setNormalBinding(osg::Geometry::BIND_PER_VERTEX);
|
||||||
gtess->setTexCoordArray(0,tcs);
|
gtess->setTexCoordArray(0,tcs);
|
||||||
|
|
||||||
// demonstrate that the tesselator makes textured tesselations
|
// demonstrate that the Tessellator makes textured tesselations
|
||||||
osg::StateSet* stateset = new osg::StateSet();
|
osg::StateSet* stateset = new osg::StateSet();
|
||||||
|
|
||||||
osg::Image* image = osgDB::readImageFile("Cubemap_snow/posy.jpg");
|
osg::Image* image = osgDB::readImageFile("Cubemap_snow/posy.jpg");
|
||||||
@ -108,9 +108,9 @@ osg::Geometry *makePolsTwo (void)
|
|||||||
gtess->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::TRIANGLE_STRIP,nstart,8));nstart+=8;
|
gtess->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::TRIANGLE_STRIP,nstart,8));nstart+=8;
|
||||||
gtess->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::TRIANGLE_STRIP,nstart,8));nstart+=8;
|
gtess->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::TRIANGLE_STRIP,nstart,8));nstart+=8;
|
||||||
|
|
||||||
gtess->setTesselationType(osgUtil::Tesselator::TESS_TYPE_GEOMETRY);
|
gtess->setTessellationType(osgUtil::Tessellator::TESS_TYPE_GEOMETRY);
|
||||||
gtess->setBoundaryOnly(true);
|
gtess->setBoundaryOnly(true);
|
||||||
gtess->setWindingType( osgUtil::Tesselator::TESS_WINDING_ABS_GEQ_TWO); // so that first change in wind type makes the commonest tesselation - ODD.
|
gtess->setWindingType( osgUtil::Tessellator::TESS_WINDING_ABS_GEQ_TWO); // so that first change in wind type makes the commonest tesselation - ODD.
|
||||||
|
|
||||||
return gtess;
|
return gtess;
|
||||||
}
|
}
|
||||||
@ -161,7 +161,7 @@ osg::Geometry *makeSideWall (const float xpos)
|
|||||||
}
|
}
|
||||||
gtess->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::POLYGON,nstart,5));nstart+=5;
|
gtess->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::POLYGON,nstart,5));nstart+=5;
|
||||||
|
|
||||||
// demonstrate that the tesselator makes textured tesselations
|
// demonstrate that the Tessellator makes textured tesselations
|
||||||
osg::StateSet* stateset = new osg::StateSet();
|
osg::StateSet* stateset = new osg::StateSet();
|
||||||
|
|
||||||
osg::Image* image = osgDB::readImageFile("Cubemap_snow/posx.jpg");
|
osg::Image* image = osgDB::readImageFile("Cubemap_snow/posx.jpg");
|
||||||
@ -176,14 +176,14 @@ osg::Geometry *makeSideWall (const float xpos)
|
|||||||
gtess->setStateSet( stateset );
|
gtess->setStateSet( stateset );
|
||||||
|
|
||||||
|
|
||||||
osg::ref_ptr<osgUtil::Tesselator> tscx=new osgUtil::Tesselator; // the v1.2 multi-contour tesselator.
|
osg::ref_ptr<osgUtil::Tessellator> tscx=new osgUtil::Tessellator; // the v1.2 multi-contour Tessellator.
|
||||||
// we use the geometry primitives to describe the contours which are tesselated.
|
// we use the geometry primitives to describe the contours which are tesselated.
|
||||||
// Winding odd means leave hole in surface where there are 2,4,6... contours circling the point.
|
// Winding odd means leave hole in surface where there are 2,4,6... contours circling the point.
|
||||||
tscx->setTesselationType(osgUtil::Tesselator::TESS_TYPE_GEOMETRY);
|
tscx->setTessellationType(osgUtil::Tessellator::TESS_TYPE_GEOMETRY);
|
||||||
tscx->setBoundaryOnly(false);
|
tscx->setBoundaryOnly(false);
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_ODD); // so that first change in wind type makes the commonest tesselation - ODD.
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_ODD); // so that first change in wind type makes the commonest tesselation - ODD.
|
||||||
|
|
||||||
tscx->retesselatePolygons(*gtess);
|
tscx->retessellatePolygons(*gtess);
|
||||||
|
|
||||||
return gtess;
|
return gtess;
|
||||||
}
|
}
|
||||||
@ -258,7 +258,7 @@ osg::Geometry *makeFrontWall (const float zpos) {
|
|||||||
}
|
}
|
||||||
gtess->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,nstart,20));nstart+=20;
|
gtess->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,nstart,20));nstart+=20;
|
||||||
|
|
||||||
// demonstrate that the tesselator makes textured tesselations
|
// demonstrate that the Tessellator makes textured tesselations
|
||||||
osg::StateSet* stateset = new osg::StateSet();
|
osg::StateSet* stateset = new osg::StateSet();
|
||||||
|
|
||||||
osg::Image* image = osgDB::readImageFile("Cubemap_snow/posy.jpg");
|
osg::Image* image = osgDB::readImageFile("Cubemap_snow/posy.jpg");
|
||||||
@ -272,14 +272,14 @@ osg::Geometry *makeFrontWall (const float zpos) {
|
|||||||
}
|
}
|
||||||
gtess->setStateSet( stateset );
|
gtess->setStateSet( stateset );
|
||||||
|
|
||||||
// We use a Tesselator to produce the tesselation required once only
|
// We use a Tessellator to produce the tesselation required once only
|
||||||
// and the contours are discarded.
|
// and the contours are discarded.
|
||||||
osg::ref_ptr<osgUtil::Tesselator> tscx=new osgUtil::Tesselator; // the v1.2 multi-contour tesselator.
|
osg::ref_ptr<osgUtil::Tessellator> tscx=new osgUtil::Tessellator; // the v1.2 multi-contour Tessellator.
|
||||||
tscx->setTesselationType(osgUtil::Tesselator::TESS_TYPE_GEOMETRY);
|
tscx->setTessellationType(osgUtil::Tessellator::TESS_TYPE_GEOMETRY);
|
||||||
tscx->setBoundaryOnly(false);
|
tscx->setBoundaryOnly(false);
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_ODD); // so that first change in wind type makes the commonest tesselation - ODD.
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_ODD); // so that first change in wind type makes the commonest tesselation - ODD.
|
||||||
|
|
||||||
tscx->retesselatePolygons(*gtess);
|
tscx->retessellatePolygons(*gtess);
|
||||||
|
|
||||||
return gtess;
|
return gtess;
|
||||||
}
|
}
|
||||||
@ -298,7 +298,7 @@ osg::Geometry *makePols (void) {
|
|||||||
osg::Vec3Array *nrms = new osg::Vec3Array;
|
osg::Vec3Array *nrms = new osg::Vec3Array;
|
||||||
osg::Vec2Array *tcs = new osg::Vec2Array;
|
osg::Vec2Array *tcs = new osg::Vec2Array;
|
||||||
osg::Vec3 nrm(0,-1,0);
|
osg::Vec3 nrm(0,-1,0);
|
||||||
// coordinates from red book code but shifted by 1000 & 2000 for alternate tesselatory things.
|
// coordinates from red book code but shifted by 1000 & 2000 for alternate Tessellatory things.
|
||||||
static GLdouble rects[12][3] =
|
static GLdouble rects[12][3] =
|
||||||
{ { 50.0, 50.0, 0.0 },
|
{ { 50.0, 50.0, 0.0 },
|
||||||
{ 300.0, 50.0, 0.0 },
|
{ 300.0, 50.0, 0.0 },
|
||||||
@ -452,7 +452,7 @@ osg::Geometry *makePols (void) {
|
|||||||
gtess->setNormalBinding(osg::Geometry::BIND_PER_VERTEX);
|
gtess->setNormalBinding(osg::Geometry::BIND_PER_VERTEX);
|
||||||
gtess->setTexCoordArray(0,tcs);
|
gtess->setTexCoordArray(0,tcs);
|
||||||
|
|
||||||
// demonstrate that the tesselator makes textured tesselations
|
// demonstrate that the Tessellator makes textured tesselations
|
||||||
osg::StateSet* stateset = new osg::StateSet();
|
osg::StateSet* stateset = new osg::StateSet();
|
||||||
|
|
||||||
osg::Image* image = osgDB::readImageFile("Cubemap_snow/posz.jpg");
|
osg::Image* image = osgDB::readImageFile("Cubemap_snow/posz.jpg");
|
||||||
@ -483,12 +483,12 @@ osg::Geometry *makePols (void) {
|
|||||||
gtess->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::TRIANGLE_STRIP,nstart,8));nstart+=8;
|
gtess->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::TRIANGLE_STRIP,nstart,8));nstart+=8;
|
||||||
|
|
||||||
// We need to access the tesselatable contours again to demonstrate all types of tesselation.
|
// We need to access the tesselatable contours again to demonstrate all types of tesselation.
|
||||||
// I could add the Tesselator to the geometry as userdata, but here
|
// I could add the Tessellator to the geometry as userdata, but here
|
||||||
// I use the derived tesselateDemoGeometry to hold both the drawable geode and the original contours.
|
// I use the derived tesselateDemoGeometry to hold both the drawable geode and the original contours.
|
||||||
|
|
||||||
gtess->setTesselationType(osgUtil::Tesselator::TESS_TYPE_GEOMETRY);
|
gtess->setTessellationType(osgUtil::Tessellator::TESS_TYPE_GEOMETRY);
|
||||||
gtess->setBoundaryOnly(true);
|
gtess->setBoundaryOnly(true);
|
||||||
gtess->setWindingType( osgUtil::Tesselator::TESS_WINDING_ABS_GEQ_TWO); // so that first change in wind type makes the commonest tesselation - ODD.
|
gtess->setWindingType( osgUtil::Tessellator::TESS_WINDING_ABS_GEQ_TWO); // so that first change in wind type makes the commonest tesselation - ODD.
|
||||||
|
|
||||||
return gtess;
|
return gtess;
|
||||||
}
|
}
|
||||||
@ -575,50 +575,50 @@ public:
|
|||||||
{
|
{
|
||||||
osg::Geometry* geom = dynamic_cast<osg::Geometry*>(geode.getDrawable(i));
|
osg::Geometry* geom = dynamic_cast<osg::Geometry*>(geode.getDrawable(i));
|
||||||
if (geom) {
|
if (geom) {
|
||||||
osg::ref_ptr<osgUtil::Tesselator> tscx=new osgUtil::Tesselator();
|
osg::ref_ptr<osgUtil::Tessellator> tscx=new osgUtil::Tessellator();
|
||||||
if (tscx.valid()) {
|
if (tscx.valid()) {
|
||||||
tscx->setTesselationType(osgUtil::Tesselator::TESS_TYPE_GEOMETRY);
|
tscx->setTessellationType(osgUtil::Tessellator::TESS_TYPE_GEOMETRY);
|
||||||
if (geode.getName()== "tesselate") {
|
if (geode.getName()== "tesselate") {
|
||||||
// add a tesselator so that this geom is retesselated when N is pressed
|
// add a Tessellator so that this geom is retesselated when N is pressed
|
||||||
tscx->setBoundaryOnly(true);
|
tscx->setBoundaryOnly(true);
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_ABS_GEQ_TWO); // so that first change in wind type makes the commonest tesselation - ODD.
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_ABS_GEQ_TWO); // so that first change in wind type makes the commonest tesselation - ODD.
|
||||||
geom->setUserData(tscx.get());
|
geom->setUserData(tscx.get());
|
||||||
} else if (geode.getName()== "tesselate odd") {
|
} else if (geode.getName()== "tesselate odd") {
|
||||||
// OR you can just apply the tesselator once only, using these different types
|
// OR you can just apply the Tessellator once only, using these different types
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_ODD); // commonest tesselation - ODD.
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_ODD); // commonest tesselation - ODD.
|
||||||
tscx->retesselatePolygons(*geom);
|
tscx->retessellatePolygons(*geom);
|
||||||
} else if (geode.getName()== "tesselate odd bound") {
|
} else if (geode.getName()== "tesselate odd bound") {
|
||||||
tscx->setBoundaryOnly(true);
|
tscx->setBoundaryOnly(true);
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_ODD); // tesselation - ODD, only show boundary.
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_ODD); // tesselation - ODD, only show boundary.
|
||||||
tscx->retesselatePolygons(*geom);
|
tscx->retessellatePolygons(*geom);
|
||||||
} else if (geode.getName()== "tesselate positive") {
|
} else if (geode.getName()== "tesselate positive") {
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_POSITIVE); // tesselation - pos.
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_POSITIVE); // tesselation - pos.
|
||||||
tscx->retesselatePolygons(*geom);
|
tscx->retessellatePolygons(*geom);
|
||||||
} else if (geode.getName()== "tesselate positive bound") {
|
} else if (geode.getName()== "tesselate positive bound") {
|
||||||
tscx->setBoundaryOnly(true);
|
tscx->setBoundaryOnly(true);
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_POSITIVE);
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_POSITIVE);
|
||||||
tscx->retesselatePolygons(*geom);
|
tscx->retessellatePolygons(*geom);
|
||||||
} else if (geode.getName()== "tesselate negative") {
|
} else if (geode.getName()== "tesselate negative") {
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_NEGATIVE);
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_NEGATIVE);
|
||||||
tscx->retesselatePolygons(*geom);
|
tscx->retessellatePolygons(*geom);
|
||||||
} else if (geode.getName()== "tesselate negative bound") {
|
} else if (geode.getName()== "tesselate negative bound") {
|
||||||
tscx->setBoundaryOnly(true);
|
tscx->setBoundaryOnly(true);
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_NEGATIVE);
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_NEGATIVE);
|
||||||
tscx->retesselatePolygons(*geom);
|
tscx->retessellatePolygons(*geom);
|
||||||
} else if (geode.getName()== "tesselate nonzero") {
|
} else if (geode.getName()== "tesselate nonzero") {
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_NONZERO);
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_NONZERO);
|
||||||
tscx->retesselatePolygons(*geom);
|
tscx->retessellatePolygons(*geom);
|
||||||
} else if (geode.getName()== "tesselate nonzero bound") {
|
} else if (geode.getName()== "tesselate nonzero bound") {
|
||||||
tscx->setBoundaryOnly(true);
|
tscx->setBoundaryOnly(true);
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_NONZERO);
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_NONZERO);
|
||||||
tscx->retesselatePolygons(*geom);
|
tscx->retessellatePolygons(*geom);
|
||||||
} else if (geode.getName()== "tesselate geq2") {
|
} else if (geode.getName()== "tesselate geq2") {
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_ABS_GEQ_TWO);
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_ABS_GEQ_TWO);
|
||||||
tscx->retesselatePolygons(*geom);
|
tscx->retessellatePolygons(*geom);
|
||||||
} else if (geode.getName()== "tesselate geq2 bound") {
|
} else if (geode.getName()== "tesselate geq2 bound") {
|
||||||
tscx->setBoundaryOnly(true);
|
tscx->setBoundaryOnly(true);
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_ABS_GEQ_TWO);
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_ABS_GEQ_TWO);
|
||||||
tscx->retesselatePolygons(*geom);
|
tscx->retessellatePolygons(*geom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -630,8 +630,8 @@ public:
|
|||||||
class cxTesselateVisitor : public osg::NodeVisitor
|
class cxTesselateVisitor : public osg::NodeVisitor
|
||||||
{ // special to this demo, traverses SG and finds nodes which have been tesselated
|
{ // special to this demo, traverses SG and finds nodes which have been tesselated
|
||||||
// for test/demo purposes these nodes are of type tesselateDemoGeometry
|
// for test/demo purposes these nodes are of type tesselateDemoGeometry
|
||||||
// but you could store the Tesselator as UserData or however you like.
|
// but you could store the Tessellator as UserData or however you like.
|
||||||
// the tesselator holds copies of the original contours used in the tesselation
|
// the Tessellator holds copies of the original contours used in the tesselation
|
||||||
// In this visitor, I reuse the contours to make a different type of tesselation.
|
// In this visitor, I reuse the contours to make a different type of tesselation.
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -650,44 +650,44 @@ public:
|
|||||||
} else { // change to next type of tesselation...
|
} else { // change to next type of tesselation...
|
||||||
geom->setBoundaryOnly(false);
|
geom->setBoundaryOnly(false);
|
||||||
switch (geom->getWindingType()) {
|
switch (geom->getWindingType()) {
|
||||||
case osgUtil::Tesselator::TESS_WINDING_ODD:
|
case osgUtil::Tessellator::TESS_WINDING_ODD:
|
||||||
geom->setWindingType(osgUtil::Tesselator::TESS_WINDING_NONZERO);
|
geom->setWindingType(osgUtil::Tessellator::TESS_WINDING_NONZERO);
|
||||||
break;
|
break;
|
||||||
case osgUtil::Tesselator::TESS_WINDING_NONZERO:
|
case osgUtil::Tessellator::TESS_WINDING_NONZERO:
|
||||||
geom->setWindingType( osgUtil::Tesselator::TESS_WINDING_POSITIVE);
|
geom->setWindingType( osgUtil::Tessellator::TESS_WINDING_POSITIVE);
|
||||||
break;
|
break;
|
||||||
case osgUtil::Tesselator::TESS_WINDING_POSITIVE:
|
case osgUtil::Tessellator::TESS_WINDING_POSITIVE:
|
||||||
geom->setWindingType( osgUtil::Tesselator::TESS_WINDING_NEGATIVE);
|
geom->setWindingType( osgUtil::Tessellator::TESS_WINDING_NEGATIVE);
|
||||||
break;
|
break;
|
||||||
case osgUtil::Tesselator::TESS_WINDING_NEGATIVE:
|
case osgUtil::Tessellator::TESS_WINDING_NEGATIVE:
|
||||||
geom->setWindingType( osgUtil::Tesselator::TESS_WINDING_ABS_GEQ_TWO);
|
geom->setWindingType( osgUtil::Tessellator::TESS_WINDING_ABS_GEQ_TWO);
|
||||||
break;
|
break;
|
||||||
case osgUtil::Tesselator::TESS_WINDING_ABS_GEQ_TWO:
|
case osgUtil::Tessellator::TESS_WINDING_ABS_GEQ_TWO:
|
||||||
geom->setWindingType( osgUtil::Tesselator::TESS_WINDING_ODD);
|
geom->setWindingType( osgUtil::Tessellator::TESS_WINDING_ODD);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (geom->getWindingType()) { // a text to be added to the scene.
|
switch (geom->getWindingType()) { // a text to be added to the scene.
|
||||||
case osgUtil::Tesselator::TESS_WINDING_ODD:
|
case osgUtil::Tessellator::TESS_WINDING_ODD:
|
||||||
str="TESS_WINDING_ODD";
|
str="TESS_WINDING_ODD";
|
||||||
break;
|
break;
|
||||||
case osgUtil::Tesselator::TESS_WINDING_NONZERO:
|
case osgUtil::Tessellator::TESS_WINDING_NONZERO:
|
||||||
str="TESS_WINDING_NONZERO";
|
str="TESS_WINDING_NONZERO";
|
||||||
break;
|
break;
|
||||||
case osgUtil::Tesselator::TESS_WINDING_POSITIVE:
|
case osgUtil::Tessellator::TESS_WINDING_POSITIVE:
|
||||||
str="TESS_WINDING_POSITIVE";
|
str="TESS_WINDING_POSITIVE";
|
||||||
break;
|
break;
|
||||||
case osgUtil::Tesselator::TESS_WINDING_NEGATIVE:
|
case osgUtil::Tessellator::TESS_WINDING_NEGATIVE:
|
||||||
str="TESS_WINDING_NEGATIVE";
|
str="TESS_WINDING_NEGATIVE";
|
||||||
break;
|
break;
|
||||||
case osgUtil::Tesselator::TESS_WINDING_ABS_GEQ_TWO:
|
case osgUtil::Tessellator::TESS_WINDING_ABS_GEQ_TWO:
|
||||||
str="TESS_WINDING_ABS_GEQ_TWO";
|
str="TESS_WINDING_ABS_GEQ_TWO";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (geom->getBoundaryOnly()) str += " Boundary";
|
if (geom->getBoundaryOnly()) str += " Boundary";
|
||||||
|
|
||||||
geom->retesselatePolygons(*geom);
|
geom->retessellatePolygons(*geom);
|
||||||
}
|
}
|
||||||
osgText::Text* txt = dynamic_cast<osgText::Text*>(geode.getDrawable(i));
|
osgText::Text* txt = dynamic_cast<osgText::Text*>(geode.getDrawable(i));
|
||||||
if (txt) {
|
if (txt) {
|
@ -171,8 +171,8 @@ osgstereoimage Images/dog_left_eye.jpg Images/dog_right_eye.jpg
|
|||||||
echo osgteapot
|
echo osgteapot
|
||||||
osgteapot
|
osgteapot
|
||||||
|
|
||||||
echo osgtesselate
|
echo osgtessellate
|
||||||
osgtesselate
|
osgtessellate
|
||||||
|
|
||||||
echo osgtext
|
echo osgtext
|
||||||
osgtext
|
osgtext
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <osg/Geometry>
|
#include <osg/Geometry>
|
||||||
#include <osg/Notify>
|
#include <osg/Notify>
|
||||||
#include <osgUtil/Tesselator>
|
#include <osgUtil/Tessellator>
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
@ -328,13 +328,13 @@ void ESRIShapeParser::_process( const std::vector<ESRIShape::Polygon> &polys )
|
|||||||
new osg::DrawArrays(osg::PrimitiveSet::POLYGON, index, len));
|
new osg::DrawArrays(osg::PrimitiveSet::POLYGON, index, len));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use osgUtil::Tesselator to handle concave polygons
|
// Use osgUtil::Tessellator to handle concave polygons
|
||||||
osg::ref_ptr<osgUtil::Tesselator> tscx=new osgUtil::Tesselator;
|
osg::ref_ptr<osgUtil::Tessellator> tscx=new osgUtil::Tessellator;
|
||||||
tscx->setTesselationType(osgUtil::Tesselator::TESS_TYPE_GEOMETRY);
|
tscx->setTessellationType(osgUtil::Tessellator::TESS_TYPE_GEOMETRY);
|
||||||
tscx->setBoundaryOnly(false);
|
tscx->setBoundaryOnly(false);
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_ODD);
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_ODD);
|
||||||
|
|
||||||
tscx->retesselatePolygons(*(geometry.get()));
|
tscx->retessellatePolygons(*(geometry.get()));
|
||||||
|
|
||||||
_geode->addDrawable( geometry.get() );
|
_geode->addDrawable( geometry.get() );
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include <osg/Math>
|
#include <osg/Math>
|
||||||
#include <osg/Notify>
|
#include <osg/Notify>
|
||||||
|
|
||||||
#include <osgUtil/Tesselator>
|
#include <osgUtil/Tessellator>
|
||||||
|
|
||||||
#include <osgDB/FileNameUtils>
|
#include <osgDB/FileNameUtils>
|
||||||
#include <osgDB/Registry>
|
#include <osgDB/Registry>
|
||||||
@ -903,8 +903,8 @@ class SurfaceBin : public PrimitiveBin {
|
|||||||
_geometry->addPrimitiveSet(drawArray);
|
_geometry->addPrimitiveSet(drawArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
osgUtil::Tesselator tesselator;
|
osgUtil::Tessellator tessellator;
|
||||||
tesselator.retesselatePolygons(*_geometry);
|
tessellator.retessellatePolygons(*_geometry);
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle triangles
|
// handle triangles
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
#include <osgDB/WriteFile>
|
#include <osgDB/WriteFile>
|
||||||
#include <osgDB/Input>
|
#include <osgDB/Input>
|
||||||
#include <osgDB/Output>
|
#include <osgDB/Output>
|
||||||
#include <osgUtil/Tesselator>
|
#include <osgUtil/Tessellator>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
@ -1914,14 +1914,14 @@ class ReaderGEO
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (geodeholder) {
|
if (geodeholder) {
|
||||||
osgUtil::Tesselator tesselator;
|
osgUtil::Tessellator tessellator;
|
||||||
for(unsigned int ige=0;ige<geodeholder->getNumChildren();++ige) {
|
for(unsigned int ige=0;ige<geodeholder->getNumChildren();++ige) {
|
||||||
osg::Geode *geode=dynamic_cast<osg::Geode*>(geodeholder->getChild(ige));
|
osg::Geode *geode=dynamic_cast<osg::Geode*>(geodeholder->getChild(ige));
|
||||||
if (geode) {
|
if (geode) {
|
||||||
for(unsigned int i=0;i<geode->getNumDrawables();++i)
|
for(unsigned int i=0;i<geode->getNumDrawables();++i)
|
||||||
{
|
{
|
||||||
osg::Geometry* geom = dynamic_cast<osg::Geometry*>(geode->getDrawable(i));
|
osg::Geometry* geom = dynamic_cast<osg::Geometry*>(geode->getDrawable(i));
|
||||||
if (geom) tesselator.retesselatePolygons(*geom);
|
if (geom) tessellator.retessellatePolygons(*geom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
#include <osgDB/FileUtils>
|
#include <osgDB/FileUtils>
|
||||||
|
|
||||||
#include <osgUtil/SmoothingVisitor>
|
#include <osgUtil/SmoothingVisitor>
|
||||||
#include <osgUtil/Tesselator>
|
#include <osgUtil/Tessellator>
|
||||||
|
|
||||||
#include "Converter.h"
|
#include "Converter.h"
|
||||||
#include "VertexMap.h"
|
#include "VertexMap.h"
|
||||||
@ -333,7 +333,7 @@ osgDB::ReaderWriter::ReadResult ReaderWriterLWO::readNode_LWO1(const std::string
|
|||||||
|
|
||||||
osg::Geode* geode = new osg::Geode;
|
osg::Geode* geode = new osg::Geode;
|
||||||
|
|
||||||
osgUtil::Tesselator tesselator;
|
osgUtil::Tessellator tessellator;
|
||||||
|
|
||||||
// add everthing into the Geode.
|
// add everthing into the Geode.
|
||||||
osgUtil::SmoothingVisitor smoother;
|
osgUtil::SmoothingVisitor smoother;
|
||||||
@ -345,7 +345,7 @@ osgDB::ReaderWriter::ReadResult ReaderWriterLWO::readNode_LWO1(const std::string
|
|||||||
if (gc._geom)
|
if (gc._geom)
|
||||||
{
|
{
|
||||||
|
|
||||||
tesselator.retesselatePolygons(*gc._geom);
|
tessellator.retessellatePolygons(*gc._geom);
|
||||||
|
|
||||||
smoother.smooth(*gc._geom);
|
smoother.smooth(*gc._geom);
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
#include <osgUtil/TriStripVisitor>
|
#include <osgUtil/TriStripVisitor>
|
||||||
#include <osgUtil/SmoothingVisitor>
|
#include <osgUtil/SmoothingVisitor>
|
||||||
#include <osgUtil/Tesselator>
|
#include <osgUtil/Tessellator>
|
||||||
|
|
||||||
#include "obj.h"
|
#include "obj.h"
|
||||||
|
|
||||||
@ -509,8 +509,8 @@ osg::Node* ReaderWriterOBJ::convertModelToSceneGraph(obj::Model& model, bool& ro
|
|||||||
geometry->setStateSet(stateset);
|
geometry->setStateSet(stateset);
|
||||||
|
|
||||||
// tesseleate any large polygons
|
// tesseleate any large polygons
|
||||||
osgUtil::Tesselator tesselator;
|
osgUtil::Tessellator tessellator;
|
||||||
tesselator.retesselatePolygons(*geometry);
|
tessellator.retessellatePolygons(*geometry);
|
||||||
|
|
||||||
// tri strip polygons to improve graphics peformance
|
// tri strip polygons to improve graphics peformance
|
||||||
osgUtil::TriStripVisitor tsv;
|
osgUtil::TriStripVisitor tsv;
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include <osg/Notify>
|
#include <osg/Notify>
|
||||||
#include <osg/Geode>
|
#include <osg/Geode>
|
||||||
|
|
||||||
#include <osgUtil/Tesselator>
|
#include <osgUtil/Tessellator>
|
||||||
#include <osgUtil/Optimizer>
|
#include <osgUtil/Optimizer>
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@ -87,8 +87,8 @@ void Optimizer::TesselateVisitor::apply(osg::Geode& geode)
|
|||||||
if (hasPolygons(*geometry))
|
if (hasPolygons(*geometry))
|
||||||
{
|
{
|
||||||
// Tesselate
|
// Tesselate
|
||||||
osgUtil::Tesselator tesselator;
|
osgUtil::Tessellator tessellator;
|
||||||
tesselator.retesselatePolygons(*geometry);
|
tessellator.retessellatePolygons(*geometry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <osgUtil/DelaunayTriangulator>
|
#include <osgUtil/DelaunayTriangulator>
|
||||||
// NB this algorithm makes heavy use of the osgUtil::Tesselator for constrained triangulation.
|
// NB this algorithm makes heavy use of the osgUtil::Tessellator for constrained triangulation.
|
||||||
// truly it is built on the shoulders of giants.
|
// truly it is built on the shoulders of giants.
|
||||||
|
|
||||||
#include <osg/GL>
|
#include <osg/GL>
|
||||||
@ -23,7 +23,7 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <map> //GWM July 2005 map is used in constraints.
|
#include <map> //GWM July 2005 map is used in constraints.
|
||||||
#include <osgUtil/Tesselator> // tesselator triangulates the constrained triangles
|
#include <osgUtil/Tessellator> // tesselator triangulates the constrained triangles
|
||||||
|
|
||||||
namespace osgUtil
|
namespace osgUtil
|
||||||
{
|
{
|
||||||
@ -425,7 +425,7 @@ Triangle_list fillHole(osg::Vec3Array *points, std::vector<unsigned int> vind
|
|||||||
Triangle_list triangles; // returned list
|
Triangle_list triangles; // returned list
|
||||||
osg::ref_ptr<osg::Geometry> gtess=new osg::Geometry; // add all the contours to this for analysis
|
osg::ref_ptr<osg::Geometry> gtess=new osg::Geometry; // add all the contours to this for analysis
|
||||||
osg::ref_ptr<osg::Vec3Array> constraintverts=new osg::Vec3Array;
|
osg::ref_ptr<osg::Vec3Array> constraintverts=new osg::Vec3Array;
|
||||||
osg::ref_ptr<osgUtil::Tesselator> tscx=new osgUtil::Tesselator; // this assembles all the constraints
|
osg::ref_ptr<osgUtil::Tessellator> tscx=new osgUtil::Tessellator; // this assembles all the constraints
|
||||||
|
|
||||||
for (std::vector<unsigned int>::iterator itint=vindexlist.begin(); itint!=vindexlist.end(); itint++)
|
for (std::vector<unsigned int>::iterator itint=vindexlist.begin(); itint!=vindexlist.end(); itint++)
|
||||||
{
|
{
|
||||||
@ -437,11 +437,11 @@ Triangle_list fillHole(osg::Vec3Array *points, std::vector<unsigned int> vind
|
|||||||
|
|
||||||
gtess->setVertexArray(constraintverts.get());
|
gtess->setVertexArray(constraintverts.get());
|
||||||
gtess->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::POLYGON,0,npts));
|
gtess->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::POLYGON,0,npts));
|
||||||
tscx->setTesselationNormal(osg::Vec3(0.0,0.0,1.0));
|
tscx->setTessellationNormal(osg::Vec3(0.0,0.0,1.0));
|
||||||
tscx->setTesselationType(osgUtil::Tesselator::TESS_TYPE_GEOMETRY);
|
tscx->setTessellationType(osgUtil::Tessellator::TESS_TYPE_GEOMETRY);
|
||||||
tscx->setBoundaryOnly(false);
|
tscx->setBoundaryOnly(false);
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_ODD); // the commonest tesselation is default, ODD. GE2 allows intersections of constraints to be found.
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_ODD); // the commonest tesselation is default, ODD. GE2 allows intersections of constraints to be found.
|
||||||
tscx->retesselatePolygons(*(gtess.get())); // this should insert extra vertices where constraints overlap
|
tscx->retessellatePolygons(*(gtess.get())); // this should insert extra vertices where constraints overlap
|
||||||
|
|
||||||
// extract triangles from gtess
|
// extract triangles from gtess
|
||||||
|
|
||||||
@ -1270,15 +1270,15 @@ osg::Vec3Array* DelaunayConstraint::getPoints(const osg::Vec3Array *points)
|
|||||||
void DelaunayConstraint::handleOverlaps(void)
|
void DelaunayConstraint::handleOverlaps(void)
|
||||||
{
|
{
|
||||||
// use tesselator to interpolate crossing vertices.
|
// use tesselator to interpolate crossing vertices.
|
||||||
osg::ref_ptr<osgUtil::Tesselator> tscx=new osgUtil::Tesselator; // this assembles all the constraints
|
osg::ref_ptr<osgUtil::Tessellator> tscx=new osgUtil::Tessellator; // this assembles all the constraints
|
||||||
tscx->setTesselationType(osgUtil::Tesselator::TESS_TYPE_GEOMETRY);
|
tscx->setTessellationType(osgUtil::Tessellator::TESS_TYPE_GEOMETRY);
|
||||||
tscx->setBoundaryOnly(true);
|
tscx->setBoundaryOnly(true);
|
||||||
tscx->setWindingType( osgUtil::Tesselator::TESS_WINDING_ODD);
|
tscx->setWindingType( osgUtil::Tessellator::TESS_WINDING_ODD);
|
||||||
// ODD chooses the winding =1, NOT overlapping areas of constraints.
|
// ODD chooses the winding =1, NOT overlapping areas of constraints.
|
||||||
// nb this includes all the edges where delaunay constraints meet
|
// nb this includes all the edges where delaunay constraints meet
|
||||||
// draw a case to convince yourself!.
|
// draw a case to convince yourself!.
|
||||||
|
|
||||||
tscx->retesselatePolygons(*this); // find all edges
|
tscx->retessellatePolygons(*this); // find all edges
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace osgutil
|
} // namespace osgutil
|
||||||
|
@ -26,7 +26,7 @@ CXXFILES = \
|
|||||||
StateGraph.cpp\
|
StateGraph.cpp\
|
||||||
Statistics.cpp\
|
Statistics.cpp\
|
||||||
TangentSpaceGenerator.cpp\
|
TangentSpaceGenerator.cpp\
|
||||||
Tesselator.cpp\
|
Tessellator.cpp\
|
||||||
TransformAttributeFunctor.cpp\
|
TransformAttributeFunctor.cpp\
|
||||||
TransformCallback.cpp\
|
TransformCallback.cpp\
|
||||||
TriStrip_tri_stripper.cpp\
|
TriStrip_tri_stripper.cpp\
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
#include <osgUtil/TransformAttributeFunctor>
|
#include <osgUtil/TransformAttributeFunctor>
|
||||||
#include <osgUtil/TriStripVisitor>
|
#include <osgUtil/TriStripVisitor>
|
||||||
#include <osgUtil/Tesselator>
|
#include <osgUtil/Tessellator>
|
||||||
#include <osgUtil/Statistics>
|
#include <osgUtil/Statistics>
|
||||||
|
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
@ -320,8 +320,8 @@ void Optimizer::TesselateVisitor::apply(osg::Geode& geode)
|
|||||||
{
|
{
|
||||||
osg::Geometry* geom = dynamic_cast<osg::Geometry*>(geode.getDrawable(i));
|
osg::Geometry* geom = dynamic_cast<osg::Geometry*>(geode.getDrawable(i));
|
||||||
if (geom) {
|
if (geom) {
|
||||||
osgUtil::Tesselator tesselator;
|
osgUtil::Tessellator tessellator;
|
||||||
tesselator.retesselatePolygons(*geom);
|
tessellator.retessellatePolygons(*geom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
traverse(geode);
|
traverse(geode);
|
||||||
|
@ -14,13 +14,13 @@
|
|||||||
#include <osg/GLU>
|
#include <osg/GLU>
|
||||||
|
|
||||||
#include <osg/Notify>
|
#include <osg/Notify>
|
||||||
#include <osgUtil/Tesselator>
|
#include <osgUtil/Tessellator>
|
||||||
|
|
||||||
using namespace osg;
|
using namespace osg;
|
||||||
using namespace osgUtil;
|
using namespace osgUtil;
|
||||||
|
|
||||||
|
|
||||||
Tesselator::Tesselator() :
|
Tessellator::Tessellator() :
|
||||||
_wtype(TESS_WINDING_ODD),
|
_wtype(TESS_WINDING_ODD),
|
||||||
_ttype(TESS_TYPE_POLYGONS),
|
_ttype(TESS_TYPE_POLYGONS),
|
||||||
_boundaryOnly(false), _numberVerts(0)
|
_boundaryOnly(false), _numberVerts(0)
|
||||||
@ -30,12 +30,12 @@ Tesselator::Tesselator() :
|
|||||||
_index=0;
|
_index=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Tesselator::~Tesselator()
|
Tessellator::~Tessellator()
|
||||||
{
|
{
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::beginTesselation()
|
void Tessellator::beginTessellation()
|
||||||
{
|
{
|
||||||
reset();
|
reset();
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ void Tesselator::beginTesselation()
|
|||||||
gluTessBeginPolygon(_tobj,this);
|
gluTessBeginPolygon(_tobj,this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::beginContour()
|
void Tessellator::beginContour()
|
||||||
{
|
{
|
||||||
if (_tobj)
|
if (_tobj)
|
||||||
{
|
{
|
||||||
@ -59,7 +59,7 @@ void Tesselator::beginContour()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::addVertex(osg::Vec3* vertex)
|
void Tessellator::addVertex(osg::Vec3* vertex)
|
||||||
{
|
{
|
||||||
if (_tobj)
|
if (_tobj)
|
||||||
{
|
{
|
||||||
@ -72,7 +72,7 @@ void Tesselator::addVertex(osg::Vec3* vertex)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::endContour()
|
void Tessellator::endContour()
|
||||||
{
|
{
|
||||||
if (_tobj)
|
if (_tobj)
|
||||||
{
|
{
|
||||||
@ -80,7 +80,7 @@ void Tesselator::endContour()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::endTesselation()
|
void Tessellator::endTessellation()
|
||||||
{
|
{
|
||||||
if (_tobj)
|
if (_tobj)
|
||||||
{
|
{
|
||||||
@ -96,7 +96,7 @@ void Tesselator::endTesselation()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::reset()
|
void Tessellator::reset()
|
||||||
{
|
{
|
||||||
if (_tobj)
|
if (_tobj)
|
||||||
{
|
{
|
||||||
@ -152,9 +152,9 @@ class InsertNewVertices : public osg::ArrayVisitor
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void Tesselator::retesselatePolygons(osg::Geometry &geom)
|
void Tessellator::retessellatePolygons(osg::Geometry &geom)
|
||||||
{
|
{
|
||||||
// turn the contour list into primitives, a little like tesselator does but more generally
|
// turn the contour list into primitives, a little like Tessellator does but more generally
|
||||||
osg::Vec3Array* vertices = dynamic_cast<osg::Vec3Array*>(geom.getVertexArray());
|
osg::Vec3Array* vertices = dynamic_cast<osg::Vec3Array*>(geom.getVertexArray());
|
||||||
|
|
||||||
if (!vertices || vertices->empty() || geom.getPrimitiveSetList().empty()) return;
|
if (!vertices || vertices->empty() || geom.getPrimitiveSetList().empty()) return;
|
||||||
@ -173,18 +173,18 @@ void Tesselator::retesselatePolygons(osg::Geometry &geom)
|
|||||||
if (geom.getTexCoordIndices(unit)) return;
|
if (geom.getTexCoordIndices(unit)) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_ttype==TESS_TYPE_POLYGONS || _ttype==TESS_TYPE_DRAWABLE) _numberVerts=0; // 09.04.04 GWM reset tesselator
|
if (_ttype==TESS_TYPE_POLYGONS || _ttype==TESS_TYPE_DRAWABLE) _numberVerts=0; // 09.04.04 GWM reset Tessellator
|
||||||
// the reset is needed by the flt loader which reuses a tesselator for triangulating polygons.
|
// the reset is needed by the flt loader which reuses a Tessellator for triangulating polygons.
|
||||||
// as such it might be reset by other loaders/developers in future.
|
// as such it might be reset by other loaders/developers in future.
|
||||||
_index=0; // reset the counter for indexed vertices
|
_index=0; // reset the counter for indexed vertices
|
||||||
_extraPrimitives = 0;
|
_extraPrimitives = 0;
|
||||||
if (!_numberVerts) {
|
if (!_numberVerts) {
|
||||||
_numberVerts=geom.getVertexArray()->getNumElements();
|
_numberVerts=geom.getVertexArray()->getNumElements();
|
||||||
// save the contours for complex (winding rule) tesselations
|
// save the contours for complex (winding rule) tessellations
|
||||||
_Contours=geom.getPrimitiveSetList();
|
_Contours=geom.getPrimitiveSetList();
|
||||||
}
|
}
|
||||||
|
|
||||||
// now cut out vertex attributes added on any previous tesselation
|
// now cut out vertex attributes added on any previous tessellation
|
||||||
reduceArray(geom.getVertexArray(), _numberVerts);
|
reduceArray(geom.getVertexArray(), _numberVerts);
|
||||||
reduceArray(geom.getColorArray(), _numberVerts);
|
reduceArray(geom.getColorArray(), _numberVerts);
|
||||||
reduceArray(geom.getNormalArray(), _numberVerts);
|
reduceArray(geom.getNormalArray(), _numberVerts);
|
||||||
@ -198,21 +198,21 @@ void Tesselator::retesselatePolygons(osg::Geometry &geom)
|
|||||||
unsigned int nprimsetoriginal= geom.getNumPrimitiveSets();
|
unsigned int nprimsetoriginal= geom.getNumPrimitiveSets();
|
||||||
if (nprimsetoriginal) geom.removePrimitiveSet(0, nprimsetoriginal);
|
if (nprimsetoriginal) geom.removePrimitiveSet(0, nprimsetoriginal);
|
||||||
|
|
||||||
// the main difference from osgUtil::tesselator for Geometry sets of multiple contours is that the begin/end tesselation
|
// the main difference from osgUtil::Tessellator for Geometry sets of multiple contours is that the begin/end tessellation
|
||||||
// occurs around the whole set of contours.
|
// occurs around the whole set of contours.
|
||||||
if (_ttype==TESS_TYPE_GEOMETRY) {
|
if (_ttype==TESS_TYPE_GEOMETRY) {
|
||||||
beginTesselation();
|
beginTessellation();
|
||||||
gluTessProperty(_tobj, GLU_TESS_WINDING_RULE, _wtype);
|
gluTessProperty(_tobj, GLU_TESS_WINDING_RULE, _wtype);
|
||||||
gluTessProperty(_tobj, GLU_TESS_BOUNDARY_ONLY , _boundaryOnly);
|
gluTessProperty(_tobj, GLU_TESS_BOUNDARY_ONLY , _boundaryOnly);
|
||||||
}
|
}
|
||||||
// process all the contours into the tesselator
|
// process all the contours into the Tessellator
|
||||||
int noContours = _Contours.size();
|
int noContours = _Contours.size();
|
||||||
int currentPrimitive = 0;
|
int currentPrimitive = 0;
|
||||||
for(int primNo=0;primNo<noContours;++primNo)
|
for(int primNo=0;primNo<noContours;++primNo)
|
||||||
{
|
{
|
||||||
osg::ref_ptr<osg::PrimitiveSet> primitive = _Contours[primNo].get();
|
osg::ref_ptr<osg::PrimitiveSet> primitive = _Contours[primNo].get();
|
||||||
if (_ttype==TESS_TYPE_POLYGONS || _ttype==TESS_TYPE_DRAWABLE)
|
if (_ttype==TESS_TYPE_POLYGONS || _ttype==TESS_TYPE_DRAWABLE)
|
||||||
{ // this recovers the 'old' tesselation which just retesselates single polygons.
|
{ // this recovers the 'old' tessellation which just retessellates single polygons.
|
||||||
if (primitive->getMode()==osg::PrimitiveSet::POLYGON || _ttype==TESS_TYPE_DRAWABLE)
|
if (primitive->getMode()==osg::PrimitiveSet::POLYGON || _ttype==TESS_TYPE_DRAWABLE)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -224,31 +224,31 @@ void Tesselator::retesselatePolygons(osg::Geometry &geom)
|
|||||||
itr!=drawArrayLengths->end();
|
itr!=drawArrayLengths->end();
|
||||||
++itr)
|
++itr)
|
||||||
{
|
{
|
||||||
beginTesselation();
|
beginTessellation();
|
||||||
unsigned int last = first + *itr;
|
unsigned int last = first + *itr;
|
||||||
addContour(primitive->getMode(),first,last,vertices);
|
addContour(primitive->getMode(),first,last,vertices);
|
||||||
first = last;
|
first = last;
|
||||||
endTesselation();
|
endTessellation();
|
||||||
collectTesselation(geom, currentPrimitive);
|
collectTessellation(geom, currentPrimitive);
|
||||||
currentPrimitive++;
|
currentPrimitive++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (primitive->getNumIndices()>3) { // April 2005 gwm only retesselate "complex" polygons
|
if (primitive->getNumIndices()>3) { // April 2005 gwm only retessellate "complex" polygons
|
||||||
beginTesselation();
|
beginTessellation();
|
||||||
addContour(primitive.get(), vertices);
|
addContour(primitive.get(), vertices);
|
||||||
endTesselation();
|
endTessellation();
|
||||||
collectTesselation(geom, currentPrimitive);
|
collectTessellation(geom, currentPrimitive);
|
||||||
currentPrimitive++;
|
currentPrimitive++;
|
||||||
} else { // April 2005 gwm triangles don't need to be retesselated
|
} else { // April 2005 gwm triangles don't need to be retessellated
|
||||||
geom.addPrimitiveSet(primitive.get());
|
geom.addPrimitiveSet(primitive.get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // copy the contour primitive as it is not being tesselated
|
{ // copy the contour primitive as it is not being tessellated
|
||||||
geom.addPrimitiveSet(primitive.get());
|
geom.addPrimitiveSet(primitive.get());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -261,20 +261,20 @@ void Tesselator::retesselatePolygons(osg::Geometry &geom)
|
|||||||
primitive->getMode()==osg::PrimitiveSet::TRIANGLE_STRIP)
|
primitive->getMode()==osg::PrimitiveSet::TRIANGLE_STRIP)
|
||||||
{
|
{
|
||||||
addContour(primitive.get(), vertices);
|
addContour(primitive.get(), vertices);
|
||||||
} else { // copy the contour primitive as it is not being tesselated
|
} else { // copy the contour primitive as it is not being tessellated
|
||||||
// in this case points, lines or line_strip
|
// in this case points, lines or line_strip
|
||||||
geom.addPrimitiveSet(primitive.get());
|
geom.addPrimitiveSet(primitive.get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_ttype==TESS_TYPE_GEOMETRY) {
|
if (_ttype==TESS_TYPE_GEOMETRY) {
|
||||||
endTesselation();
|
endTessellation();
|
||||||
|
|
||||||
collectTesselation(geom, 0);
|
collectTessellation(geom, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::addContour(GLenum mode, unsigned int first, unsigned int last, osg::Vec3Array* vertices)
|
void Tessellator::addContour(GLenum mode, unsigned int first, unsigned int last, osg::Vec3Array* vertices)
|
||||||
{
|
{
|
||||||
beginContour();
|
beginContour();
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ void Tesselator::addContour(GLenum mode, unsigned int first, unsigned int last,
|
|||||||
endContour();
|
endContour();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::addContour(osg::PrimitiveSet* primitive, osg::Vec3Array* vertices)
|
void Tessellator::addContour(osg::PrimitiveSet* primitive, osg::Vec3Array* vertices)
|
||||||
{
|
{
|
||||||
// adds a single primitive as a contour.
|
// adds a single primitive as a contour.
|
||||||
unsigned int nperprim=0; // number of vertices per primitive
|
unsigned int nperprim=0; // number of vertices per primitive
|
||||||
@ -413,13 +413,13 @@ void Tesselator::addContour(osg::PrimitiveSet* primitive, osg::Vec3Array* vertic
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
osg::notify(osg::NOTICE)<<"Tesselator::addContour(primitive, vertices) : Primitive type "<<primitive->getType()<<" not handled"<<std::endl;
|
osg::notify(osg::NOTICE)<<"Tessellator::addContour(primitive, vertices) : Primitive type "<<primitive->getType()<<" not handled"<<std::endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::handleNewVertices(osg::Geometry& geom,VertexPtrToIndexMap &vertexPtrToIndexMap)
|
void Tessellator::handleNewVertices(osg::Geometry& geom,VertexPtrToIndexMap &vertexPtrToIndexMap)
|
||||||
{
|
{
|
||||||
if (!_newVertexList.empty())
|
if (!_newVertexList.empty())
|
||||||
{
|
{
|
||||||
@ -505,12 +505,12 @@ void Tesselator::handleNewVertices(osg::Geometry& geom,VertexPtrToIndexMap &vert
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::begin(GLenum mode)
|
void Tessellator::begin(GLenum mode)
|
||||||
{
|
{
|
||||||
_primList.push_back(new Prim(mode));
|
_primList.push_back(new Prim(mode));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::vertex(osg::Vec3* vertex)
|
void Tessellator::vertex(osg::Vec3* vertex)
|
||||||
{
|
{
|
||||||
if (!_primList.empty())
|
if (!_primList.empty())
|
||||||
{
|
{
|
||||||
@ -520,7 +520,7 @@ void Tesselator::vertex(osg::Vec3* vertex)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::combine(osg::Vec3* vertex,void* vertex_data[4],GLfloat weight[4])
|
void Tessellator::combine(osg::Vec3* vertex,void* vertex_data[4],GLfloat weight[4])
|
||||||
{
|
{
|
||||||
_newVertexList.push_back(NewVertex(vertex,
|
_newVertexList.push_back(NewVertex(vertex,
|
||||||
weight[0],(Vec3*)vertex_data[0],
|
weight[0],(Vec3*)vertex_data[0],
|
||||||
@ -529,46 +529,46 @@ void Tesselator::combine(osg::Vec3* vertex,void* vertex_data[4],GLfloat weight[4
|
|||||||
weight[3],(Vec3*)vertex_data[3]));
|
weight[3],(Vec3*)vertex_data[3]));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::end()
|
void Tessellator::end()
|
||||||
{
|
{
|
||||||
// no need to do anything right now...
|
// no need to do anything right now...
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::error(GLenum errorCode)
|
void Tessellator::error(GLenum errorCode)
|
||||||
{
|
{
|
||||||
_errorCode = errorCode;
|
_errorCode = errorCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CALLBACK Tesselator::beginCallback(GLenum which, void* userData)
|
void CALLBACK Tessellator::beginCallback(GLenum which, void* userData)
|
||||||
{
|
{
|
||||||
((Tesselator*)userData)->begin(which);
|
((Tessellator*)userData)->begin(which);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CALLBACK Tesselator::endCallback(void* userData)
|
void CALLBACK Tessellator::endCallback(void* userData)
|
||||||
{
|
{
|
||||||
((Tesselator*)userData)->end();
|
((Tessellator*)userData)->end();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CALLBACK Tesselator::vertexCallback(GLvoid *data, void* userData)
|
void CALLBACK Tessellator::vertexCallback(GLvoid *data, void* userData)
|
||||||
{
|
{
|
||||||
((Tesselator*)userData)->vertex((Vec3*)data);
|
((Tessellator*)userData)->vertex((Vec3*)data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CALLBACK Tesselator::combineCallback(GLdouble coords[3], void* vertex_data[4],
|
void CALLBACK Tessellator::combineCallback(GLdouble coords[3], void* vertex_data[4],
|
||||||
GLfloat weight[4], void** outData,
|
GLfloat weight[4], void** outData,
|
||||||
void* userData)
|
void* userData)
|
||||||
{
|
{
|
||||||
Vec3* newData = new osg::Vec3(coords[0],coords[1],coords[2]);
|
Vec3* newData = new osg::Vec3(coords[0],coords[1],coords[2]);
|
||||||
*outData = newData;
|
*outData = newData;
|
||||||
((Tesselator*)userData)->combine(newData,vertex_data,weight);
|
((Tessellator*)userData)->combine(newData,vertex_data,weight);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CALLBACK Tesselator::errorCallback(GLenum errorCode, void* userData)
|
void CALLBACK Tessellator::errorCallback(GLenum errorCode, void* userData)
|
||||||
{
|
{
|
||||||
((Tesselator*)userData)->error(errorCode);
|
((Tessellator*)userData)->error(errorCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tesselator::reduceArray(osg::Array * cold, const unsigned int nnu)
|
void Tessellator::reduceArray(osg::Array * cold, const unsigned int nnu)
|
||||||
{ // shrinks size of array to N
|
{ // shrinks size of array to N
|
||||||
if (cold && cold->getNumElements()>nnu) {
|
if (cold && cold->getNumElements()>nnu) {
|
||||||
osg::Vec2Array* v2arr = NULL;
|
osg::Vec2Array* v2arr = NULL;
|
||||||
@ -650,7 +650,7 @@ unsigned int _computeNumberOfPrimitives(const osg::Geometry& geom)
|
|||||||
return totalNumberOfPrimitives;
|
return totalNumberOfPrimitives;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
void Tesselator::collectTesselation(osg::Geometry &geom, unsigned int originalIndex)
|
void Tessellator::collectTessellation(osg::Geometry &geom, unsigned int originalIndex)
|
||||||
{
|
{
|
||||||
osg::Vec3Array* vertices = dynamic_cast<osg::Vec3Array*>(geom.getVertexArray());
|
osg::Vec3Array* vertices = dynamic_cast<osg::Vec3Array*>(geom.getVertexArray());
|
||||||
VertexPtrToIndexMap vertexPtrToIndexMap;
|
VertexPtrToIndexMap vertexPtrToIndexMap;
|
||||||
@ -693,7 +693,7 @@ void Tesselator::collectTesselation(osg::Geometry &geom, unsigned int originalIn
|
|||||||
|
|
||||||
}
|
}
|
||||||
// GWM Dec 2003 - these holders need to go outside the loop to
|
// GWM Dec 2003 - these holders need to go outside the loop to
|
||||||
// retain the flat shaded colour &/or normal for each tesselated polygon
|
// retain the flat shaded colour &/or normal for each tessellated polygon
|
||||||
osg::Vec3 norm(0.0f,0.0f,0.0f);
|
osg::Vec3 norm(0.0f,0.0f,0.0f);
|
||||||
osg::Vec4 primCol4(0.0f,0.0f,0.0f,1.0f);
|
osg::Vec4 primCol4(0.0f,0.0f,0.0f,1.0f);
|
||||||
osg::Vec3 primCol3(0.0f,0.0f,0.0f);
|
osg::Vec3 primCol3(0.0f,0.0f,0.0f);
|
Loading…
Reference in New Issue
Block a user