TEST(ShaderLib,instance) { auto shader = ngl::ShaderLib::instance(); EXPECT_TRUE(shader !=nullptr); // we have Colour, Text, Diffuse and Checker (but vert and frag) so 8 shaders in total EXPECT_TRUE(shader->getNumShaders() ==8); }
void Geometry::write(IResource* resource) { ChunkHeader geometryHeader( BA_GEOMETRY, sizeof( Chunk ) ); geometryHeader.write( resource ); Chunk chunk; chunk.id = (auid)( this ); memset( chunk.name, 0, engine::maxNameLength ); if( _name.length() > engine::maxNameLength ) { strncpy( chunk.name, _name.c_str(), engine::maxNameLength - 1 ); } else { strcpy( chunk.name, _name.c_str() ); } chunk.numShaders = getNumShaders(); chunk.numVertices = getNumVertices(); chunk.numUVSets = getNumUVSets(); chunk.numPrelights = getNumPrelights(); chunk.numTriangles = getNumTriangles(); chunk.sharedShaders = _sharedShaders; if( _ocTreeRoot ) { chunk.numOcTreeSectors = _ocTreeRoot->getOcTreeSize(); } else { chunk.numOcTreeSectors = 0; } chunk.hasEffect = ( _effect != NULL ); fwrite( &chunk, sizeof( Chunk ), 1, resource->getFile() ); // write shaders if( !_sharedShaders ) for( int i=0; i<getNumShaders(); i++ ) { _shaders[i]->write( resource ); } // write vertices ChunkHeader verticesHeader( BA_BINARY, sizeof(Vector) * getNumVertices() ); verticesHeader.write( resource ); fwrite( getVertices(), verticesHeader.size, 1, resource->getFile() ); // write normals ChunkHeader normalsHeader( BA_BINARY, sizeof(Vector) * getNumVertices() ); normalsHeader.write( resource ); fwrite( getNormals(), normalsHeader.size, 1, resource->getFile() ); // write UV-sets int i; for( i=0; i<getNumUVSets(); i++ ) { ChunkHeader uvsHeader( BA_BINARY, sizeof(Flector) * getNumVertices() ); uvsHeader.write( resource ); fwrite( getUVSet(i), uvsHeader.size, 1, resource->getFile() ); } // write prelights for( i=0; i< getNumPrelights(); i++ ) { ChunkHeader prelightsHeader( BA_BINARY, sizeof(Color) * getNumVertices() ); prelightsHeader.write( resource ); fwrite( getPrelights(i), prelightsHeader.size, 1, resource->getFile() ); } // write triangles ChunkHeader trianglesHeader( BA_BINARY, sizeof(Triangle) * getNumTriangles() ); trianglesHeader.write( resource ); fwrite( getTriangles(), trianglesHeader.size, 1, resource->getFile() ); // write shaders if( !_sharedShaders ) { ChunkHeader shadersHeader( BA_BINARY, sizeof(auid) * getNumShaders() ); shadersHeader.write( resource ); fwrite( _shaders, shadersHeader.size, 1, resource->getFile() ); } // write octree if( _ocTreeRoot ) { _ocTreeRoot->write( resource ); } // write effect if( chunk.hasEffect ) { reinterpret_cast<Effect*>( _effect )->write( resource ); } }