本文整理汇总了C++中ogre::ManualObject::setRenderQueueGroup方法的典型用法代码示例。如果您正苦于以下问题:C++ ManualObject::setRenderQueueGroup方法的具体用法?C++ ManualObject::setRenderQueueGroup怎么用?C++ ManualObject::setRenderQueueGroup使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ogre::ManualObject
的用法示例。
在下文中一共展示了ManualObject::setRenderQueueGroup方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: debugDrawClassification
void NavigationCell::debugDrawClassification( Ogre::Vector3 start, Ogre::Vector3 end )
{
Ogre::Root *root = Ogre::Root::getSingletonPtr();
Ogre::SceneManager* mgr = root->getSceneManager( "SceneManagerInstance" );
Ogre::ManualObject* debug;
Ogre::SceneNode* node;
if( mgr->hasManualObject( "debugDrawClassification" ) )
debug = mgr->getManualObject( "debugDrawClassification" );
else
{
debug = mgr->createManualObject( "debugDrawClassification" );
node = mgr->getRootSceneNode()->createChildSceneNode();
node->attachObject( debug );
node->translate( 0, 1, 0 );
debug->setQueryFlags( 0 );
debug->setRenderQueueGroup( Ogre::RENDER_QUEUE_OVERLAY );
}
debug->begin( "debug/blue", Ogre::RenderOperation::OT_LINE_LIST );
debug->position( start );
debug->position( end );
debug->end();
// debugDrawCell( debug, "debug/yellow", "debug/blue" );
}
示例2: indicator
void Chart::indicator(const Ogre::Real chartX, const Ogre::Real chartY)
{
const std::string chartXString = Ogre::StringConverter::toString(chartX).substr(0, std::min(Ogre::StringConverter::toString(chartX).size(), (std::string::size_type)4));
const std::string chartYString = Ogre::StringConverter::toString(chartY).substr(0, std::min(Ogre::StringConverter::toString(chartY).size(), (std::string::size_type)3));
const Ogre::Vector3 x = chartToScreen( Ogre::Vector2(chartX, mMin.y) );
const Ogre::Vector3 y = chartToScreen( Ogre::Vector2(mMin.x, chartY) );
const Ogre::ColourValue magenta(1,0,1);
// indicator
Ogre::ManualObject *chartIndicator = mSceneMgr->createManualObject();
chartIndicator->setUseIdentityProjection(true);
chartIndicator->setUseIdentityView(true);
chartIndicator->setRenderQueueGroup(Ogre::RENDER_QUEUE_OVERLAY);
chartIndicator->setBoundingBox(Ogre::AxisAlignedBox::BOX_INFINITE);
chartIndicator->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_STRIP);
chartIndicator->position( x );
chartIndicator->colour( magenta );
chartIndicator->position( chartToScreen( Ogre::Vector2(chartX, chartY) ) );
chartIndicator->colour( magenta );
chartIndicator->position( y );
chartIndicator->colour( magenta );
chartIndicator->end();
// text of values on the sides of the axes
if(first)
{
TextRenderer::getSingleton().addTextBox("txt6" + rndIDString, chartXString, x.x - 0.01 * chartXString.size(), x.y - 0.035, 20, 20, magenta);
TextRenderer::getSingleton().addTextBox("txt7" + rndIDString, chartYString, y.x - 0.035 - 0.01 * chartYString.size(), y.y - 0.0025, 20, 20, magenta);
first = false;
}
else
{
TextRenderer::getSingleton().removeTextBox("txt6" + rndIDString);
TextRenderer::getSingleton().removeTextBox("txt7" + rndIDString);
TextRenderer::getSingleton().addTextBox("txt6" + rndIDString, chartXString, x.x - 0.01 * chartXString.size(), x.y - 0.035, 20, 20, magenta);
TextRenderer::getSingleton().addTextBox("txt7" + rndIDString, chartYString, y.x - 0.035 - 0.01 * chartYString.size(), y.y - 0.0025, 20, 20, magenta);
}
if (mChartIndicator)
{
mChartSceneNode->detachObject(mChartIndicator);
mSceneMgr->destroyManualObject(mChartIndicator);
}
mChartIndicator = chartIndicator;
mChartSceneNode->attachObject(mChartIndicator);
mChartSceneNode->needUpdate();
}
示例3: debugDrawCellAndNeigbours
void NavigationCell::debugDrawCellAndNeigbours()
{
Ogre::Root *root = Ogre::Root::getSingletonPtr();
Ogre::SceneManager* mgr = root->getSceneManager( "SceneManagerInstance" );
Ogre::ManualObject* debug;
Ogre::SceneNode* debugNode;
if( mgr->hasSceneNode( "debugDrawNode" ) )
{
debugNode = mgr->getSceneNode( "debugDrawNode" );
}
else
{
debugNode = mgr->getRootSceneNode()->createChildSceneNode( "debugDrawNode" );
debugNode->translate( 0, 1, 0 ); // Move up slightly to see lines better.
}
if( mgr->hasManualObject( "debugDraw" ) )
debug = mgr->getManualObject( "debugDraw" );
else
{
debug = mgr->createManualObject( "debugDraw" );
debugNode->attachObject( debug );
debug->setQueryFlags( 0 );
debug->setRenderQueueGroup( Ogre::RENDER_QUEUE_OVERLAY );
}
for( int i = 0; i < 3; i++ )
{
if( mLinks[i] )
{
debug->begin( "debug/blue", Ogre::RenderOperation::OT_LINE_STRIP );
debug->position( mLinks[i]->mVertices[0] );
debug->position( mLinks[i]->mVertices[1] );
debug->position( mLinks[i]->mVertices[2] );
debug->position( mLinks[i]->mVertices[0] );
debug->end();
}
}
debug->begin( "debug/yellow", Ogre::RenderOperation::OT_LINE_STRIP );
debug->position( mVertices[0].x, mVertices[0].y+1, mVertices[0].z );
debug->position( mVertices[1].x, mVertices[1].y+1, mVertices[1].z );
debug->position( mVertices[2].x, mVertices[2].y+1, mVertices[2].z );
debug->position( mVertices[0].x, mVertices[0].y+1, mVertices[0].z );
debug->end();
}
示例4: setShow
void NavigationMesh::setShow( bool show )
{
Ogre::Root *root = Ogre::Root::getSingletonPtr();
Ogre::SceneManager* mgr = root->getSceneManager( "SceneManagerInstance" );
Ogre::ManualObject* debug;
Ogre::SceneNode* debugNode;
mShow = show;
if( mgr->hasSceneNode( "debugDrawNode2" ) )
{
debugNode = mgr->getSceneNode( "debugDrawNode2" );
}
else
{
debugNode = mgr->getRootSceneNode()->createChildSceneNode( "debugDrawNode2" );
debugNode->translate( 0, 1, 0 ); // Move up slightly to see lines better.
}
if( mgr->hasManualObject( "debugDraw2" ) )
debug = mgr->getManualObject( "debugDraw2" );
else
{
debug = mgr->createManualObject( "debugDraw2" );
debugNode->attachObject( debug );
debug->setQueryFlags( 0 );
debug->setRenderQueueGroup( Ogre::RENDER_QUEUE_OVERLAY );
}
if( !mShow )
{
mgr->destroyManualObject( debug );
return;
}
for( CellVector::iterator i = mCells.begin(); i != mCells.end(); i++ )
{
i->debugDrawCell( debug, "debug/yellow", "debug/blue" );
}
return;
}
示例5: chartToScreen
Ogre::SceneNode * Chart::attachTo(Ogre::SceneManager &sceneMgr)
{
mSceneMgr = &sceneMgr;
if (mLineNames.size() < 3)
{
OGRE_EXCEPT(Ogre::Exception::ERR_INVALID_STATE, "I need exactly three line names. Yeah, it\'s hardcoded ;)", "Chart::attachTo()");
}
Ogre::LogManager::getSingletonPtr()->logMessage("mpoints: " + Ogre::StringConverter::toString(mPoints.size()));
Ogre::LogManager::getSingletonPtr()->logMessage("msize: " + Ogre::StringConverter::toString(mSize));
Ogre::LogManager::getSingletonPtr()->logMessage("mchartunitstep: " + Ogre::StringConverter::toString(mChartUnitStep));
Ogre::LogManager::getSingletonPtr()->logMessage("mmax: " + Ogre::StringConverter::toString(mMax));
Ogre::LogManager::getSingletonPtr()->logMessage("mmin: " + Ogre::StringConverter::toString(mMin));
// chart quad bg
Ogre::ManualObject *chartQuad = sceneMgr.createManualObject();
chartQuad->setUseIdentityProjection(true);
chartQuad->setUseIdentityView(true);
chartQuad->setRenderQueueGroup(Ogre::RENDER_QUEUE_OVERLAY);
chartQuad->setBoundingBox(Ogre::AxisAlignedBox::BOX_INFINITE);
chartQuad->begin("Chart/Background", Ogre::RenderOperation::OT_TRIANGLE_LIST);
chartQuad->position(mOffset.x, mOffset.y, 0.5);
chartQuad->position(mOffset.x + mSize.x, mOffset.y, 0.5);
chartQuad->position(mOffset.x + mSize.x, mOffset.y + mSize.y, 0.5);
chartQuad->position(mOffset.x, mOffset.y + mSize.y, 0.5);
chartQuad->position(mOffset.x, mOffset.y, 0.5);
chartQuad->position(mOffset.x + mSize.x, mOffset.y + mSize.y, 0.5);
chartQuad->end();
// chart y axis
Ogre::ManualObject *chartAxisY = sceneMgr.createManualObject();
chartAxisY->setUseIdentityProjection(true);
chartAxisY->setUseIdentityView(true);
chartAxisY->setRenderQueueGroup(Ogre::RENDER_QUEUE_OVERLAY);
chartAxisY->setBoundingBox(Ogre::AxisAlignedBox::BOX_INFINITE);
chartAxisY->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_LIST);
chartAxisY->position(mOffset.x + mPadding.x, mOffset.y + mSize.y - 0.02, 0.0);
chartAxisY->colour( 0.7, 0.7, 0.7 );
chartAxisY->position(mOffset.x + mPadding.x, mOffset.y + 0.02, 0.0);
chartAxisY->colour( 0.7, 0.7, 0.7 );
chartAxisY->end();
// chart x axis
Ogre::ManualObject *chartAxisX = sceneMgr.createManualObject();
chartAxisX->setUseIdentityProjection(true);
chartAxisX->setUseIdentityView(true);
chartAxisX->setRenderQueueGroup(Ogre::RENDER_QUEUE_OVERLAY);
chartAxisX->setBoundingBox(Ogre::AxisAlignedBox::BOX_INFINITE);
chartAxisX->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_LIST);
chartAxisX->position(mOffset.x + 0.02, mOffset.y + mPadding.y, 0.0);
chartAxisX->colour( 0.7, 0.7, 0.7 );
chartAxisX->position(mOffset.x + mSize.x - 0.02, mOffset.y + mPadding.y, 0.0);
chartAxisX->colour( 0.7, 0.7, 0.7 );
chartAxisX->end();
// lines
const Ogre::ColourValue colours[] = { Ogre::ColourValue(1.0, 0.2, 0.2),
Ogre::ColourValue(0.0, 0.9, 0.0),
Ogre::ColourValue(0.2, 0.2, 1.0) };
Ogre::ManualObject *lines = sceneMgr.createManualObject();
lines->setUseIdentityProjection(true);
lines->setUseIdentityView(true);
lines->setRenderQueueGroup(Ogre::RENDER_QUEUE_OVERLAY);
lines->setBoundingBox(Ogre::AxisAlignedBox::BOX_INFINITE);
lines->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_STRIP);
for (std::vector<ChartPointsVector>::const_iterator it = mPoints.begin(); it != mPoints.end(); ++it)
{
for (ChartPointsVector::const_iterator jt = it->begin(); jt != it->end(); ++jt)
{
lines->position(chartToScreen(*jt));
lines->colour(colours[it - mPoints.begin()]);
}
}
lines->end();
// caption text
const Ogre::Real rndID = Ogre::Math::RangeRandom(0, 9999999999) + Ogre::Math::RangeRandom(0, 9999999999);
TextRenderer::getSingleton().addTextBox("txt0" + Ogre::StringConverter::toString(rndID+ Ogre::Math::RangeRandom(0, 999999)), mCaption, mOffset.x + mSize.x * 0.40, mOffset.y + mSize.y, 100, 20, Ogre::ColourValue::Black);
// text above the lines
TextRenderer::getSingleton().addTextBox("txt1" + Ogre::StringConverter::toString(rndID+ Ogre::Math::RangeRandom(0, 999999)), mLineNames[0], mOffset.x + mPadding.x + 0.0025, mOffset.y + mSize.y - mPadding.y + 0.04, 100, 20, colours[0]);
TextRenderer::getSingleton().addTextBox("txt2" + Ogre::StringConverter::toString(rndID+ Ogre::Math::RangeRandom(0, 999999)), mLineNames[1], mOffset.x + mPadding.x + 0.0025 + (mSize.x - mPadding.x * 2.0) * 0.35, mOffset.y + mSize.y - mPadding.y + 0.04, 100, 20, colours[1]);
TextRenderer::getSingleton().addTextBox("txt3" + Ogre::StringConverter::toString(rndID+ Ogre::Math::RangeRandom(0, 999999)), mLineNames[2], mOffset.x + mPadding.x + 0.0025 + (mSize.x - mPadding.x * 2.0) * 0.75, mOffset.y + mSize.y - mPadding.y + 0.04, 100, 20, colours[2]);
// text on y axis (1)
TextRenderer::getSingleton().addTextBox("txt4" + Ogre::StringConverter::toString(rndID+ Ogre::Math::RangeRandom(0, 999999)), "1", mOffset.x + mPadding.x - 0.02, mOffset.y + mSize.y - mPadding.y, 20, 20, Ogre::ColourValue::Black);
// text on x axis
Ogre::Real rndID2 = Ogre::Math::RangeRandom(0, 9999999999) + Ogre::Math::RangeRandom(0, 9999999999);
for (std::vector<ChartPointsVector>::const_iterator it = mPoints.begin(); it != mPoints.end(); ++it)
{
Ogre::Real rndID3 = Ogre::Math::RangeRandom(0, 9999999999) + Ogre::Math::RangeRandom(0, 9999999999);
for (ChartPointsVector::const_iterator jt = it->begin(); jt != it->end(); ++jt)
{
const Ogre::Real rndID4 = Ogre::Math::RangeRandom(0, 9999999999) + Ogre::Math::RangeRandom(0, 9999999999);
const Ogre::Vector3 chartVec = chartToScreen(*jt);
const std::string xString = Ogre::StringConverter::toString(jt->x).substr(0, std::min(Ogre::StringConverter::toString(jt->x).size(), (std::string::size_type)3));
//.........这里部分代码省略.........
示例6: assembleScene
void AerialMapDisplay::assembleScene() {
if (!dirty_) {
return; // nothing to update
}
dirty_ = false;
if (!loader_) {
return; // no tiles loaded, don't do anything
}
// get rid of old geometry, we will re-build this
clearGeometry();
// iterate over all tiles and create an object for each of them
const double resolution = loader_->resolution();
const std::vector<TileLoader::MapTile> &tiles = loader_->tiles();
for (const TileLoader::MapTile &tile : tiles) {
const int w = tile.image().width();
const int h = tile.image().height();
// we here assume that the tiles are uniformly sized...
const double tileW = w * resolution;
const double tileH = h * resolution;
const double origin_x = -loader_->originX() * tileW;
const double origin_y = -(1 - loader_->originY()) * tileH;
// determine location of this tile
const double x = (tile.x() - loader_->tileX()) * tileW + origin_x;
const double y = -(tile.y() - loader_->tileY()) * tileH + origin_y;
// don't re-use any ids
const std::string name_suffix =
std::to_string(tile.x()) + "_" + std::to_string(tile.y()) + "_" +
std::to_string(map_id_) + "_" + std::to_string(scene_id_);
Ogre::TexturePtr tex;
if (tile.hasImage()) {
// one material per texture
std::string matName = "material_" + name_suffix;
Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().create(
matName, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
material->setReceiveShadows(false);
material->getTechnique(0)->setLightingEnabled(false);
material->setDepthBias(-16.0f,
0.0f); /// @todo: what the fuck does this do?
material->setCullingMode(Ogre::CULL_NONE);
material->setDepthWriteEnabled(false);
// create textureing unit
Ogre::Pass *pass = material->getTechnique(0)->getPass(0);
Ogre::TextureUnitState *tex_unit = NULL;
if (pass->getNumTextureUnitStates() > 0) {
tex_unit = pass->getTextureUnitState(0);
} else {
tex_unit = pass->createTextureUnitState();
}
// only add if we have a texture for it
tex = textureFromImage(tile.image(), "texture_" + name_suffix);
ROS_INFO("Rendering with texture: %s", tex->getName().c_str());
tex_unit->setTextureName(tex->getName());
tex_unit->setTextureFiltering(Ogre::TFO_BILINEAR);
// create an object
const std::string obj_name = "object_" + name_suffix;
Ogre::ManualObject *obj = scene_manager_->createManualObject(obj_name);
scene_node_->attachObject(obj);
// configure depth & alpha properties
if (alpha_ >= 0.9998) {
material->setDepthWriteEnabled(!draw_under_);
material->setSceneBlending(Ogre::SBT_REPLACE);
} else {
material->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA);
material->setDepthWriteEnabled(false);
}
if (draw_under_) {
obj->setRenderQueueGroup(Ogre::RENDER_QUEUE_4);
} else {
obj->setRenderQueueGroup(Ogre::RENDER_QUEUE_MAIN);
}
tex_unit->setAlphaOperation(Ogre::LBX_SOURCE1, Ogre::LBS_MANUAL,
Ogre::LBS_CURRENT, alpha_);
// create a quad for this tile
obj->begin(material->getName(), Ogre::RenderOperation::OT_TRIANGLE_LIST);
// bottom left
obj->position(x, y, 0.0f);
obj->textureCoord(0.0f, 0.0f);
obj->normal(0.0f, 0.0f, 1.0f);
// top right
obj->position(x + tileW, y + tileH, 0.0f);
obj->textureCoord(1.0f, 1.0f);
obj->normal(0.0f, 0.0f, 1.0f);
// top left
obj->position(x, y + tileH, 0.0f);
//.........这里部分代码省略.........