Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > display lists Element Transformations


Автор: glDevAleksey001 15.3.2015, 17:06
Прошу помощи.

   
Есть вот такой дисплей лист

RenderList[0]=1;

 GL.Translate(Position.X, Position.Y, Position.Z);
RenderList[1]=2;<-- Вот этот элемент нужно подвергнуть трансформации НЕ НАРУШАЯ ПОСЛЕДОВАТЕЛЬНОСТИ рендеринга 

RenderList[2]=3;
GL.CallLists(RenderList.Count, ListNameType.Int, RenderList.ToArray());


Новая перекомпиляция не подходит забирает много фпс.

Автор: tzirechnoy 16.3.2015, 02:12
Вообще -- если речь идёт об оптимизацыи (а не о том, чтобы "просто работало") -- то, очевидно, что всё зависит от реального кода и во что там обработка упирается.
Поскольку реального кода нет и дажэ проблема не показана -- то сложно сказать что-то конкретное.

Самый банальный вариант, очевидно, 
Код

glCallList(1);
glPushMatrix();
glTranslate(...);
glCallList(2);
glPopMatrix();
glCallList(3);


В списке 2 матрица не должна сбрасываться.

Да, параметрических glList у нас в общем нет. 

Если кажэтся, что это слишком много дроуколлов -- то можно попытаться сделать что-то вроде предварительного glPushMatrix, затем в списках её доставать через glPopMatrix. Впрочем, учитывая размер matrix stack (16 что-ли)  -- выигрыш будет весьма умеренным.

Ещё, если перекомпиляцыя списка 2 действительно тормозит всё (проверьте, можэт это и не так) -- то можно попытаться этот glTranslate вынести в отдельный display list, который маленький и перекомпиляцыя которого не будет проблемой.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)