bool Model::loadSTLFromStream(std::fstream &file, SharedArray vertexArray, SharedArray normalsArray) { int bufferSize = 80; char buffer[bufferSize]; if (file.readsome(buffer, bufferSize * sizeof(char)) != bufferSize) { return false; } unsigned int numberOfTriangles = 0; if (file.readsome((char *)&numberOfTriangles, sizeof(unsigned int)) != sizeof(unsigned int)) { return false; } vertexArray->resize(numberOfTriangles*9); normalsArray->resize(numberOfTriangles*3); STLTriangle triangle; for(unsigned int i = 0; i < numberOfTriangles; i++){ if(file.readsome((char *)&triangle.normal, sizeof(float)*3) != sizeof(float)*3){ return false; } if(file.readsome((char *)&triangle.vertex, sizeof(float)*9) != sizeof(float)*9){ return false; } if(file.readsome((char *)&triangle.attribute, sizeof(unsigned short)) != sizeof(unsigned short)){ return false; } for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { vertexArray->push_back(triangle.vertex[i][j]); } normalsArray->push_back(triangle.normal[i]); } } }
void CreateSharedBuffers( const int bytesPerBuffer ) { // setup shared memory buffers for ( int i = 0; i < constants::NUM_BUFFERS; ++i ) { // create unique buffer file names std::string bufferName = constants::BUFFER_BASE_NAME + boost::lexical_cast<string> ( i ) + ".buf"; // create shared buffers SharedBufferPtr bufPtr ( new SharedMemory ( bufferName, bytesPerBuffer, SHM::CreateShared, 0666 ) ); // store buffer in a vector array_.push_back ( bufPtr ); } }