Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

Текстура из нескольких бмп. OpenGL   Найти похожие ветки 

 
Агент Смит [8]   (2003-11-22 08:54) [0]

Есть 30 файлов .bmp надо в процессе работы составлять из них одну текстуру и одевать на сферу,  Как одевать текстуру понятно, я не знаю как из 30 файлов составить один бмп. Делать это надо так что бы ничего не тормозило, фрагменты текстуры во время работы нужно менять местами часто. Подскажите кто знает, плз.


 
MrAngel   (2003-11-22 16:53) [1]

Хмм... не совсем понял.  30 изображений накладывать друг на друга или же из них составить картинку - своего рода пазл.

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

Если в случае накладки друг на друга, то вопрос такой, есть ли полупрозрачность у каждой техтуры (альфа канал)? Если есть, то асм сдесь 100% нужен. Если нет, то просто выбираешь переднюу текстуру и накладываешь её.


 
Агент Смит [8]   (2003-11-22 20:54) [2]

Нет, как пазлы. Асм не знаю, может какой-нить есть способ?


 
mrAld ©   (2003-11-22 22:22) [3]

Довольно сложный процесс. Как понимаю, нужно переписывать весь битмап сферы. Т.Е. стандартными процедурами копируешь и вставляеш нужные картинки в бмп, а затем компилишь их в память карты. Но делать это нужно как можно реже. И вообще, собери несколько сфер, вырежи у них ненужное и наложи друг на друга. Вообще, какой-то странный способ генерить текстуры :))


 
MrAngel   (2003-11-22 23:24) [4]

Если не через асм, то через функции API копирования BitBlt, BitBit, StretchBlt битовых карт. Эти функции все в gdi32.dll - но поверь мне работать будет о-о-о-очень медленно. Хочешь ещё медленней рисуй через канву - хотя отличия будут незначительными.

Делаешь так.
1. Сначала вычисли размер результируюшей текстуры. Хорошо если исходные изображения фиксированного размера, иначе придётся для каждого изображения брать свой размер.

2. Тебе нужен дескриптор устройства на котором будешь рисовать. Что бы не мучиться возьми уже готовый класс TBitmap, там уже есть небходимый хЭндл (Handle - дескриптор устройства).

3. Через вычисления определяешь в каком месте будешь рисовать каждое изображение, затем рисуешь через BitBlt используя Handle.

В результате в TBitmap будет полное изображение из картинок. Я описал всё это в общих чертах, код надо думать - времени нет :-)


 
Агент Смит [8]   (2003-11-26 16:53) [5]

>работать будет о-о-о-очень медленно

Мдя.. Ниче не получается. Может кто подскажет какой-нить вариант по сабжу?


 
MeF88 ©   (2003-11-26 17:28) [6]


> Мдя.. Ниче не получается. Может кто подскажет какой-нить
> вариант по сабжу?

Хмм... 30 больно много... Вот если бы 8, то проще было бы... А зачем тебе? А вообще просто генеришь первое состояние, потом на одну большую текстуру накладываешь два необходимых кусочка, но тормозить кажется будет не мало...


 
Агент Смит [8]   (2003-11-26 21:47) [7]

В моей текстуре есть 25 постоянных "пазлов" и 5 которые нужно менять по определенному порядку примерно каждую секунду, эти пять картинок беруться из тех 25 по определенному алгоритму. Т.е. нужно 31 картинка, 1 постоянная из 25 "пазлов" и 30 отдельных из которых будут браться изменяемые пять. Мне нужно к постоянной "приклеить" пять дополнительных и получить одну текстуру которую можно одевать. Может я в какие дебри полез? Кто-то делал что-то подобное, может можно как-то проще?


 
Unknown user ©   (2003-11-27 20:51) [8]

2 Агент Смит. Не нужно генерить одну большую текстуру. Зачем. Подготавливаешь в памяти своих 30 текстур и затем накладываешь в нужные места своей сферы, вычислив предварительно тестурные координаты для каждой. И работать будет офигенно быстро, если конечно твои картинки не 2048х2048 :).


 
Агент Смит [8]   (2003-11-27 21:24) [9]

>Unknown user ©   (27.11.03 20:51) [8]
Спасибо, попробую.
Я учу ОpenGl сам, по книжке Краснова, там про текстуры как-то расплывчато, попробую конечно сам разобраться, но очень буду признателен за примерчик.



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.033 c
1-1081509914
LNick
2004-04-09 15:25
2004.05.02
Обработчик событий


14-1081706466
smb
2004-04-11 22:01
2004.05.02
кто-нибудь знает?


3-1081318972
besen-ok
2004-04-07 10:22
2004.05.02
Как орпеделить является значение Null


1-1081873908
AsD
2004-04-13 20:31
2004.05.02
BPL и формы


1-1082228872
oleg_SYS
2004-04-17 23:07
2004.05.02
Как изменить свойство компоненты другой формы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский