【发布时间】:2013-04-23 20:21:43
【问题描述】:
我正在用 C++ 和 OpenGL 编写一个 3D 游戏。
我想做的是,当玩家与物体发生碰撞时,屏幕上会显示一小段文字,然后几秒钟后消失。
我知道如何在碰撞时将文本本身绘制到屏幕上。我的问题是几秒钟后我不知道如何删除文本。
我目前正在使用此功能在屏幕上绘制文本:
void Gui::drawStrokeText(_In_ const string& p_string, _In_ int p_x, _In_ int p_y, _In_ int p_z)
{
glPushMatrix();
glTranslatef(p_x, p_y, p_z);
glScalef(0.25f, -0.25f, p_z);
glColor4f(200/255.f, 200/255.f, 200/255.f, 128/255.f);
for (int i = 0; i < p_string.size(); ++i)
{
glutStrokeCharacter(GLUT_STROKE_ROMAN , p_string[i]);
}
glPopMatrix();
}
所以要澄清从屏幕上删除文本的更好方法是什么?
全班可以找到here
【问题讨论】:
-
可能会创建一个具有生命计时器作为实例变量的结构。在渲染函数中,您将遍历所有文本对象的全局列表,如果其生命周期大于零,则显示它,否则将其从列表中删除。