|
3D-программирование Вопросы, касающиеся программирования 3D мира |
10.06.2007, 21:16
|
#1
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Вопрос о масштабировании текстуры.
Предположим, у меня есть текстура 1024х1024 и бэкбуфер 1280х1024. Вопрос: как мне содержимое бэкбуфера отмасштабировать так, чтобы скопировать его в текстуру без остатка (читай: как его отмасштабить по горизонтали с 1028 до 1024 чтоб он без остатка влез в тексу)?
З.Ы. ScaleTexture почему-то не помогает может, я не так делаю?
З.З.Ы. В хэлпе написано что она скалит текс. координаты может, есть другой способ?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
11.06.2007, 01:55
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Вопрос о масштабировании текстуры.
копируй в имагу, масштабируй имагу, копируй в тексу.
img=createimage(1280,1024)
copyrect 0,0,1280,1024,backbuffer(),imagebufer(img)
scaleimage img,1024,1024
copyrect 0,0,1024,1024,imagebuffer(img),texturebuffer(fucking_texture)
!ЕТО НЕ РЕАЛТАЙМ ОПЕРАЦИЯ.
|
(Offline)
|
|
11.06.2007, 03:49
|
#3
|
Знающий
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений (для 70 пользователей)
|
Re: Вопрос о масштабировании текстуры.
Проще, хоть и не слишком шустро из-за двойного рендеринга, использовать вьюпорт камеры:
-ставишь размер вьюпорта по размеру текстуры CameraViewport()
-рендеришь мир RenderWorld()
-копируешь из заднего\переднего буфера в текстурный буфер CopyRect()
-меняешь вьюпорт камеры обратно CameraViewport()
-рендеришь мир RenderWorld()
|
(Offline)
|
|
12.06.2007, 07:05
|
#4
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Вопрос о масштабировании текстуры.
Я делал как уже сказал HolyDel
копируй в имагу, масштабируй имагу, копируй в тексу.
img=createimage(1280,1024)
copyrect 0,0,1280,1024,backbuffer(),imagebufer(img)
scaleimage img,1024,1024
copyrect 0,0,1024,1024,imagebuffer(img),texturebuffer(fucking_texture)
!ЕТО НЕ РЕАЛТАЙМ ОПЕРАЦИЯ.
|
Только не забываем потом удалить имагу.
Вот крч я переделал:
Function ResizeTexture(Texture,Width%,Height%)
Local Image=CreateImage(TextureWidth(Texture),TextureHeight(Textre))
Local NTexture=CreateTexture(Width,Height)
CopyRect 0,0,TextureWidth(Texture),TextureHeight(Textre),0,0,TextureBuffer(Texture),ImgeBuffer(Image)
ScaleImage Image,Width,Height
CopyRect 0,0,Width,Height,0,0,ImageBuffer(Image),TextureBuffer(NTexture)
FreeImage Image
Return NTexture
End Function
Писал в броузере, поэтому могут быть ошибочки
Функция возвращает Новую текстуру - Уже отмасштабированную.
|
(Offline)
|
|
12.06.2007, 14:17
|
#5
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Вопрос о масштабировании текстуры.
Функция возвращает Новую текстуру - Уже отмасштабированную.
|
поетому если надо отмасштабировать одну тексу и записать в перемнноую хендл отмасштабированной тексы не делай так:
tex=ResizeTexture(tex,1024,1024)
так как в памяти отанется старая текса и ничем ты ее не убереш.
делай так
tex2=resizetexture(tex,1024,1024)
freetexture tex
tex=tex2
tex2=0
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
имя текстуры |
Spy4433 |
3D-программирование |
3 |
01.09.2009 15:03 |
текстуры |
Samarik |
3D-программирование |
12 |
13.10.2008 09:42 |
Текстуры |
magpro |
3D-программирование |
5 |
13.10.2006 19:31 |
Часовой пояс GMT +4, время: 18:48.
|