本文整理汇总了C++中VertexArray::Translate方法的典型用法代码示例。如果您正苦于以下问题:C++ VertexArray::Translate方法的具体用法?C++ VertexArray::Translate怎么用?C++ VertexArray::Translate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VertexArray
的用法示例。
在下文中一共展示了VertexArray::Translate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Set
void HudGauge::Set(
SceneNode & parent,
const std::tr1::shared_ptr<Texture> & texture,
const Font & font,
float hwratio,
float centerx,
float centery,
float radius,
float startangle,
float endangle,
float startvalue,
float endvalue,
float valuedelta)
{
assert(texture);
// calculate number of segments (max 9)
float segments = (endvalue - startvalue) / valuedelta;
float factor = ceil(segments / 9.0f);
segments = ceil(segments / factor);
valuedelta = valuedelta * factor;
endvalue = startvalue + segments * valuedelta;
this->texture = texture;
this->centerx = centerx;
this->centery = centery;
this->scalex = radius * hwratio;
this->scaley = radius;
this->startangle = startangle;
this->endangle = endangle;
this->scale = (endangle - startangle) / (endvalue - startvalue);
// reset
EraseTextDrawable(parent, dialnum_draw);
EraseDrawable(parent, pointer_draw);
EraseDrawable(parent, dial_draw);
pointer_rotated.Clear();
pointer.Clear();
dial_label.Clear();
dial_marks.Clear();
// dial marks
{
// big marker
float pb[] = {-0.02, 1, 0, 0.02, 1, 0, 0.02, 0.92, 0, -0.02, 0.92, 0};
float t[] = {0, 0, 1, 0, 1, 1, 0, 1};
int f[] = {0, 2, 1, 0, 3, 2};
VertexArray bm;
bm.SetVertices(pb, 12);
bm.SetTexCoordSets(1);
bm.SetTexCoords(0, t, 8);
bm.SetFaces(f, 6);
// small marker
float ps[] = {-0.01, 1, 0, 0.01, 1, 0, 0.01, 0.95, 0, -0.01, 0.95, 0};
VertexArray sm;
sm.SetVertices(ps, 12);
sm.SetTexCoordSets(1);
sm.SetTexCoords(0, t, 8);
sm.SetFaces(f, 6);
float delta = (endangle - startangle) / (3.0 * segments);
float angle = startangle;
for (int i = 0; i <= 3 * segments; ++i)
{
VertexArray temp = (i % 3) ? sm : bm;
temp.Rotate(angle, 0, 0, -1);
dial_marks = dial_marks + temp;
angle = angle + delta;
}
dial_marks.Scale(radius * hwratio, radius, 1);
dial_marks.Translate(centerx, centery, 0.0);
dial_draw = AddDrawable(parent);
Drawable & drawref = GetDrawable(parent, dial_draw);
drawref.SetTextures(texture->GetID());
drawref.SetVertArray(&dial_marks);
drawref.SetCull(false, false);
//drawref.SetColor(1, 1, 1, 0.5);
drawref.SetDrawOrder(1);
}
// dial label
{
VertexArray temp;
float w = 0.25 * radius * hwratio;
float h = 0.25 * radius;
float angle = startangle;
float angle_delta = (endangle - startangle) / segments;
float value = startvalue;
float value_delta = (endvalue - startvalue) / segments;
for (int i = 0; i <= segments; ++i)
{
std::stringstream sstr;
std::string text;
sstr << value;
sstr >> text;
float x = centerx + 0.75 * sin(angle) * radius * hwratio;
float y = centery + 0.75 * cos(angle) * radius;
float xn = TextDraw::RenderText(font, text, x, y, w, h, temp);
//.........这里部分代码省略.........