Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Медленная функция Bitmap.SetPixel(x, y, clr); Необходимо другое решение 
:(
    Опции темы
Afrodiziac
Дата 23.8.2007, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 13.5.2007

Репутация: нет
Всего: нет



Здравствуйте!

По заданию лабораторной работы, мне необходимо написать программу визуализации некоторой, параметрически заданной поверхности, с возможность заливки ее методами Гуро и Фонга, а также текстурированием.

Задание я выполнил:

Но проблема в том, что пользуясь функцией 

Код

bitmap.SetPixel(x, y, clr);


значительно увеличивается время визуализации. 

Как на C# можно решить эту проблему?

На сколько я понимаю есть средство под названием DIB (Device Independent Bitmap) заключающееся в том, что мы изменяем соответсвующие байты в уже  "левом" битмапе, а потом выводим его в свой графикс. То есть вся работа происходит с памятью. Но как это реализовать в C#? 

А может имеется координально другой вариант??

Если геометрический объект сделать большим. и попытаться текстурировать его... то время ожидания визулизации одного(!) кадра превышает 8 минут, я не выдержал и остановил вычисления.

С Гуро и Фонгом легче, работают быстрее, но все равно невозможно с "легкостью" вращать объект. Тормозит.

PS: GDI+ категорически запрещается использовать (всякие градиентные заливки).

Это сообщение отредактировал(а) Afrodiziac - 29.8.2007, 08:05
PM MAIL   Вверх
ivashkanet
Дата 23.8.2007, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



PM MAIL WWW ICQ   Вверх
archeg
Дата 23.8.2007, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



Где такие лабораторные работы дают??  smile 
Ну почему только у нас в университете лаб. роботы - скучный поиск кратчайшего пути по графу


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
ivashkanet
Дата 23.8.2007, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



 smile 
archeg, ага, я тоже "всплакнул". Правда у нас и графов-то не было.
PM MAIL WWW ICQ   Вверх
Idsa
Дата 23.8.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Курс лекций по работе с графикой есть, наверное, на всех прогерских факультетах. Другое дело, что некоторые рисуют в Paint'е (в лучшем случае - в Фотошопе)... а те, у кого препод продвинутый, занимаются вещами посерьезнее...


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
ivashkanet
Дата 23.8.2007, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



! Заканчиваем флейм !
P.S. Это ко мне тоже относится.
PM MAIL WWW ICQ   Вверх
Afrodiziac
Дата 23.8.2007, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 13.5.2007

Репутация: нет
Всего: нет



Отлично! Работает! Гораздо быстрее работает!
Гуро почти мометально!

Собственная функция установки значения пикселя (для интересующихся людей):
Код

    ...
    int W = data.Stride;
    int H = data.Height;

    private void SetPixel(int x, int y, Color color)
    {
      long coord = W * (y - 1) + 4 * x;
      ByteArray[coord]     = color.B;
      ByteArray[coord + 1] = color.G;
      ByteArray[coord + 2] = color.R;
      ByteArray[coord + 3] = color.A;
    }


Огромное Спасибо за помощь!
PM MAIL   Вверх
ivashkanet
Дата 23.8.2007, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Afrodiziac, не за что. Заходи ещё ;-)

P.S. Так как проблема решена, не мог бы рассказать что это за вуз, какая специальность,... 
Уж очень все заинтересовались.
PM MAIL WWW ICQ   Вверх
Afrodiziac
Дата 23.8.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 13.5.2007

Репутация: нет
Всего: нет



Цитата(archeg @  23.8.2007,  10:06 Найти цитируемый пост)
Где такие лабораторные работы дают?? 


Город: Уфа 
Университет: Уфимский Государствнный Авиационный Технический Университет (УГАТУ)
Кафедра: Вычислительной Математики и Кибернетики (ВМиК)
Специальность: Математическое Обеспечение и Администрирование Информационных Систем (МО)
Дисциплина: Интерактивные графические системы
Преподаватель: профессор Верхотуров М. А.
vmk.ugatu.ac.ru/verhotur.htm (4 курс)

Цитата(archeg @  23.8.2007,  10:06 Найти цитируемый пост)
Ну почему только у нас в университете лаб. роботы - скучный поиск кратчайшего пути по графу 


=) Многие вылетели из-за нашего препода из университета.  Кто остался, не желают с ним встречаться. Зверь он)

Поэтому я лабы делаю заранее, тока этой осенью надо бует сдавать =) иначе крышка, отчеты требует идеальные.
PM MAIL   Вверх
Idsa
Дата 23.8.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Цитата(Afrodiziac @  23.8.2007,  15:01 Найти цитируемый пост)
=) Многие вылетели из-за нашего препода из университета.  Кто остался, не желают с ним встречаться. Зверь он)

Поэтому я лабы делаю заранее, тока этой осенью надо бует сдавать =) иначе крышка, отчеты требует идеальные. 

Ну раз все так серьезно... обращайся, не стесняйся - всегда поможем smile


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.2301 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.