本文整理汇总了C++中Box3::diagonal方法的典型用法代码示例。如果您正苦于以下问题:C++ Box3::diagonal方法的具体用法?C++ Box3::diagonal怎么用?C++ Box3::diagonal使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Box3
的用法示例。
在下文中一共展示了Box3::diagonal方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: initializeGL
/// @overload QGLWidget
void initializeGL(){
printf("OpenGL %d.%d\n",this->format().majorVersion(),this->format().minorVersion());
///--- Background
glClearColor(1.0, 1.0, 1.0, 1.0);
///--- Viewport (simple, for unresizeable window)
glViewport(0, 0, this->width(), this->height());
///--- Setup opengl flags
glEnable(GL_DEPTH_TEST);
///--- Create the triangle index buffer
{
assert(mesh.is_triangle_mesh());
triangles.clear();
for(auto f: mesh.faces())
for(auto v: mesh.vertices(f))
triangles.push_back(v.idx());
}
///--- Create an array object to store properties
{
bool success = vao.create();
assert(success);
vao.bind();
}
///--- Load/compile shaders
{
bool vok = program.addShaderFromSourceFile(QGLShader::Vertex, ":/vshader.glsl");
bool fok = program.addShaderFromSourceFile(QGLShader::Fragment, ":/fshader.glsl");
bool lok = program.link ();
assert(lok && vok && fok);
bool success = program.bind();
assert(success);
}
///--- Create vertex buffer/attributes "position"
{
auto vpoints = mesh.get_vertex_property<Vec3>("v:point");
bool success = vertexbuffer.create();
assert(success);
vertexbuffer.setUsagePattern( QGLBuffer::StaticDraw );
success = vertexbuffer.bind();
assert(success);
vertexbuffer.allocate( vpoints.data(), sizeof(Vec3) * mesh.n_vertices() );
program.setAttributeBuffer("vpoint", GL_FLOAT, 0, 3 );
program.enableAttributeArray("vpoint");
}
///--- Create vertex buffer/attributes "normal"
{
auto vnormal = mesh.get_vertex_property<Vec3>("v:normal");
bool success = normalbuffer.create();
assert(success);
normalbuffer.setUsagePattern( QGLBuffer::StaticDraw );
success = normalbuffer.bind();
assert(success);
normalbuffer.allocate( vnormal.data(), sizeof(Vec3) * mesh.n_vertices() );
program.setAttributeBuffer("vnormal", GL_FLOAT, 0, 3 );
program.enableAttributeArray("vnormal");
}
///--- Create the index "triangle" buffer
{
bool success = indexbuffer.create();
assert(success);
indexbuffer.setUsagePattern( QGLBuffer::StaticDraw );
success = indexbuffer.bind();
assert(success);
indexbuffer.allocate(&triangles[0], triangles.size()*sizeof(unsigned int));
}
#ifdef WITH_QGLVIEWER
///--- Setup camera
{
Box3 bbox = OpenGP::bounding_box(mesh);
camera()->setType(qglviewer::Camera::ORTHOGRAPHIC);
camera()->setSceneCenter(qglviewer::tr(bbox.center()));
camera()->setSceneRadius(bbox.diagonal().norm()/2.0);
camera()->showEntireScene();
}
#endif
///--- Unbind to avoid pollution
vao.release();
program.release();
}