OpenGL, много данных
хочется ее рисовать, поворачивать и т.д., не перерисовывая ее при этом, меняя только координаты "смотрящего".Как можно рисовать сцену, не перерисовывая при этом? Ты имеешь ввиду, как просто поворачивать камеру при рисовании сцены? Посмотри описание от gluLookAt и gluPerspective.
Интересно, а много, это сколько?
Ну пусть 10000 точек.
Да я теорию-то читал. Но в примерах использования рядом с заданием этих матриц перерисовывают всегда сцену. Примера не нахожу где нет этого...
Я так понял, что данные фиксированные, то есть положение точек не меняется во времени. И надо лишь уметь быстро их отображать.Я понял, что надо быстро отображать, но при этом изменять положение камеры. Как менять камеру уже написал. Чтобы быстро отображать точки можно выводить их в список: glNewList, glBegin, ..., glEnd, glEndList.
Но в примерах использования рядом с заданием этих матриц перерисовывают всегда сцену.Думаю, что сцену приётся перерисовать в любом случае. Ты же изменяешь матрицу проекции. Если не требуется всё время изменять сцену, то лучше сделать из неё список и потом его вызывать.
gluLookAt(camera[0], camera[1], camera[2], /* look from camera XYZ */ 0, 0, 0, /* look at the origin */ 0, 1, 0); /* positive Y up vector */
glRotatef(orbitDegrees, 0.f, 1.f, 0.f);/* orbit the Y axis */
glCallList(SCENE); /* draw the scene */
Пробую.
Можешь крайне существенно ускорить процесс за счёт использования glNewList/glEndList/glCallList. Это типа ты один раз рассказываешь ему, что хочешь видеть на сцене, а потом просто говоришь "повторить".
Все работает, все OK.
всем спасибо
P.S. Могу ошибаться, но там появилось еще что то вроде.
About glLists. I would only use them for static meshs. Rebuilding a glList mesh like that whenever you change it's data, ie: vertex deformation, I would think causes a performance hit( even though I hadn't first handly tested what kind a performance hit it would cause ).
http://www.blitzmax.com/Community/posts.php?topic=28086
Но про "что новее" не нашел. Говорят только что DrawArrays иногда быстрее (для каких-то случаев)
По тестам на gamedev.ru
DisplayList и DrawArray примерно одинаковы (второй лучше). На новых картах всех рвет VBO.
Оставить комментарий
pilot
Есть много точек на 3D сцене, хочется ее рисовать, поворачивать и т.д., не перерисовывая ее при этом, меняя только координаты "смотрящего".Как такое сделать в OpenGL?
Вот здесь не то: буферы меняются, перерисовывание каждый раз происходит.
http://www.essi.fr/~buffa/cours/synthese_image/DOCS/trant.sg...