本文整理匯總了C++中Billboard::SetMaterial方法的典型用法代碼示例。如果您正苦於以下問題:C++ Billboard::SetMaterial方法的具體用法?C++ Billboard::SetMaterial怎麽用?C++ Billboard::SetMaterial使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Billboard
的用法示例。
在下文中一共展示了Billboard::SetMaterial方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C++代碼示例。
示例1: lightFinder
NavLights::NavLights(SceneGraph::Model *model, float period)
: m_time(0.f)
, m_period(period)
, m_enabled(false)
{
assert(g_initted);
Graphics::Renderer *renderer = model->GetRenderer();
using SceneGraph::Node;
using SceneGraph::MatrixTransform;
using SceneGraph::Billboard;
//This will find all matrix transforms meant for navlights.
SceneGraph::FindNodeVisitor lightFinder(SceneGraph::FindNodeVisitor::MATCH_NAME_STARTSWITH, "navlight_");
model->GetRoot()->Accept(lightFinder);
const std::vector<Node*> &results = lightFinder.GetResults();
//attach light billboards
for (unsigned int i=0; i < results.size(); i++) {
MatrixTransform *mt = dynamic_cast<MatrixTransform*>(results.at(i));
assert(mt);
Billboard *bblight = new Billboard(renderer, matBlue, vector3f(0.f), BILLBOARD_SIZE);
Uint32 group = 0;
Uint8 mask = 0xff; //always on
Uint8 color = NAVLIGHT_BLUE;
if (mt->GetName().substr(9, 3) == "red") {
bblight->SetMaterial(matRed);
mask = 0x0f;
color = NAVLIGHT_RED;
} else if (mt->GetName().substr(9, 5) == "green") {
mask = 0xf0;
color = NAVLIGHT_GREEN;
} else if (mt->GetName().substr(9, 3) == "pad") {
//group by pad number
// due to this problem: http://stackoverflow.com/questions/15825254/why-is-scanfhhu-char-overwriting-other-variables-when-they-are-local
// where MSVC is still using a C89 compiler the format identifer %hhu is not recognised. Therefore I've switched to Uint32 for group.
PiVerify(1 == sscanf(mt->GetName().c_str(), "navlight_pad%u", &group));
mask = 0xf0;
}
bblight->SetMaterial(get_material(color));
m_lights.push_back(LightBulb(group, mask, color, bblight));
mt->SetNodeMask(SceneGraph::NODE_TRANSPARENT);
mt->AddChild(bblight);
}
}
示例2: lightFinder
NavLights::NavLights(SceneGraph::Model *model, float period)
: m_time(0.f)
, m_period(period)
, m_enabled(false)
{
assert(g_initted);
Graphics::Renderer *renderer = model->GetRenderer();
using SceneGraph::Node;
using SceneGraph::MatrixTransform;
using SceneGraph::Billboard;
//This will find all matrix transforms meant for navlights.
SceneGraph::FindNodeVisitor lightFinder(SceneGraph::FindNodeVisitor::MATCH_NAME_STARTSWITH, "navlight_");
model->GetRoot()->Accept(lightFinder);
const std::vector<Node*> &results = lightFinder.GetResults();
//attach light billboards
for (unsigned int i=0; i < results.size(); i++) {
MatrixTransform *mt = dynamic_cast<MatrixTransform*>(results.at(i));
assert(mt);
Billboard *bblight = new Billboard(renderer, matBlue, vector3f(0.f), BILLBOARD_SIZE);
Uint8 group = 0;
Uint8 mask = 0xff; //always on
Uint8 color = NAVLIGHT_BLUE;
if (mt->GetName().substr(9, 3) == "red") {
bblight->SetMaterial(matRed);
mask = 0x0f;
color = NAVLIGHT_RED;
} else if (mt->GetName().substr(9, 5) == "green") {
mask = 0xf0;
color = NAVLIGHT_GREEN;
} else if (mt->GetName().substr(9, 3) == "pad") {
//group by pad number
group = atoi(mt->GetName().substr(12, 1).c_str());
mask = 0xf0;
}
bblight->SetMaterial(get_material(color));
m_lights.push_back(LightBulb(group, mask, color, bblight));
mt->SetNodeMask(SceneGraph::NODE_TRANSPARENT);
mt->AddChild(bblight);
}
}