PMG

Форумы по созданию игр
Текущее время: 25 апр 2024 06:06

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Больше источников света, хорощих и разных!
СообщениеДобавлено: 09 сен 2005 08:09 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
1. Возьмем например игру SIMS, Hotel Giant и т.п.
Мы на одном экране можем натыкать лампочек (источников света), столько сколько надо хоть 100(до посинения).
Возмем книжку по OPENGL и читаем что в нем можно иметь до 7 источников света + общее освещение.
Неужеле это ограничение нельзя обойти???
Дело в том что для моего задания 7 источников света недостаточно...

Я думаю как вариант: возможно ли прорисовать сцену в памяти, а потом используя один источник света прорисовать сначала в одном, потом в другом месте. и вывести на экран...?

Я еще недошел до источников света, вот хочу узнать заранее возможно ли это? (нарисовать штук 20 лампочек на одном экране)

2. ну и заодно хочу спросить... Как можно вывести BMP или текстуру разрешением 1024х768 на весь экран?
- можно например разрезать ее на 12 кусочков 256 на 256... но неслишком ли это???
в 6ом уроке Нехе написано что 64х64 и 256х256 можно обойти, об этом будет в следующих уроках...
Но я перекопал ненашел...
3. Закономерный вопрос чего делать если текстура нестандартного размера и вообще кособокая ?=)

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 сен 2005 12:22 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 13 ноя 2004 13:09
Сообщения: 113
1) По поводу источников света:
В SIMS, Hotel Giant я не играл, но скажу что сейчас во многих играх (специально смотрел) вместе с "настоящими" источниками света (которых обычно используют минимум - от 1 до 3-4) используют проективные текстуры. Т.е. освещенность не прощитывается для каждого полигона, а просто на полигоны налокладывают текстуру которая просто "осветляет" нужные участки сцены. Такие "трюки" наиболее всего подходят для источников-прожекторов: фары машин (как в GTA:SA, например), лампа в потещении, фонарь и т.д.

Ну, еще можно попробовать сделать освещение на шейдерах. Там явного ограничения нет, разве что на количество инструкций. Хотя 20 источников потребуют большого обьема вычислений даже для простой сцены.

2) Есть расширение OpenGL, которое позволяе загружать текстуры любого размера (не только степени двойки). Названия не помню (если надо - гляну).

Удачи.

З.ы. Забей ты на те "NeHe Tutorials". Купи себе лучше "OpenGL redbook" - must read для любого более-менее серьезного OpenGL-разработчика

:b :b :b Извините за некоторые ошибки в правописании - у меня украинская раскладка клавиатуры :p

_________________
"I just don't give a f..." Eminem


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 сен 2005 12:36 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
А про осветление текстур это неплохая идея =) как же я сам недогадался?))

Цитата:
2) Есть расширение OpenGL, которое позволяе загружать текстуры любого размера (не только степени двойки). Названия не помню (если надо - гляну).

Да конечно надо!

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 сен 2005 14:29 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
1. Это все fake источники, т.е. lightmaps, а не освещение OGL. Кроме этого, освещение OGL используют только в демках, в играх как правило оно сильно тормозит. Некоторые расширения насколько я слышал позволяют использовать больше источников света, но их насколько я понял, тоже не юзают. Так что свет надо делать самим.

2. Максимальный размер текстур можно получить:
GLint glMaxTexDim;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &glMaxTexDim);
Он зависит от видяхи.
Прямоугольные текстуры получаются через расширение EXT_texture_rectangle:
glGenTextures(1, &wood);
glBindTexture(GL_TEXTURE_RECTANGLE_EXT, wood);
glTexParameterf(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, pWoodImage->components, pWoodImage->width,
pWoodImage->height, 0, pWoodImage->format, GL_UNSIGNED_BYTE, pWoodImage->pixels);

glBindTexture(GL_TEXTURE_RECTANGLE_EXT, wood);
glEnable(GL_TEXTURE_RECTANGLE_EXT);

З.ы. - надо и то и то прочитать, в основном не пересекаются. И не помешает.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 сен 2005 17:47 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &glMaxTexDim);
Выдает 4096 а чего еще ожидали?)

Кстати! а текстуры размером даже 8х8 используются без проблем!!! щаз поробовал!! а у Нехе написано что неменее 64х64!

Теперь Я понял почему текстура 1024 на 768 непротолкнулась =))) они ведь должны быть кратны 2ой степени, а 768 этому несоответсвует, если сделать 1024 на 1024 то пролазиит...

