LINUX.ORG.RU

Display lists и несколько потоков

 


0

2

Читал о том, что многопоточность не даёт особого прироста, когда рисуешь на OpenGL из-за переключения контекстов и однопоточной архитектуры видеодрайверов. А будет ли прирост, если в несколько потоков создавать дисплей листы, а затем вызывать их из основного потока?


дисплей листы

может все таки перейти на свежий API? емнип даже в древнем 2.1 есть glDrawArrays().

x0r ★★★★★
()
Последнее исправление: x0r (всего исправлений: 1)

В современном железе скорость отрисовки обычно упирается либо в шейдеры (бегут на GPU), либо в память (если слишком много данных льется с CPU на GPU в каждом кадре). Несколько одновременно рисующих потоков прироста скорости не дадут. И да, дисплейные листы и весь пайплайн 1.х уже много лет как устарел и существует только для обратной совместимости. Почитай что-нибудь про современный подход к графике для начинающих. Например вот это: http://www.arcsynthesis.org/gltut/

ddos3
()
Ответ на: комментарий от x0r

Нет. Целевая OS — RHEL6, язык программирования — Java. Абстрактный painter должен уметь рисовать ещё и на AWT помимо OpenGL.

com
() автор топика
Ответ на: комментарий от ddos3

До меня каждый кадр рисовался с glBegin и glEnd со всеми вытекающими. К сожалению, приходится работать с экскрементами мамонта, а display lists дают хороший прирост к производительности. Да и я не хочу рисовать во втором потоке, хочу просто создавать дисплей листы, а в первом их рисовать.

com
() автор топика

Прискорбная у тебя ситуация.

Думаю ускорения не будет, тем более что ты просто не сможешь делать это многопоточно. OpenGL - машина состояний. Считать заранее геометрию и координаты в массивы - вполне возможно

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от com

не факт, что конкурентное выполнение glNewList(), glBegin(), glEnd(), glEndList() не даст undefined behaviour.

x0r ★★★★★
()
Ответ на: комментарий от com

лучше вместо многопоточности и дисп листов замени glBegin/glEnd на glDrawElements где сможешь. Скорость повысится.

ddos3
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.