Changeset 3127 for GTP


Ignore:
Timestamp:
11/14/08 17:22:49 (16 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/App/Demos/Vis/FriendlyCulling
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/VboFormatConverter/VboFormatConverter.cpp

    r3120 r3127  
    1919                delete [] mGeometry[i]->mVertices; 
    2020                delete [] mGeometry[i]->mNormals; 
     21                delete [] mGeometry[i]->mTangents; 
    2122                delete [] mGeometry[i]->mTexcoords; 
    2223 
     
    8384        geom->mVertices = new SimpleVec[numElements]; 
    8485        geom->mNormals = new SimpleVec[numElements]; 
     86        geom->mTangents = new SimpleVec[numElements]; 
    8587        geom->mTexcoords = new Texcoord[numElements]; 
    8688 
     
    105107                geom->mNormals[line] = normal; 
    106108                geom->mTexcoords[line] = tex; 
     109                geom->mTangents[line] = tangent; 
    107110 
    108111                ++ line; 
     
    125128        str.write(reinterpret_cast<char *>(geom->mVertices), sizeof(SimpleVec) * vertexCount); 
    126129        str.write(reinterpret_cast<char *>(geom->mNormals), sizeof(SimpleVec) * vertexCount); 
     130        str.write(reinterpret_cast<char *>(geom->mTangents), sizeof(SimpleVec) * vertexCount); 
    127131 
    128132        int texCoordCount = geom->mTexcoordCount; 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/VboFormatConverter/VboFormatConverter.h

    r3119 r3127  
    3232                SimpleVec *mVertices; 
    3333                SimpleVec *mNormals; 
     34                SimpleVec *mTangents; 
    3435                Texcoord *mTexcoords; 
    3536 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Bvh.cpp

    r3125 r3127  
    15081508        mRoot->mLast = (int)mGeometrySize - 1; 
    15091509 
    1510         cout<<"f: " << mRoot->mFirst<< " l: " <<mRoot->mLast << endl; 
     1510        //cout<<"f: " << mRoot->mFirst<< " l: " <<mRoot->mLast << endl; 
    15111511        // add static root on left subtree 
    15121512        mRoot->mFront = mStaticRoot; 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Geometry.cpp

    r3126 r3127  
    1515#endif 
    1616 
     17using namespace std; 
    1718 
    1819namespace CHCDemoEngine  
     
    6667 
    6768        if (mTexCoords) dataSize += mNumVertices * 2; 
    68          
    6969        if (mTangents) dataSize += mNumVertices * 3; 
    7070 
     
    8282        { 
    8383                for (int i = 0; i < mNumVertices; ++ i) 
    84                         ((Vector3 *)data)[mNumVertices * 3 + i] = mTangents[i]; 
     84                        ((Vector3 *)data)[mNumVertices * 2 + i] = mTangents[i]; 
     85 
     86                for (int i = 0; i < 3; ++ i) 
     87                        cout << ((Vector3 *)data)[mNumVertices * 2 + i] << " "; 
    8588 
    8689                currentPData += mNumVertices * 3; 
     
    129132void Geometry::Render(RenderState *state) 
    130133{ 
     134        if (mHasTangents) 
     135                glEnableClientState(GL_COLOR_ARRAY); 
     136 
    131137        if (state->GetCurrentVboId() != mVboId) 
    132138        { 
    133139                glBindBufferARB(GL_ARRAY_BUFFER_ARB, mVboId); 
    134140                 
    135                 if (mHasTexture) 
    136                         glTexCoordPointer(2, GL_FLOAT, 0, (char *)NULL + 2 * mNumVertices * sizeof(Vector3)); 
     141                int currentPointer; 
    137142 
    138143                glNormalPointer(GL_FLOAT, 0, (char *)NULL + mNumVertices * sizeof(Vector3)); 
     144 
     145                if (mHasTangents) 
     146                { 
     147                        glColorPointer(3, GL_FLOAT, 0, (char *)NULL + mNumVertices * sizeof(Vector3)); 
     148                        currentPointer = mNumVertices * 3 * sizeof(Vector3); 
     149                } 
     150                else 
     151                        currentPointer = mNumVertices * 2 * sizeof(Vector3); 
     152 
     153                if (mHasTexture) 
     154                        glTexCoordPointer(2, GL_FLOAT, 0, (char *)NULL + currentPointer); 
    139155 
    140156                glVertexPointer(3, GL_FLOAT, 0, (char *)NULL);   
    141157 
    142158                state->SetCurrentVboId(mVboId); 
     159 
    143160        } 
    144161 
    145162        // don't render first degenerate index 
    146163        glDrawArrays(GL_TRIANGLES, 0, mNumVertices); 
     164 
     165        if (mHasTangents) 
     166                glDisableClientState(GL_COLOR_ARRAY); 
    147167} 
    148168 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/RenderState.cpp

    r3126 r3127  
    130130                static Technique queryTech = GetQueryTechnique(); 
    131131                SetState(&queryTech); 
     132 
     133                glDisableClientState(GL_NORMAL_ARRAY); 
     134        } 
     135        else 
     136        { 
     137                glEnableClientState(GL_NORMAL_ARRAY); 
    132138        } 
    133139 
     
    219225        { 
    220226                mTexturesEnabled = false; 
    221  
    222                 //if (!tech->GetFragmentProgram()) 
    223                         glDisable(GL_TEXTURE_2D); 
     227                glDisable(GL_TEXTURE_2D); 
    224228 
    225229                glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
     
    229233                mTexturesEnabled = true; 
    230234 
    231                 //if (!tech->GetFragmentProgram()) 
    232                         glEnable(GL_TEXTURE_2D); 
    233  
     235                glEnable(GL_TEXTURE_2D); 
    234236                glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
    235237        } 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ResourceManager.cpp

    r3126 r3127  
    3939ResourceManager::ResourceManager() 
    4040{  
     41        mUseNormalMapping = false; 
    4142} 
    4243 
     
    289290        static ShaderProgram *sDefaultVertexProgramMrt = ShaderManager::GetSingleton()->GetShaderProgram("defaultVertexMrt"); 
    290291 
     292        static ShaderProgram *sNormalMappingVertexProgramMrt = ShaderManager::GetSingleton()->GetShaderProgram("normalMappingVertexMrt"); 
     293        static ShaderProgram *sNormalMappingFragmentProgramMrt = ShaderManager::GetSingleton()->GetShaderProgram("normalMappingFragmentMrt"); 
     294 
    291295        Technique *deferred = new Technique(*tech); 
    292296 
     
    343347        str.read(reinterpret_cast<char *>(normals), sizeof(Vector3) * vertexCount); 
    344348 
     349        Vector3 *tangents; 
     350 
     351        if (mUseNormalMapping) 
     352        { 
     353                tangents = new Vector3[vertexCount]; 
     354                str.read(reinterpret_cast<char *>(tangents), sizeof(Vector3) * vertexCount); 
     355        } 
     356        else 
     357        { 
     358                tangents = NULL; 
     359        } 
     360 
    345361        int texCoordCount; 
    346362        str.read(reinterpret_cast<char *>(&texCoordCount), sizeof(int)); 
     
    356372        } 
    357373 
    358         return new Geometry(vertices, normals, texcoords, vertexCount, true, NULL); 
    359         //return new Geometry(vertices, normals, texcoords, vertexCount, false); 
     374        const bool delGeometry = false; 
     375        return new Geometry(vertices, normals, texcoords, vertexCount, delGeometry, tangents); 
    360376} 
    361377 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ResourceManager.h

    r3070 r3127  
    5858 
    5959 
     60        bool mUseNormalMapping; 
     61 
    6062protected: 
    6163         
     
    7678        Geometry *LoadGeometry(igzstream &str); 
    7779 
     80 
    7881        std::map<int, Texture *> mTextureTable; 
    7982        std::map<int, Material *> mMaterialTable; 
     
    9093        TransformContainer mTrafos; 
    9194        ShapeContainer mShapes; 
    92         //LODContainer mLODs; 
     95         
    9396        /// the scene entities 
    9497        SceneEntityContainer mSceneEntities; 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r3125 r3127  
    471471        //-- load some dynamic stuff 
    472472 
    473         //LoadModel("fisch.dem", dynamicObjects); 
    474         LoadModel("hbuddha.dem", dynamicObjects); 
     473        resourceManager->mUseNormalMapping = true; 
     474        //resourceManager->mUseNormalMapping = false; 
     475 
     476        LoadModel("fisch.dem", dynamicObjects); 
     477         
     478        resourceManager->mUseNormalMapping = false; 
     479        //LoadModel("hbuddha.dem", dynamicObjects); 
    475480        buddha = dynamicObjects.back(); 
    476481         
     
    19962001        } 
    19972002 
     2003 
    19982004        ///////////////// 
    19992005        //-- reset gl renderState before the final visible objects pass 
     
    21152121        const string filename = string(model_path + model); 
    21162122 
     2123        cout << "\nloading model " << filename << endl; 
    21172124        if (resourceManager->Load(filename, entities)) 
    2118                 cout << "model " << filename << " loaded" << endl; 
     2125                cout << "model " << filename << " successfully loaded" << endl; 
    21192126        else 
    21202127        { 
Note: See TracChangeset for help on using the changeset viewer.