Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Освещение и скорость. 
:(
    Опции темы
[WoPR]@!!ex
Дата 10.1.2005, 07:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Мне сказали, что тут собираются гуру программирования. Два вопроса:
1)Поверхность храниться в двумерном массиве 256х256, каждый элемент хранит высоту поверхности в соответсвующей координате.
В цикле я эту поверхность отрисовываю. Скорость всего 30 кадров в секунду. Как быстрее отрисовывать?
for (y1 = 0; y1 < 255; y1++)
for (x1 = 0; x1 < 255; x1++)
{
glBegin(GL_TRIANGLES);
x=x1+1;
y=y1+1;
glTexCoord2f((GLfloat)((x)/256), (GLfloat)((y)/256));
glVertex3f((GLfloat)(x),(GLfloat)([Map[x][y]),(GLfloat)(y));
x=x1;
y=y1;
glTexCoord2f((GLfloat)((x)/256), (GLfloat)((y)/256));
glVertex3f((GLfloat)(x1),(GLfloat)(Map[x][y]),(GLfloat)(y1));
x=x1+1;
y=y1;
glTexCoord2f((GLfloat)((x)/256), (GLfloat)((y)/256));
glVertex3f((GLfloat)(x),(GLfloat)(Map[x][y]),(GLfloat)(y1));

x=x1;
y=y1+1;
glTexCoord2f((GLfloat)((x)/256), (GLfloat)((y)/256));
glVertex3f((GLfloat)(x1),(GLfloat)(Map[x][y]),(GLfloat)(y));
x=x1;
y=y1;
glTexCoord2f((GLfloat)((x)/256), (GLfloat)((y)/256));
glVertex3f((GLfloat)(x1),(GLfloat)(Map[x][y]),(GLfloat)(y1));
x=x1+1;
y=y1+1;
glTexCoord2f((GLfloat)((x)/256), (GLfloat)((y)/256));
glVertex3f((GLfloat)(x),(GLfloat)(Map[x][y]),(GLfloat)(y));
glEnd();

2) Как сделать быстрое освещение этой поверхности?
  Вверх
chipset
Дата 11.1.2005, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Цитата
@!!ex, 9.1.2005,  20:52]В цикле я эту поверхность отрисовываю. Скорость всего 30 кадров в секунду. Как быстрее отрисовывать?

Я как обычно предложу списки.. Попробуй, если не удовлетворит - дальше будем разбирать.

Цитата
@!!ex, 9.1.2005,  20:52]
2) Как сделать быстрое освещение этой поверхности?

А чем обычный glLight не подходит?


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
DENNN
Дата 11.1.2005, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата
Я как обычно предложу списки..

Цитата
А чем обычный glLight не подходит?

Я так понимаю, что тем и не подходит, что он обсчитывает всю сцену, а это в 50% излишняя нагрузка.

Списки конечно помогут, но в принципе это не решение проблемы для больших сцен (там ведь не только освещение, но еще прозрачность, наложение различных данных, поиск пересечения с поверхностью и т.п.). В таких случаях может помочь только LOD.
PM ICQ   Вверх
p0s0l
Дата 14.1.2005, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



* использовать GL_QUADS вместо GL_TRIANGLES, тогда вместо 6 вершин нужно указать четыре; вообще, нужно стремится избегать лишних обращений к OpenGL
* подсчитать нормали заранее
* перейти на смешанные массивы (glInterleavedArrays), или просто массивы
* скомпилировать массив (glLockArrays/glUnlockArrays) - т.к. одна и та же вершина используется в 6 треугольниках, то лучше обсчитать её (трансформация, освещение) 1 раз, чем 6 раз



--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




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


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

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