Ignore:
Timestamp:
02/17/07 22:48:12 (17 years ago)
Author:
mattausch
Message:

worded on obj loading in Ogre

Location:
GTP/trunk/Lib/Vis/OnlineCullingCHC/ObjReader
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/ObjReader/include/ObjManualMeshLoader.h

    r2111 r2123  
    22#define __ObjManualMeshLoader_H__ 
    33 
     4#include "Ogre.h" 
    45 
    5 #include "Ogre.h" 
    6 #include "ObjMeshData.h" 
    7  
     6namespace  GtpVisibilityPreprocessor { 
     7class BvhLeaf; 
     8} 
    89 
    910class __declspec(dllexport) ObjManualMeshLoader: public Ogre::ManualResourceLoader 
    1011{ 
    11         public: 
    12                 ObjManualMeshLoader(); 
    13                 ObjManualMeshLoader(ObjMeshData *mData); 
    14                 ~ObjManualMeshLoader();  
     12public: 
     13        ObjManualMeshLoader(GtpVisibilityPreprocessor::BvhLeaf *obj); 
     14        ~ObjManualMeshLoader();  
    1515 
    16                 void loadResource(Ogre::Resource *resource); 
     16        void loadResource(Ogre::Resource *resource); 
    1717 
    18                 Ogre::AxisAlignedBox *getBoundingBox(); 
    19         private: 
    20                 ObjMeshData *data; 
     18protected: 
    2119 
     20        GtpVisibilityPreprocessor::BvhLeaf *mObject; 
    2221}; 
    2322 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/ObjReader/include/ObjReader.h

    r2122 r2123  
    77#include "Containers.h" 
    88 
     9namespace  GtpVisibilityPreprocessor { 
     10class Intersectable; 
     11} 
    912 
    1013class __declspec(dllexport) ObjReader 
     
    1417        ~ObjReader(); 
    1518 
    16         bool LoadFile(const string &sceneName,  
    17                                   const string &visibilitySolution, 
     19        bool LoadFile(const std::string &sceneName,  
     20                                  const std::string &visibilitySolution, 
    1821                                  Ogre::SceneNode *root); 
    19          
     22        void dummy(); 
     23        Ogre::Entity * dummy2(const std::string &name, 
     24                                GtpVisibilityPreprocessor::Intersectable *object); 
    2025        Ogre::Entity *CreateEntity(const std::string &name, 
    2126                                                           GtpVisibilityPreprocessor::Intersectable *object); 
     
    2530 
    2631        Ogre::SceneManager *mSceneManager; 
     32        GtpVisibilityPreprocessor::ObjectContainer mPvsObjects; 
    2733}; 
    2834 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/ObjReader/src/ObjManualMeshLoader.cpp

    r2111 r2123  
    11#include "ObjManualMeshLoader.h" 
    2 #include "ObjReader.h" 
     2#include "Triangle3.h" 
     3#include "IntersectableWrapper.h" 
     4#include "BvHierarchy.h" 
     5#include "OgreLogManager.h" 
    36 
    4 ObjManualMeshLoader::ObjManualMeshLoader() 
    5 { 
    6         data = NULL; 
    7 } 
     7#define USE_HBL_DISCARD 1 
    88 
    9  
    10 ObjManualMeshLoader::ObjManualMeshLoader(ObjMeshData *mData): 
    11 data(mData) 
     9ObjManualMeshLoader::ObjManualMeshLoader(GtpVisibilityPreprocessor::BvhLeaf *obj): 
     10mObject(obj) 
    1211{ 
    1312} 
     
    1615ObjManualMeshLoader::~ObjManualMeshLoader() 
    1716{ 
    18         if (data != NULL) 
    19         { 
    20                 data->collapse(); 
    21                 delete data; 
    22         } 
    23 } 
    24  
    25  
    26 Ogre::AxisAlignedBox *ObjManualMeshLoader::getBoundingBox() 
    27 { 
    28         return data->boundingBox; 
    2917} 
    3018 
     
    3321{ 
    3422        using namespace Ogre; 
    35         Mesh *pMesh = (Mesh *) resource; 
    3623 
     24        Mesh *mesh = (Mesh *) resource; 
     25        SubMesh* submesh = mesh->createSubMesh(); 
    3726 
    38         Vector3 translation = data->boundingBox->getCenter(); 
     27        const int triCount = (int)mObject->mObjects.size(); 
     28        const int vertexCount = triCount * 3; 
    3929 
    40         bool nOk = ((data->normals != NULL) && (data->ncnt > 0)); 
    41         bool tOk = ((data->texCoords != NULL) && (data->tcnt > 0)); 
    42          
    43         pMesh->sharedVertexData = new VertexData();  
     30        // We must create the vertex data, indicating how many vertices there will be 
     31        submesh->useSharedVertices = false; 
     32        submesh->vertexData = new VertexData(); 
     33        submesh->vertexData->vertexStart = 0; 
     34        submesh->vertexData->vertexCount = vertexCount; 
    4435 
    45         VertexDeclaration* vertexDecl = pMesh->sharedVertexData->vertexDeclaration;  
     36        static const unsigned short source = 0; 
     37        size_t offset = 0; 
    4638 
    47         size_t currOffset = 0;  
    48         vertexDecl->addElement(0, currOffset, VET_FLOAT3, VES_POSITION);  
    49         currOffset += VertexElement::getTypeSize(VET_FLOAT3);  
    50         if (nOk) 
     39        // We must now declare what the vertex data contains 
     40        VertexDeclaration* declaration = submesh->vertexData->vertexDeclaration; 
     41 
     42        offset += declaration->addElement(source, offset, VET_FLOAT3, VES_POSITION).getSize(); 
     43        offset += declaration->addElement(source, offset, VET_FLOAT3, VES_NORMAL).getSize(); 
     44        //offset += declaration->addElement(source, offset, VET_FLOAT2,VES_TEXTURE_COORDINATES).getSize(); 
     45 
     46        HardwareVertexBufferSharedPtr vbuffer = HardwareBufferManager::getSingleton(). 
     47                createVertexBuffer(declaration->getVertexSize(source), 
     48                                                   submesh->vertexData->vertexCount, 
     49                                                   HardwareBuffer::HBU_STATIC_WRITE_ONLY); 
     50 
     51    // we get access to the buffer to fill it.  During so we record the bounding box. 
     52        AxisAlignedBox aabox; 
     53 
     54        submesh->vertexData->vertexBufferBinding->setBinding(source, vbuffer); 
     55#if USE_HBL_DISCARD 
     56        float* vdata = static_cast<float*>(vbuffer->lock(HardwareBuffer::HBL_DISCARD)); 
     57#else 
     58        float* vdata = static_cast<float *>(vbuffer->lock(HardwareBuffer::HBL_NORMAL)); 
     59#endif 
     60 
     61        GtpVisibilityPreprocessor::ObjectContainer:: 
     62                const_iterator oit, oit_end = mObject->mObjects.end(); 
     63 
     64        for (oit = mObject->mObjects.begin(); oit != oit_end; ++ oit) 
    5165        { 
    52                 vertexDecl->addElement(0, currOffset, VET_FLOAT3, VES_NORMAL);  
    53                 currOffset += VertexElement::getTypeSize(VET_FLOAT3);  
    54         } 
    55     if (tOk) 
    56         { 
    57                 vertexDecl->addElement(0, currOffset, VET_FLOAT2, VES_TEXTURE_COORDINATES);  
    58                 currOffset += VertexElement::getTypeSize(VET_FLOAT2);  
    59         } 
     66                GtpVisibilityPreprocessor::TriangleIntersectable *tObj =  
     67                        static_cast<GtpVisibilityPreprocessor::TriangleIntersectable *>(*oit); 
     68                 
     69                const GtpVisibilityPreprocessor::Triangle3 tri = tObj->GetItem(); 
     70                const GtpVisibilityPreprocessor::Vector3 n = tri.GetNormal(); 
    6071 
    61         pMesh->sharedVertexData->vertexCount = data->vcnt/3;  
    62         HardwareVertexBufferSharedPtr vbuf =  
    63                 HardwareBufferManager::getSingleton().  
    64                 createVertexBuffer(vertexDecl->getVertexSize(0), pMesh->sharedVertexData->vertexCount,  
    65                         HardwareBuffer::HBU_STATIC_WRITE_ONLY, false);  
     72                for (int i = 0; i < 3; ++ i) 
     73                { 
     74                        Vector3 vtx(tri.mVertices[i].x, tri.mVertices[i].y, tri.mVertices[i].z); 
     75                 
     76                        *(vdata ++) = vtx.x; 
     77                        *(vdata ++) = vtx.y; 
     78                        *(vdata ++) = vtx.z; 
    6679 
    67         VertexBufferBinding* binding = pMesh->sharedVertexData->vertexBufferBinding;  
    68         binding->setBinding(0, vbuf);  
     80                        *(vdata ++) = n.x; 
     81                        *(vdata ++) = n.y; 
     82                        *(vdata ++) = n.z; 
    6983 
    70         Real* pVertices = static_cast<Real*>(vbuf->lock(HardwareBuffer::HBL_DISCARD));  
    71  
    72         int offset = 0, size = 3; 
    73         if (nOk) size += 3; 
    74         if (tOk) size += 2; 
    75         for (int i=0; i<data->vcnt/3; i++)  
    76         { 
    77                 pVertices[i*size]   = data->vertices[i*3]   - translation.x; 
    78                 pVertices[i*size+1] = data->vertices[i*3+1] - translation.y; 
    79                 pVertices[i*size+2] = data->vertices[i*3+2] - translation.z; 
    80  
    81                 offset = 3; 
    82                 if (nOk) 
    83                 { 
    84                         pVertices[i*size+offset] = data->normals[i*3];   offset++; 
    85                         pVertices[i*size+offset] = data->normals[i*3+1]; offset++; 
    86                         pVertices[i*size+offset] = data->normals[i*3+2]; offset++; 
    87                 } 
    88                 if (tOk) 
    89                 { 
    90                         pVertices[i*size+offset] = data->texCoords[i*2];   offset++; 
    91                         pVertices[i*size+offset] = -data->texCoords[i*2+1]; offset++; 
     84                        aabox.merge(vtx); 
    9285                } 
    9386        } 
    9487 
    95         vbuf->unlock();  
     88        vbuffer->unlock(); 
     89 
     90#if 0 
     91        RenderOperation rop; 
     92        submesh->_getRenderOperation(rop); 
     93        rop.useIndexes = false; 
     94#endif 
     95        ////// 
     96        //-- Creates the index data 
     97     
     98        const int indexCount = vertexCount; 
     99        submesh->indexData->indexStart = 0; 
     100        submesh->operationType = RenderOperation::OT_TRIANGLE_LIST; 
     101 
     102        // we use an index for every vertex 
     103        submesh->indexData->indexCount = indexCount; 
     104        submesh->indexData->indexBuffer = 
     105            HardwareBufferManager::getSingleton(). 
     106                        createIndexBuffer(HardwareIndexBuffer::IT_16BIT, 
     107                                                          submesh->indexData->indexCount, 
     108                                                          HardwareBuffer::HBU_STATIC_WRITE_ONLY); 
     109 
     110#if USE_HBL_DISCARD 
     111        uint16* idata = static_cast<uint16 *>(submesh->indexData->indexBuffer->lock(HardwareBuffer::HBL_DISCARD)); 
     112#else 
     113        uint16* idata = static_cast<uint16 *>(submesh->indexData->indexBuffer->lock(HardwareBuffer::HBL_NORMAL)); 
     114#endif 
     115        for (int j = 0; j < indexCount; ++ j) 
     116    { 
     117                idata[j] = j; 
     118    } 
     119     
     120        submesh->indexData->indexBuffer->unlock(); 
     121        submesh->setMaterialName("BaseWhite");  
     122 
     123        // indicate the bounding box 
     124        mesh->_setBounds(aabox);  
     125        mesh->_setBoundingSphereRadius((aabox.getMaximum() - aabox.getMinimum()).length() / 2.0);  
     126} 
    96127 
    97128 
    98         SubMesh *pSub = pMesh->createSubMesh();  
    99         pSub->operationType = RenderOperation::OT_TRIANGLE_LIST; //;data->roType; 
    100         pSub->useSharedVertices = true;  
    101129 
    102         pSub->indexData->indexCount = data->icnt;  
    103         pSub->indexData->indexBuffer = HardwareBufferManager::getSingleton().  
    104                 createIndexBuffer(HardwareIndexBuffer::IT_16BIT,  
    105                         pSub->indexData->indexCount, HardwareBuffer::HBU_STATIC_WRITE_ONLY, false);  
    106  
    107         HardwareIndexBufferSharedPtr ibuf = pSub->indexData->indexBuffer;  
    108         unsigned short* pIndices = static_cast<unsigned short*>(ibuf->lock(HardwareBuffer::HBL_DISCARD));  
    109  
    110         for (i = 0; i < data->icnt; i++) pIndices[i] = data->indices[i]; 
    111          
    112         ibuf->unlock();  
    113                  
    114         AxisAlignedBox bb(data->boundingBox->getMinimum() - translation, data->boundingBox->getMaximum() - translation); 
    115         //AxisAlignedBox bb(data->boundingBox->getMinimum(), data->boundingBox->getMaximum()); 
    116         pMesh->_setBounds(bb);  
    117         Real radius = data->boundingBox->getMinimum().length(); 
    118         if (data->boundingBox->getMaximum().length() > radius) radius = data->boundingBox->getMaximum().length(); 
    119         pMesh->_setBoundingSphereRadius(radius);  
    120  
    121 } 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/ObjReader/src/ObjReader.cpp

    r2122 r2123  
    88#include "PreprocessorFactory.h" 
    99#include "OgreLogManager.h" 
     10#include "ObjManualMeshLoader.h" 
    1011 
    1112 
     
    1718 
    1819ObjReader::~ObjReader() 
    19 {} 
     20{ 
     21        CLEAR_CONTAINER(mPvsObjects); 
     22} 
    2023 
    2124 
     
    3134        // hack 
    3235        preprocessor->mLoadMeshes = false; 
    33         GtpVisibilityPreprocessor::ObjectContainer pvsObjects; 
    3436 
    35         Ogre::LogManager::getSingleton().logMessage("loading obj scene!!"); 
     37        Ogre::LogManager::getSingleton().logMessage("loading obj scene"); 
    3638 
    3739        if (preprocessor->LoadScene(sceneName)) 
     
    3941                Ogre::LogManager::getSingleton().logMessage("scene loaded, loading objects"); 
    4042                // form objects from the scene triangles 
    41                 if (!preprocessor->LoadObjects(visibilitySolution, pvsObjects, preprocessor->mObjects)) 
     43                if (!preprocessor->LoadObjects(visibilitySolution, mPvsObjects, preprocessor->mObjects)) 
    4244                { 
    4345                        Ogre::LogManager::getSingleton().logMessage("objects cannot be loaded"); 
     
    5254 
    5355        std::stringstream d;  
    54         d << "successfully loaded " << pvsObjects.size() << " objects from " << preprocessor->mObjects.size() << " preprocessor objects"; 
     56        d << "successfully loaded " << mPvsObjects.size() << " objects from " << preprocessor->mObjects.size() << " preprocessor objects"; 
    5557 
    5658        Ogre::LogManager::getSingleton().logMessage(d.str()); 
    5759 
    58         GtpVisibilityPreprocessor::ObjectContainer::const_iterator oit, oit_end = pvsObjects.end(); 
     60        GtpVisibilityPreprocessor::ObjectContainer::const_iterator oit, oit_end = mPvsObjects.end(); 
    5961 
    6062        int i = 0; 
    61         for (oit = pvsObjects.begin(); oit != oit_end; ++ oit, ++ i) 
     63        for (oit = mPvsObjects.begin(); oit != oit_end; ++ oit, ++ i) 
    6264        { 
    63                 Ogre::LogManager::getSingleton().logMessage("r"); 
     65                if (i % 5000 == 4999) 
     66                { 
     67                        d << i << " objects created" << endl; 
     68                } 
     69         
    6470                const Ogre::String entname = "Object" + Ogre::StringConverter::toString(i); 
    6571 
    66                 Ogre::ManualObject *ent = CreateEntity(entname, *oit); 
     72#if 0 
     73                Ogre::ManualObject *ent = CreateManualObject(entname, *oit); 
     74#else 
     75                Ogre::Entity *ent = CreateEntity(entname, *oit); 
     76#endif 
    6777 
    6878                const Ogre::String nodeName = entname + "Node"; 
     
    7080                node->attachObject(ent); 
    7181 
    72                 if (i > 100) 
    73                         break; 
     82                // problems for too many objects (= vbo)? 
     83                //if (i > 30000)break; 
    7484        } 
    7585 
     
    8999        std::string entityName = name + "Entity"; 
    90100 
    91 GtpVisibilityPreprocessor::BvhLeaf *bvhObj =  
     101        GtpVisibilityPreprocessor::BvhLeaf *bvhObj =  
    92102                static_cast<GtpVisibilityPreprocessor::BvhLeaf *>(object); 
     103 
    93104        const int vertexCount = (int)bvhObj->mObjects.size() * 3; 
    94105 
    95106        ManualObject* manual = mSceneManager->createManualObject(entityName); 
    96         manual->begin("BaseWhiteNoLighting", RenderOperation::OT_LINE_STRIP); 
     107        manual->begin("BaseWhite", RenderOperation::OT_TRIANGLE_LIST); 
    97108         
     109        const float red = GtpVisibilityPreprocessor::Random(1.0f); 
     110        const float green = GtpVisibilityPreprocessor::Random(1.0f); 
     111        const float blue = GtpVisibilityPreprocessor::Random(1.0f); 
     112 
    98113        // create vertices 
    99          
    100         GtpVisibilityPreprocessor::ObjectContainer::const_iterator oit, oit_end = bvhObj->mObjects.end(); 
     114        GtpVisibilityPreprocessor::ObjectContainer::const_iterator oit,  
     115                oit_end = bvhObj->mObjects.end(); 
    101116         
    102117        for (oit = bvhObj->mObjects.begin(); oit != oit_end; ++ oit) 
     
    110125                { 
    111126                        const GtpVisibilityPreprocessor::Vector3 vtx = tri.mVertices[i]; 
     127                        const GtpVisibilityPreprocessor::Vector3 n = tri.GetNormal(); 
     128 
    112129                        manual->position(vtx.x, vtx.y, vtx.z); 
    113                         manual->colour(1.0f, 0.0f, 0.0f); 
     130                        manual->normal(n.x, n.y, n.z); 
     131                        //manual->colour(red, green, blue); 
    114132                } 
    115133        } 
    116134 
     135        if (0) 
    117136        for (int i = 0; i < vertexCount; ++ i) 
    118137        { 
    119138                manual->index(i); 
    120139        } 
     140 
     141        manual->end(); 
    121142 
    122143        return manual; 
     
    137158        std::string entityName = name + "Entity"; 
    138159 
    139         MeshPtr mesh = MeshManager::getSingleton().createManual(meshName, "Custom"); 
    140         SubMesh* submesh = mesh->createSubMesh(); 
     160        ObjManualMeshLoader *loader = new ObjManualMeshLoader(bvhObj); 
    141161 
    142         const int vertexCount = (int)bvhObj->mObjects.size() * 3; 
    143  
    144         // We must create the vertex data, indicating how many vertices there will be 
    145         submesh->useSharedVertices = false; 
    146         submesh->vertexData = new VertexData(); 
    147         submesh->vertexData->vertexStart = 0; 
    148         submesh->vertexData->vertexCount = vertexCount; 
    149  
    150         std::stringstream d; d << "objects: " << bvhObj->mObjects.size() << " vtx: " << submesh->vertexData->vertexCount << endl; 
    151         Ogre::LogManager::getSingleton().logMessage(d.str()); 
    152  
    153         static const unsigned short source = 0; 
    154         size_t offset = 0; 
    155  
    156         VertexDeclaration* declaration = HardwareBufferManager::getSingleton().createVertexDeclaration(); 
    157  
    158         offset += declaration->addElement(source, offset, VET_FLOAT3, VES_POSITION).getSize(); 
    159         //offset += declaration->addElement(source, offset, VET_FLOAT3,VES_NORMAL).getSize(); 
    160         //offset += declaration->addElement(source, offset, VET_FLOAT2,VES_TEXTURE_COORDINATES).getSize(); 
    161  
    162  
    163         int numVertices = 0; 
    164  
    165         HardwareVertexBufferSharedPtr vbuffer = HardwareBufferManager::getSingleton(). 
    166                 createVertexBuffer(declaration->getVertexSize(source), 
    167                                                    submesh->vertexData->vertexCount, 
    168                                                    HardwareBuffer::HBU_STATIC_WRITE_ONLY); 
    169  
    170     // No we get access to the buffer to fill it.  During so we record the bounding box. 
    171         AxisAlignedBox aabox; 
    172  
    173         float* vdata = static_cast<float*>(vbuffer->lock(HardwareBuffer::HBL_DISCARD)); 
    174  
    175         GtpVisibilityPreprocessor::ObjectContainer::const_iterator oit, oit_end = bvhObj->mObjects.end(); 
    176  
    177         for (oit = bvhObj->mObjects.begin(); oit != oit_end; ++ oit) 
    178         { 
    179                 GtpVisibilityPreprocessor::TriangleIntersectable *tObj =  
    180                         static_cast<GtpVisibilityPreprocessor::TriangleIntersectable *>(*oit); 
    181                  
    182                 GtpVisibilityPreprocessor::Triangle3 tri = tObj->GetItem(); 
    183  
    184                 for (int i = 0; i < 3; ++ i) 
    185                 { 
    186                         Vector3 vtx = Vector3(tri.mVertices[i]); 
    187  
    188                         *vdata ++ = vtx.x; 
    189                         *vdata ++ = vtx.y; 
    190                         *vdata ++ = vtx.z; 
    191  
    192                         //std::stringstream d; d << vtx; 
    193                         //Ogre::LogManager::getSingleton().logMessage(d.str()); 
    194                         aabox.merge(vtx); 
    195                 } 
    196         } 
    197         //Ogre::LogManager::getSingleton().logMessage("***"); 
    198         vbuffer->unlock(); 
    199          
    200         /*Ogre::RenderOperation rop; 
    201         submesh->_getRenderOperation(rop); 
    202         rop.useIndexes = false; 
    203 */ 
    204         ////// 
    205         //-- Creates the index data 
    206  
    207     submesh->vertexData->vertexBufferBinding->setBinding(source, vbuffer); 
    208  
    209         submesh->indexData->indexStart = 0; 
    210         // we use an index for every vertex 
    211         submesh->indexData->indexCount = vertexCount; 
    212         submesh->indexData->indexBuffer = 
    213             HardwareBufferManager::getSingleton(). 
    214                         createIndexBuffer(HardwareIndexBuffer::IT_16BIT, 
    215                                                           submesh->indexData->indexCount, 
    216                                                           HardwareBuffer::HBU_STATIC_WRITE_ONLY); 
    217         submesh->operationType = RenderOperation::OT_LINE_STRIP; 
    218         //uint16* idata = static_cast<uint16*>(submesh->indexData->indexBuffer->lock(HardwareBuffer::HBL_DISCARD)); 
    219     unsigned short* idata = static_cast<unsigned short*>(submesh->indexData->indexBuffer->lock(HardwareBuffer::HBL_DISCARD)); 
    220  
    221         for (int j = 0; j < vertexCount; ++ j) 
    222     { 
    223                 *idata = j; 
    224                 ++ idata; 
    225     } 
    226      
    227         submesh->indexData->indexBuffer->unlock(); 
    228  
    229         submesh->setMaterialName("BaseWhiteNoLighting");  
    230  
    231         // We must indicate the bounding box 
    232         mesh->_setBounds(aabox);  
    233         mesh->_setBoundingSphereRadius((aabox.getMaximum() - aabox.getMinimum()).length() / 2.0);  
    234         mesh->load(); 
    235         mesh->touch(); 
     162        Mesh* pMesh = MeshManager::getSingleton().createManual(meshName, "ObjGroup", loader).getPointer();  
     163        pMesh->load();  
    236164 
    237165        // Create an entity with the mesh 
    238166        entity = mSceneManager->createEntity(entityName, meshName); 
    239167 
    240         //entity->setRenderQueueGroup(Ogre::RENDER_QUEUE_MAIN); 
     168        return entity; 
     169} 
    241170 
    242         return entity; 
    243 #endif 
    244 } 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/ObjReader/src/ObjReader.vcproj

    r2122 r2123  
    2020                                Name="VCCLCompilerTool" 
    2121                                Optimization="0" 
    22                                 AdditionalIncludeDirectories="&quot;$(OGRE_PATH)\Dependencies\include\CEGUI&quot;;&quot;$(OGRE_PATH)\Samples\Common\CEGUIRenderer\include&quot;;&quot;$(OGRE_PATH)\OgreMain\include&quot;;&quot;$(OGRE_PATH)\Dependencies\include&quot;;&quot;$(OGRE_PATH)\Samples\Common\include&quot;;..\include" 
     22                                AdditionalIncludeDirectories="&quot;$(OGRE_PATH)\Dependencies\include\CEGUI&quot;;&quot;$(OGRE_PATH)\Samples\Common\CEGUIRenderer\include&quot;;&quot;$(OGRE_PATH)\OgreMain\include&quot;;&quot;$(OGRE_PATH)\Dependencies\include&quot;;&quot;$(OGRE_PATH)\Samples\Common\include&quot;;..\include;..\..\..\Preprocessing\src" 
    2323                                PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OBJREADER_EXPORTS;GTP_VISIBILITY_MODIFIED_OGRE" 
    2424                                MinimalRebuild="TRUE" 
    2525                                BasicRuntimeChecks="3" 
    26                                 RuntimeLibrary="1" 
    27                                 UsePrecompiledHeader="0" 
    28                                 WarningLevel="3" 
    29                                 Detect64BitPortabilityProblems="TRUE" 
    30                                 DebugInformationFormat="3"/> 
    31                         <Tool 
    32                                 Name="VCCustomBuildTool"/> 
    33                         <Tool 
    34                                 Name="VCLinkerTool" 
    35                                 AdditionalDependencies="OgreMain_d.lib CEGUIBase_d.lib OgreGUIRenderer_d.lib" 
    36                                 OutputFile="$(OutDir)/ObjReader.dll" 
    37                                 LinkIncremental="1" 
    38                                 AdditionalLibraryDirectories="&quot;$(OGRE_PATH)\OgreMain\lib\$(ConfigurationName)&quot;;&quot;$(OGRE_PATH)\Samples\Common\CEGUIRenderer\lib&quot;;&quot;..\..\GtpVisibility\lib\$(ConfigurationName)&quot;;&quot;..\..\lib\$(ConfigurationName)&quot;;&quot;..\lib\$(ConfigurationName)&quot;;&quot;$(OGRE_PATH)\Dependencies\lib\$(ConfigurationName)&quot;" 
     26                                RuntimeLibrary="3" 
     27                                UsePrecompiledHeader="0" 
     28                                WarningLevel="3" 
     29                                Detect64BitPortabilityProblems="TRUE" 
     30                                DebugInformationFormat="3"/> 
     31                        <Tool 
     32                                Name="VCCustomBuildTool"/> 
     33                        <Tool 
     34                                Name="VCLinkerTool" 
     35                                AdditionalDependencies="OgreMain_d.lib CEGUIBase_d.lib OgreGUIRenderer_d.lib Preprocessor.lib xerces-c_2.lib zdll.lib zziplibd.lib" 
     36                                OutputFile="$(OutDir)/ObjReader.dll" 
     37                                LinkIncremental="1" 
     38                                AdditionalLibraryDirectories="&quot;$(OGRE_PATH)\OgreMain\lib\$(ConfigurationName)&quot;;&quot;$(OGRE_PATH)\Samples\Common\CEGUIRenderer\lib&quot;;&quot;..\..\GtpVisibility\lib\$(ConfigurationName)&quot;;&quot;..\..\lib\$(ConfigurationName)&quot;;&quot;..\lib\$(ConfigurationName)&quot;;&quot;$(OGRE_PATH)\Dependencies\lib\$(ConfigurationName)&quot;;&quot;..\..\..\Preprocessing\lib\$(ConfigurationName)&quot;;..\..\..\..\..\..\..\NonGTP\Xerces\xercesc\lib" 
    3939                                GenerateDebugInformation="TRUE" 
    4040                                ProgramDatabaseFile="$(OutDir)/$(ProjectName).pdb" 
     
    7373                                Name="VCCLCompilerTool" 
    7474                                AdditionalIncludeDirectories="&quot;$(OGRE_PATH)\OgreMain\include&quot;;&quot;$(OGRE_PATH)\Dependencies\include&quot;;&quot;$(OGRE_PATH)\Samples\Common\include&quot;;..\include;..\..\..\Preprocessing\src" 
    75                                 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OBJREADER_EXPORTS;GTP_VISIBILITY_MODIFIED_OGRE;GAMETOOLS_ILLUMINATION_MODULE1;USE_VERBOSE_PVS" 
     75                                PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OBJREADER_EXPORTS;GTP_VISIBILITY_MODIFIED_OGRE;GAMETOOLS_ILLUMINATION_MODULE" 
    7676                                RuntimeLibrary="2" 
    7777                                UsePrecompiledHeader="0" 
     
    339339                        UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"> 
    340340                        <File 
     341                                RelativePath=".\ObjManualMeshLoader.cpp"> 
     342                        </File> 
     343                        <File 
    341344                                RelativePath="..\src\ObjReader.cpp"> 
    342345                        </File> 
    343                         <Filter 
    344                                 Name="Header Files" 
    345                                 Filter="h;hpp;hxx;hm;inl;inc;xsd" 
    346                                 UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"> 
    347                                 <File 
    348                                         RelativePath="..\include\ObjReader.h"> 
    349                                 </File> 
    350                         </Filter> 
     346                </Filter> 
     347                <Filter 
     348                        Name="Header Files" 
     349                        Filter="h;hpp;hxx;hm;inl;inc;xsd" 
     350                        UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"> 
     351                        <File 
     352                                RelativePath="..\include\ObjManualMeshLoader.h"> 
     353                        </File> 
     354                        <File 
     355                                RelativePath="..\include\ObjReader.h"> 
     356                        </File> 
    351357                </Filter> 
    352358        </Files> 
Note: See TracChangeset for help on using the changeset viewer.