Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 17.11.2007, 21:02   #1
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
Печаль Скриншот в игре

Сразу не пинать, про SaveBuffer(FrontBuffer(), "pic.bmp") я знаю. Так вот. Как реализовать вот что:
1)делается скриншот экрана
2)он сохраняется сразу в текстуру размером 512х256, т.е. чтобы физически файл с ней не создавался, а как при createTexture
3)эта текстура натягивается на меш


Я с CreateTexture и буферами пробовал повозиться, но довозился только до того, что текст перестал отображаться на экране, зато на этом меше на черном фоне его видно.
(Offline)
 
Ответить с цитированием
Старый 17.11.2007, 21:24   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Скриншот в игре

редериш мир в тексу.
тексу натягиваеш, и наслаждаешся. по порядку:

CameraViewport cam,0,0,512,256
RenderWorld
CopyRect 0,0,512,256,0,0,BackBuffer(),TextureBuffer(MyLikes tTex)

entitytexture myLikestMesh,myLikestTex

в чем проблема то?
Да, текса должна быть с флагом 256, а то узнаеш что есть великие тормоза.
(Offline)
 
Ответить с цитированием
Старый 17.11.2007, 22:00   #3
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Скриншот в игре

А то что ты мне написал - это не особо тормознуто?

Я сделал так:

EKt=CreateTexture (512,256,256);создаем текстуру
MoveEntity cam,0,5,0;перемещаем камеру, чтобы все было видно
CameraViewport cam,0,0,512,256;устанавливаем размер камеры
RenderWorld;рендерим мир
CopyRect 0,0,512,256,0,0,BackBuffer(),TextureBuffer(EKt);копируем в тексу скрин
EntityTexture EK,EKt;лепим на экран
MoveEntity cam,0,-5,0;возвращаем камеру на место
CameraViewport CAM,0,0,800,600;нормальный размер камеры
(Offline)
 
Ответить с цитированием
Старый 17.11.2007, 22:28   #4
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Скриншот в игре

поставишь флаг 256 будет наиболее быстрым родным способом блица.
быстрее - олько рендер непосредственно в текстуру (Ашадоу или другие надстройки)
(Offline)
 
Ответить с цитированием
Старый 17.11.2007, 22:39   #5
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Скриншот в игре

EKt=CreateTexture (512,256,256) - так ведь надо здесь этот флаг ставить?
(Offline)
 
Ответить с цитированием
Старый 17.11.2007, 22:52   #6
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Скриншот в игре

ЭЭЭ. ты каждый кадр создаеш тексу?
почему не рендериш мир в нее?
(Offline)
 
Ответить с цитированием
Старый 17.11.2007, 23:10   #7
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Скриншот в игре

Сообщение от HolyDel
ЭЭЭ. ты каждый кадр создаеш тексу?
почему не рендериш мир в нее?
Теперь я CreateTexture поставил вне цикла. Т.е. она один раз только создается. У меня эта картинка создается один раз в 10 секунд.
P.S. А учитывая, что флаг стоит 256, то FreeTexture делать не надо?
(Offline)
 
Ответить с цитированием
Старый 17.11.2007, 23:26   #8
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Скриншот в игре

EKt=CreateTexture (512,256,256)

игровой_цикл

CameraViewport cam,0,0,512,256
RenderWorld
CopyRect 0,0,512,256,0,0,BackBuffer(),TextureBuffer(EKt);
EntityTexture EK,EKt


CameraViewport cam,0,0,800,600
RenderWorld

конец_игрвоого_цикла
(Offline)
 
Ответить с цитированием
Старый 17.11.2007, 23:28   #9
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Скриншот в игре

Так я и сделал. Спасибо!
(Offline)
 
Ответить с цитированием
Старый 24.12.2007, 01:34   #10
dector
Модератор
 
Регистрация: 21.12.2006
Сообщений: 564
Написано 79 полезных сообщений
(для 203 пользователей)
Re: Скриншот в игре

у меня при команде
If KeyDown(62) SaveBuffer(FrontBuffer(), "img.bmp")
создается черная бмпшка(
(Offline)
 
Ответить с цитированием
Старый 24.12.2007, 01:58   #11
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Скриншот в игре

dector, а ты в каком месте ету команду вызываеш?
надо перед flip.
(Offline)
 
Ответить с цитированием
Старый 24.12.2007, 02:26   #12
dector
Модератор
 
Регистрация: 21.12.2006
Сообщений: 564
Написано 79 полезных сообщений
(для 203 пользователей)
Re: Скриншот в игре

мня... опять сплошил я.
спасибо. щас на стенке запишу - "Работа с графикой и текстом - перед Flip()"

Сделал. заценил. Понравилось! Теперь можно скрины штамповать. Жаль незачем(
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция Скриншот. Unodeya 3D-программирование 2 19.05.2009 17:57
Проигрыватель в игре AndruXa Blitz3D 7 21.09.2007 00:07
откуда скриншот ? jimon Болтовня 8 26.04.2007 02:31
Скриншот в блитзе DRAG 3D-программирование 8 10.03.2007 02:00


Часовой пояс GMT +4, время: 01:52.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com