flag_1 = true;
flag_2 = true;
::paintGL()
{
…
func_1();
func_2();
….
flag_1 = false;
flag_2 = false;
}
//----------------------------------------------------------------------------
func_1():
{
if (flag_1)
{
if (glIsList(1))
glDeleteLists(1, 1);
glNewList(1, GL_COMPILE_AND_EXECUTE);
glPushAttrib(GL_CURRENT_BIT);
renderText(100, 150, 0, "myText");
glPopAttrib();
glEndList();
}
else
glCallList(1);
}
//----------------------------------------------------------------------------
func_2():
{
if (flag_2)
{
if (glIsList(2))
glDeleteLists(2, 1);
glNewList(2, GL_COMPILE_AND_EXECUTE);
glPushAttrib(GL_CURRENT_BIT);
renderText(300, 250, 0, trUtf8("#") + QString::number(iValue));
glPopAttrib();
glEndList();
}
else
glCallList(2);
}
//----------------------------------------------------------------------------
ButtonOnClick:
{
iValue = 55;
flag_2 = true;
updateGL();
}
После онклика кнопки результатом func_2 будет вывод строки "55", а не "#55"... почему так происходит (то есть теряется часть (???) строки (символ "#"))? Если закомментировать renderText в func_1(), то func_2 сработает правильно ("#55")...Также будет верный ответ, если в обоих функциях отказаться от дисплейных списков, но этого не хотелось бы делать