int CloudsVisualSystemLaplacianTunnel::loadMesh(ofVbo &vbo, string path) { char* buffer; long size; //cout << "path is " << path << endl; ifstream data( ofToDataPath(path, true).c_str(), ios::in | ios::binary); data.seekg(0, ios::end); size = data.tellg(); data.seekg(0, ios::beg); buffer = new char[size]; data.read(buffer, size); data.close(); unsigned int *ints = (unsigned int *) buffer; int numPts = ints[0]; int numTriangles = ints[1]; float *pts = (float *) (ints+2); for(int i = 0; i < numPts; i++){ ofVec3f p(pts[i*3+0],pts[i*3+1],pts[i*3+2]); center += p; min = ofVec3f(MIN(min.x,p.x), MIN(min.y,p.y), MIN(min.z,p.z)); max = ofVec3f(MAX(max.x,p.x), MAX(max.y,p.y), MAX(max.z,p.z)); } center /= numPts; unsigned int * indices = ints + 2 + numPts*6; //not sure what is enable or disable by default vbo.enableIndices(); vbo.enableNormals(); vbo.disableColors(); vbo.disableTexCoords(); vbo.setVertexData(pts,3,numPts,GL_STATIC_DRAW,sizeof(float)*3); vbo.setNormalData(pts+numPts*3,numPts,GL_STATIC_DRAW,sizeof(float)*3); vbo.setIndexData(indices,numTriangles*3,GL_STATIC_DRAW); //cout << "File " << path << " has " << numTriangles << " triangles " << endl; return numTriangles*3; }
void ofApp::drawRectangle(float x, float y, float w, float h) { static ofVbo vbo; vector<ofVec3f> vertices = { ofVec3f(x, y, 0), ofVec3f(x + w, y, 0), ofVec3f(x + w, y + h, 0) , ofVec3f(x, y + h, 0) }; vector<ofFloatColor> colors(4, ofGetStyle().color); if (!vbo.getIsAllocated()) { vector<ofVec2f> texCoords = { ofVec2f(0, 0), ofVec2f(1, 0), ofVec2f(1, 1), ofVec2f(0, 1) }; vector<ofVec3f> normals(4, ofVec3f(0, 0, 1)); vector<ofIndexType> indices = { 0, 2, 1, 0, 3, 2 }; vbo.setVertexData(&vertices[0].x, 3, vertices.size(), GL_DYNAMIC_DRAW); vbo.setColorData(&colors[0].r, colors.size(), GL_DYNAMIC_DRAW); vbo.setTexCoordData(&texCoords[0].x, texCoords.size(), GL_STATIC_DRAW); vbo.setNormalData(&normals[0].x, normals.size(), GL_STATIC_DRAW); vbo.setIndexData(&indices[0], indices.size(), GL_STATIC_DRAW); } else { vbo.updateVertexData(&vertices[0].x, vertices.size()); vbo.updateColorData(&colors[0].r, colors.size()); } vbo.drawElements(GL_TRIANGLES, vbo.getNumIndices()); }