本文整理汇总了C++中QOpenGLFunctions_2_1::glLoadName方法的典型用法代码示例。如果您正苦于以下问题:C++ QOpenGLFunctions_2_1::glLoadName方法的具体用法?C++ QOpenGLFunctions_2_1::glLoadName怎么用?C++ QOpenGLFunctions_2_1::glLoadName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QOpenGLFunctions_2_1
的用法示例。
在下文中一共展示了QOpenGLFunctions_2_1::glLoadName方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawUnitArrow
void DrawUnitArrow(int ID, const CCVector3& start, const CCVector3& direction, PointCoordinateType scale, const ccColor::Rgb& col, CC_DRAW_CONTEXT& context)
{
//get the set of OpenGL functions (version 2.1)
QOpenGLFunctions_2_1 *glFunc = context.glFunctions<QOpenGLFunctions_2_1>();
assert( glFunc != nullptr );
if ( glFunc == nullptr )
return;
if (ID > 0)
{
glFunc->glLoadName(ID);
}
glFunc->glMatrixMode(GL_MODELVIEW);
glFunc->glPushMatrix();
ccGL::Translate(glFunc, start.x, start.y, start.z);
ccGL::Scale(glFunc, scale, scale, scale);
//we compute scalar prod between the two vectors
CCVector3 Z(0.0,0.0,1.0);
PointCoordinateType ps = Z.dot(direction);
if (ps < 1)
{
CCVector3 axis(1,0,0);
PointCoordinateType angle_deg = static_cast<PointCoordinateType>(180.0);
if (ps > -1)
{
//we deduce angle from scalar prod
angle_deg = acos(ps) * static_cast<PointCoordinateType>(CC_RAD_TO_DEG);
//we compute rotation axis with scalar prod
axis = Z.cross(direction);
}
ccGL::Rotate(glFunc,angle_deg, axis.x, axis.y, axis.z);
}
if (!c_arrowShaft)
c_arrowShaft = QSharedPointer<ccCylinder>(new ccCylinder(0.15f,0.6f,0,"ArrowShaft",12));
if (!c_arrowHead)
c_arrowHead = QSharedPointer<ccCone>(new ccCone(0.3f,0,0.4f,0,0,0,"ArrowHead",24));
glFunc->glTranslatef(0,0,0.3f);
c_arrowShaft->setTempColor(col);
c_arrowShaft->draw(context);
glFunc->glTranslatef(0,0,0.3f+0.2f);
c_arrowHead->setTempColor(col);
c_arrowHead->draw(context);
glFunc->glPopMatrix();
}
示例2: DrawUnitTorus
static void DrawUnitTorus(int ID, const CCVector3& center, const CCVector3& direction, PointCoordinateType scale, const ccColor::Rgb& col, CC_DRAW_CONTEXT& context)
{
//get the set of OpenGL functions (version 2.1)
QOpenGLFunctions_2_1 *glFunc = context.glFunctions<QOpenGLFunctions_2_1>();
assert( glFunc != nullptr );
if ( glFunc == nullptr )
return;
if (ID > 0)
glFunc->glLoadName(ID);
glFunc->glMatrixMode(GL_MODELVIEW);
glFunc->glPushMatrix();
ccGL::Translate(glFunc, center.x, center.y, center.z);
ccGL::Scale(glFunc, scale, scale, scale);
//we compute scalar prod between the two vectors
CCVector3 Z(0,0,1);
PointCoordinateType ps = Z.dot(direction);
if (ps < 1)
{
CCVector3 axis(1,0,0);
PointCoordinateType angle_deg = 180;
if (ps > -1)
{
//we deduce angle from scalar prod
angle_deg = acos(ps) * static_cast<PointCoordinateType>(CC_RAD_TO_DEG);
//we compute rotation axis with scalar prod
axis = Z.cross(direction);
}
ccGL::Rotate(glFunc, angle_deg, axis.x, axis.y, axis.z);
}
if (!c_torus)
c_torus = QSharedPointer<ccTorus>(new ccTorus(0.2f, 0.4f, 2.0*M_PI, false, 0, 0, "Torus", 12));
glFunc->glTranslatef(0,0,0.3f);
c_torus->setTempColor(col);
c_torus->draw(context);
glFunc->glPopMatrix();
}
示例3: DrawUnitCross
static void DrawUnitCross(int ID, const CCVector3& center, PointCoordinateType scale, const ccColor::Rgb& col, CC_DRAW_CONTEXT& context)
{
//get the set of OpenGL functions (version 2.1)
QOpenGLFunctions_2_1 *glFunc = context.glFunctions<QOpenGLFunctions_2_1>();
assert(glFunc != nullptr);
if (glFunc == nullptr)
return;
if (ID > 0)
glFunc->glLoadName(ID);
scale /= 2;
DrawUnitArrow(0, center, CCVector3(-1, 0, 0), scale, col, context);
DrawUnitArrow(0, center, CCVector3( 1, 0, 0), scale, col, context);
DrawUnitArrow(0, center, CCVector3( 0,-1, 0), scale, col, context);
DrawUnitArrow(0, center, CCVector3( 0, 1, 0), scale, col, context);
DrawUnitArrow(0, center, CCVector3( 0, 0,-1), scale, col, context);
DrawUnitArrow(0, center, CCVector3( 0, 0, 1), scale, col, context);
}