//-------------------------------------------------------------- void ofVbo::setMesh(const ofMesh & mesh, int usage, bool useColors, bool useTextures, bool useNormals){ if(mesh.getVertices().empty()){ ofLogWarning("ofVbo") << "setMesh(): ignoring mesh with no vertices"; return; } setVertexData(mesh.getVerticesPointer(),mesh.getNumVertices(),usage); if(mesh.hasColors() && useColors){ setColorData(mesh.getColorsPointer(),mesh.getNumColors(),usage); enableColors(); }else{ disableColors(); } if(mesh.hasNormals() && useNormals){ setNormalData(mesh.getNormalsPointer(),mesh.getNumNormals(),usage); enableNormals(); }else{ disableNormals(); } if(mesh.hasTexCoords() && useTextures){ setTexCoordData(mesh.getTexCoordsPointer(),mesh.getNumTexCoords(),usage); enableTexCoords(); }else{ disableTexCoords(); } if(mesh.hasIndices()){ setIndexData(mesh.getIndexPointer(), mesh.getNumIndices(), usage); enableIndices(); }else{ disableIndices(); } }
//-------------------------------------------------------------- void ofVbo::setTexCoordData(const float * texCoord0x, int total, int usage, int stride) { if(texCoordId==0) { glGenBuffers(1, &(texCoordId)); retain(texCoordId); enableTexCoords(); } texUsage = usage; texCoordStride = stride==0?2*sizeof(float):stride; glBindBuffer(GL_ARRAY_BUFFER, texCoordId); glBufferData(GL_ARRAY_BUFFER, total * stride, texCoord0x, usage); glBindBuffer(GL_ARRAY_BUFFER, 0); }
//-------------------------------------------------------------- void ofVbo::setTexCoordBuffer(ofBufferObject & buffer, int stride, int offset){ texCoordAttribute.setBuffer(buffer, 2, stride, offset); enableTexCoords(); }
//-------------------------------------------------------------- void ofVbo::setTexCoordData(const float * texCoord0x, int total, int usage, int stride) { texCoordAttribute.setData(texCoord0x, 2, total, usage, stride); enableTexCoords(); }