Esempio n. 1
0
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]);
        }
    }
}
Esempio n. 2
0
         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 );
            }
         }