а для ксобокой 1024 на 768 как я понял из слов MagicWolf нужно использовать extogl, вот только где??? взять этот GL_TEXTURE_RECTANGLE_EXT у меня в glext.h ничего подобного нет!
Выложи в архиве этот файл гденить?
я нашел в инете только то что оно выглядит так:
Код:
#define GL_TEXTURE_RECTANGLE_EXT 0x84F5
Но оно непомогает текстура невыводится...
притом вообще никакая... =(
И квадрат имеет цвет взятый из палитры этой картинки (картинка залита коринывыми рисунками) квадрат тоже коричневый, а от пейзажа, полосы яркости на квадрате...

И еще я провел тэсты:
Текстура размером 1024х1024 экран разрешение 1024х768х32
Выводми на экран накладывая текстуру, получаем 356 FPS
Выводми на экран накладывая КАК текстуру 1024х768 , получаем 380 FPS
Выводим на экран при помощи glDrawPixels получаем 12 FPS (Именно двенадцать!)

Текстура размером 1024х768 экран разрешение 1024х768х32
Выводим на экран при помощи glDrawPixels получаем 168 FPS
Налодение текстуры неудалось, я несмог запустить GL_TEXTURE_RECTANGLE_EXT... (допишу как смогу)

Но результат уже налицо!!! Кашмар! 2D функции работают просто ужастно, для них расчетов мнеьше чем для наложения текстуры, а работают в разы медленнее!!!

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Последний раз редактировалось DDMZ 17 сен 2005 08:23, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 сен 2005 13:12 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Что поделать! Медленее! Факт!

Расширения OGL:
http://elf-stone.com/glee.php - Glee
http://glew.sourceforge.net/ - Glew

Я юзаю Glee.

По GL_TEXTURE_RECTANGLE_EXT могу выложить пример из книги.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 сен 2005 14:56 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
2 MagicWolf да неплохо было бы =) пример из книги по GL_TEXTURE_RECTANGLE_EXT

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 сен 2005 12:43 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
http://pmg.org.ru/Ex01 - EXT_texture_rectangle.rar

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 сен 2005 18:00 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 13 ноя 2004 13:09
Сообщения: 113
Тебе могут помочь 2 расширения:

1. http://oss.sgi.com/projects/ogl-sample/registry/ARB/texture_non_power_of_two.txt
2. http://oss.sgi.com/projects/ogl-sample/registry/ARB/texture_rectangle.txt

Первое намного удобнее чем второе. Просто смотриш поддерживается ли он твоей видеокартой и, если да, то можеш просто задавать текстуры с размерами не только степени 2. Но я не знаю на каких картах оно поддерживается (даже моя более-менее новая GeForce FX 5200 его не держит).

Второе поддерживается большим количеством видеокарт, но такие текстуры являются весьма ограниченными. Например, для них нельзя использовать mip-mapping.

З.Ы. Еще очень часто используют другой подход: "запихивают" в одну большую текстуру много изображений и тогда соответствующим образом выбирая текстурные координаты можно получить доступ к нужным изображениям. Насколько помню, даже в "nVIDIA Performance FAQ" рекомендуют использовать именно такой подход ибо он более ефективен чем много мелких текстур.

Удачи.

_________________
"I just don't give a f..." Eminem


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 сен 2005 09:24 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
С З.Ы. абсолютно согласен. Теже скины все так сделаны.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 сен 2005 08:28 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
да техника скинов мне понравилась=)
плохо только то, что glTexCoord2s(1, 1); и glTexCoord2i аналогична glTexCoord2f(1.0f, 1.0f);
и задавать в пикселях просто так неудасця. Только дробными числами через glTexCoord2f.

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 сен 2005 14:56 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
Скорость 2D функций малая не из-за их неоптимизированности, а из-за следующего:
glDrawPixels - каждый вывод картинки вызывает ее передачу по системной шине в видеокарту.
glTexImage2D - Загружает текстуру в память видеокарты, затем вывод четырехугольника (GL_QUADS) с этой картинкой в качестве текстуры.

ЗЫ.Вот если бы glDrawPixels могла бы работать с текстурами в видеокарте(или был-бы аналог функции), то работала бы быстрее =)

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 сен 2005 09:10 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
А как ты думаешь почему вывод картинок в DX и просто GDI работает быстрее?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 сен 2005 09:25 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
2 MagicWolf
незнаю... =))

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 64


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB