Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2010, 19:15   #11
ZotaC
Форумчанин
 
Аватар для ZotaC
 
Регистрация: 25.06.2009
Сообщений: 163
По умолчанию

Все перерыл, а про рендер в текстуру так ничего дельного и не нашел. Есть что-то, но уж очень непонятное, такое, что даже не смог разобраться,зачем это нужно и как использовать. Был бы очень благодарен, если бы кто-нибудь рассказал вкратце про это дело: что там, да как.
ZotaC вне форума Ответить с цитированием
Старый 09.08.2010, 23:01   #12
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

1-я ссылка в яндексе - там много мусора, но суть понятна: http://wingman.org.ru/opengl/render-to-texture
Смысл таков:
Когда вы визуализируете сцену, то вывод происходит в задний буфер кадра - это вы, надеюсь, знаете. Это так называемый Render Target - цель вывода. Её можно переназначить, например, на текстуру в памяти - тогда все объекты будут рисоваться не в буфере, а на ней. После чего возвращается нормальный вывод, в котором эта текстура и используется, например, растягивается на весь экран (по ссылке сделано чуть по-другому - там текстура просто копируется в виде буфера изображения).
Понятно объяснил?)
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 10.08.2010, 00:29   #13
ZotaC
Форумчанин
 
Аватар для ZotaC
 
Регистрация: 25.06.2009
Сообщений: 163
По умолчанию

Да, вы объяснили понятно, а ту ссылку я видел. К сожалению, мои знания C++ стремятся к нулю. Конечно, OpenGL не зависит от языка, но непонятный код C++ все равно дает о себе знать. Поэтому суть мало прояснилась. Но возник вопрос:

Почему размер текстуры нельзя делать >512? И вообще я слышал, что размер должен быть степенью двойки. Но вот при разрешении экрана, например, 1280х1024 первое число не является степенью двойки. Что же, утечка памяти? Но при меньшем размере качество изображения (при дальнейшем его натягивании на экран) заметно ухудшится. А там пишут:

Цитата:
Размер её будет 512х512. Больший размер (в зависимости от видеокарты) можен либо не работать, либо скушать много памяти, что затормозит всю программу.
ZotaC вне форума Ответить с цитированием
Старый 10.08.2010, 00:55   #14
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Ну, как написано) Жрёт много, потому и не рекомендуется. Но в принципе можно, это вряд ли проблема.
А степень двойки потому что в видеокарте специальный порядок расположения текстур в памяти, там это необходимо. Если размер не совпадает, то делаете размером с ближайшие степени двойки (1024х1024): когда будете растягивать на экран он заполнится в зависимости от геометрии (т.е. весь), а ухудшения не должно особо быть (близко всё-таки). Вы посмотрите на современные игры: там полноэкранное сглаживание под 16х стоит, неужели при этом будет заметны такие расхождения?)
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 10.08.2010, 01:15   #15
ZotaC
Форумчанин
 
Аватар для ZotaC
 
Регистрация: 25.06.2009
Сообщений: 163
По умолчанию

Цитата:
А степень двойки потому что в видеокарте специальный порядок расположения текстур в памяти
Это что же получается, даже обычные текстуры для 2D-игры нужно хранить в таком размере?
ZotaC вне форума Ответить с цитированием
Старый 10.08.2010, 01:22   #16
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Если повезет, то какой-нибудь директХ их конвертнет по дороге, но вообще-то да, надо бы так. Особенно если сами грузите. Я долго мучался, пока не понял, что всё рисуется неверно из-за размера изображения...
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 10.08.2010, 09:13   #17
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Цитата:
Это что же получается, даже обычные текстуры для 2D-игры нужно хранить в таком размере?
Многие OpenGL движки приводят любые текстуры к степени двойки, поэтому нужно лишь разобраться как это делается.
Render Target можно любого размера создавать, но например для постпроцессинга часто используют низкие разрешения (128X128 или 256X256) так как скорость работы пиксельного шейдера напрямую зависит от количества обрабатываемых пикселей, да и рисование быстрее происходит.
Цитата:
что даже не смог разобраться,зачем это нужно
Если конкретно Render Target можно использвать например для обработки изображения поочередно несколькими шейдерами (при этом текстура рендерится сама в себя).
Вадим Буренков вне форума Ответить с цитированием
Старый 12.08.2010, 15:11   #18
ZotaC
Форумчанин
 
Аватар для ZotaC
 
Регистрация: 25.06.2009
Сообщений: 163
По умолчанию

Вадим Буренков, в своей теме '2D Динамические Тени.' вы очень хорошо реализовали эффект света и тени. Если не сложно, расскажите об основных приемах такой реализации. Что нужно знать для этого?
ZotaC вне форума Ответить с цитированием
Старый 12.08.2010, 18:12   #19
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Цитата:
Сообщение от ZotaC Посмотреть сообщение
Вадим Буренков, в своей теме '2D Динамические Тени.' вы очень хорошо реализовали эффект света и тени. Если не сложно, расскажите об основных приемах такой реализации.
В июльском номере журнала ПРОграммист должна была выйти статья посвященная теням, но сейчас все в отпуске и выпуск затянулся.
Цитата:
Что нужно знать для этого?
Рисование в opengl, блендинг, FBO, работа с zbuffer, геометрия и математика.
Вадим Буренков вне форума Ответить с цитированием
Старый 16.08.2010, 14:57   #20
ZotaC
Форумчанин
 
Аватар для ZotaC
 
Регистрация: 25.06.2009
Сообщений: 163
По умолчанию

Цитата:
Многие OpenGL движки приводят любые текстуры к степени двойки, поэтому нужно лишь разобраться как это делается.
Я вот как это понимаю. Допустим, у меня обычная 2D-игра, где каждая ячейка будет размером 50х50. То есть, чтобы не возникало никаких ошибок, мне придется хранить эти текстуры в размере 32х32 или 64х64? Но в первом варианте при выводе на экран текстуры получатся слишком нечеткими, а второй вариант получается каким-то неоптимизированным. Или я что-то не понимаю?
ZotaC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Визуальные эффекты в программе SKS Мультимедиа в Delphi 12 19.01.2011 08:31
Эффекты к имиджу Marsik Помощь студентам 31 08.01.2010 16:45
Эффекты окон BOBAH13 Мультимедиа в Delphi 1 03.10.2008 08:49
Эффекты картинок Andrey1433 PHP 1 17.03.2008 02:07
Визуальные эффекты... ~N@um~ Помощь студентам 2 11.12.2007 11:15