const modlogger & modlogger::operator() (const char *fmt, ...) const { va_list ap; va_start (ap, fmt); vfmt (fmt, ap); va_end (ap); return *this; }
const warnobj & warnobj::operator() (const char *fmt, ...) const { va_list ap; va_start (ap, fmt); vfmt (fmt, ap); va_end (ap); return *this; }
const traceobj & traceobj::operator() (const int threshold, const char *fmt, ...) { doprint = current_level >= threshold; if (doprint) { init (); va_list ap; va_start (ap, fmt); vfmt (fmt, ap); va_end (ap); } return *this; }
glmesh::Mesh* Map::buildMesh(){ //Create vertex format glmesh::AttributeList attribs; //position attribs.push_back(glmesh::AttribDesc(0, 4, glmesh::VDT_SINGLE_FLOAT, glmesh::ADT_FLOAT)); //color attribs.push_back(glmesh::AttribDesc(1, 4, glmesh::VDT_UNSIGN_BYTE, glmesh::ADT_NORM_FLOAT)); //vertex format from attributes glmesh::VertexFormat vfmt(attribs); //now use of CpuDateWriter to create our buffer glmesh::CpuDataWriter writer(vfmt, 4); { writer.Attrib(0.0f, 0.0f, 0.0f, 1.0f); writer.Attrib<GLubyte>(12, 0, 12, 255); writer.Attrib(0.5f, 0.0f, 0.0f, 1.0f); writer.Attrib<GLubyte>(13, 128, 64, 255); writer.Attrib(0.0f, 0.5f, 0.0f, 1.0f); writer.Attrib<GLubyte>(32, 0, 45, 255); writer.Attrib(0.5f, 0.5f, 0.0f, 1.0f); writer.Attrib<GLubyte>(0, 0, 255, 255); } GLuint buffer = writer.TransferToBuffer(gl::ARRAY_BUFFER, gl::STATIC_DRAW); //Create a mesh variant VAOs GLuint vao; gl::GenVertexArrays(1, &vao); gl::BindBuffer(gl::ARRAY_BUFFER, buffer); gl::BindVertexArray(vao); vfmt.BindAttributes(0); gl::BindBuffer(gl::ARRAY_BUFFER, 0); //shader variance glmesh::MeshVariantMap variants; variants["all"] = vao; glmesh::RenderCmdList cmd_list; cmd_list.DrawArrays(gl::TRIANGLE_STRIP, 0, 4); std::vector<GLuint> buffers(1, buffer); return new glmesh::Mesh(buffers, vao, cmd_list, variants); }