Я ищу любые оптимизации, которые я могу сделать в программе редактирования графики

Эй, я впервые задаю здесь вопрос, поэтому простите меня, если я что-то напутаю> ~ <

I ' m работает над программой, похожей на openCanvas, более раннюю, которая позволяла нескольким людям рисовать на одном холсте в реальном времени через Интернет. OC действительно глючит и имеет множество ограничений, поэтому я и хотел написать это.

Я настроил его так, чтобы холст расширялся "бесконечно" во всех направлениях и состоит из блоков пикселей размером 512x512, которые не становятся активными, пока они не начнутся, что должно быть очень легко сделать, и я думал об использовании Direct3D, чтобы сделать его аппаратным ускорением, таким образом, 512 квадратных блоков.

Моя проблема возникает, когда я хочу использовать слои, я Я не совсем уверен, как я могу составлять слои быстро и без использования тонны памяти, поскольку моя цель - совместимые с DirectX9 видеокарты со 128 МБ памяти и система с мощностью процессора около 3,2 ГГц и от 2 до 8 ГБ оперативной памяти. . У меня было несколько разных подходов, которые я хотел использовать, и мне было интересно, какой из них, вероятно, будет лучшим, и есть ли что-нибудь, что я мог бы изучить, чтобы улучшить его работу.

Моя первая идея заключалась в том, чтобы оборудование gfx работало как как можно больше работы, когда все слои на всех блоках служат текстурами, и они будут обновляться путем блокировки измененной области, обновления их на процессоре и разблокировки. Блоки, которые в настоящее время не изменяются, объединяются в одну текстуру, а сами отдельные слои хранятся в системной памяти, что уменьшит используемую память gfx, но может значительно увеличить использование полосы пропускания между системной памятью и памятью gfx. Я вижу, что постоянная блокировка и разблокировка также может сильно замедлить работу системы. Другая возможная проблема заключается в том, что я слышал, что некоторые люди используют до 200 слоев, и я не могу придумать каких-либо хороших способов оптимизировать это, учитывая вышесказанное.

Другой моей идеей было собрать текстуры - полностью - в системной памяти, записать их в текстуру и скопировать эту текстуру в память gfx, чтобы визуализируется в каждом блоке. Кажется, что это устраняет многие проблемы с другим методом, но в то же время я перекладываю всю работу на ЦП, а не уравновешиваю ее. Однако это не имеет большого значения, если он все еще работает быстро. Опять же, есть проблема с парой сотен слоев. Однако в этом случае я, вероятно, мог бы обновить только последние пиксели, которые на самом деле меняются, что, как я думаю, делают программы с большим именем, такие как Sai и Photoshop.

Я в основном ищу рекомендации, предложения, которые могут улучшить вышеперечисленное , лучшие методы, или ссылки на статьи, которые могут быть связаны с таким проектом. Пока я пишу его на C ++, у меня нет проблем с переводом с других языков. Спасибо за ваше время ~

6
задан Addi 13 February 2011 в 21:00
поделиться