本文整理汇总了C++中SbViewVolume::getWidth方法的典型用法代码示例。如果您正苦于以下问题:C++ SbViewVolume::getWidth方法的具体用法?C++ SbViewVolume::getWidth怎么用?C++ SbViewVolume::getWidth使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SbViewVolume
的用法示例。
在下文中一共展示了SbViewVolume::getWidth方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void
SoXipMarkerSet::GLRender( SoGLRenderAction* action )
{
if (mCoord && mFaceSet && mScale && mTranslation && mRotation)
{
float pointSize = SoPointSizeElement::get(action->getState());
SbViewportRegion vp = SoViewportRegionElement::get(action->getState());
SbViewVolume vVol = SoViewVolumeElement::get(action->getState());
// world to pixel scale
float scaleFactorY = pointSize * vVol.getHeight() / (float) vp.getViewportSizePixels()[1];
float scaleFactorX = pointSize * vVol.getWidth() / (float) vp.getViewportSizePixels()[0];
mScale->scaleFactor.setValue(0.5f * scaleFactorX, 0.5f * scaleFactorY, 1);
// world to screen rotation
SbMatrix affine, proj;
vVol.getMatrices(affine, proj);
SbVec3f t, s;
SbRotation rot, so;
affine.inverse().getTransform(t, rot, s, so);
mRotation->rotation.setValue(rot);
// number of coordinates
const SoCoordinateElement *ce = (const SoCoordinateElement *) SoCoordinateElement::getInstance(action->getState());
int numPts = 0;
if (ce)
{
numPts = ce->getNum();
}
SbXipMarkerShapes::getVertices(marker.getValue(), mCoord->point);
SbXipMarkerShapes::getNumVertices(marker.getValue(), mFaceSet->numVertices);
for (int i = 0; i < numPts; i++)
{
mTranslation->translation.setValue(ce->get3(i));
action->getState()->push();
action->traverse(mTranslation);
action->traverse(mRotation);
action->traverse(mScale);
action->traverse(mCoord);
action->traverse(mFaceSet);
action->getState()->pop();
}
}
}