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

Вниз

Подсветка объектов. GLScene.   Найти похожие ветки 

 
VitGun   (2004-06-09 22:31) [0]

С GLScene поставляется демка \Demos\Interface\Pick там показано как можно подсвечивать объекты при наведении на них указателея мыши. Вопрос: можно ли таким же образом подсвечивать ТЕКСТУРИРОВАННЫЕ объекты (неправильной формы), или прийдеться рисовать для каждого отдельную текстуру?


 
kas-t   (2004-06-09 22:41) [1]

Как я понял из демки этой, там меняется цвет объекта. Так что текстурированные объекты, наверное, таким способом подсвечивать не удастся, придется рисовать отдельную текстуру.


 
VitGun   (2004-06-09 22:56) [2]

>kas-t

Ну в общем я так и думал...Чтож будем рисовать...


 
kerby ©   (2004-06-10 14:02) [3]

можно попробовать написать шейдер


 
wiz ©   (2004-06-10 14:42) [4]

2 VitGun: честно говоря не смотрел демку (и вообще не ставил себе GLScene), но...

в opengl треугольник ресуется с использованием текущего значения glColor (если установлен бит GL_COLOR_MATERIAL) или только на основе текущих значений glMaterial(gl_diffuse/gl_ambient/...).
если ты накладываешь текстуру, то для каждой точки её цвет получается из смешения цветов материала свёрнутого с картой текстуры (умножение).

таким образом, если ты будешь рисовать один и тот-же объект с одной и той же текстурой , но с разными значениями glColor(...) (если установишь glEnable(GL_COLOR_MATERIAL)) или с разными значениями glMaterial(...), то результат получишь разный.

что тебе и нужно.

(к посту [3]: см. origin)

---
бритва Оккама: "Не создавайте сущности сверх необходимого"


 
NailMan ©   (2004-06-10 14:46) [5]

А если точечный источник света или лайтмапом?

---
WBR, NailMan aka 2:5020/3337.13


 
wiz ©   (2004-06-10 15:15) [6]

можно и так, как предложил NailMan: изменять цвет источника света. Но в этом случае нужно будет менять параметры источника до и после отрисовки подсвеченного объекта (или glPushAttrib/glLight/.../glPopAttrib) иначе все предметы вокруг источника будут менять цвет.

по моему проще и правильнее с идейной точки зрения сделать моим путём, т.к. мы хотим поменять свойства (цвет) самого объекта, а не свойства источника "излучения".

Для примера кусочек кода из моего проекта:

//устанавливаю свойства материала
glMaterialfv(...)
...
glMaterialfv(...)

//подключаю текстуру
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, curr_mtl[part_fire_tex_bind].diff_map);

//для простоты включаю установку материала через цвет
glEnable(GL_COLOR_MATERIAL);

for i:=0 to "всего партиклов" do
 begin

//устанавливаю положение объекта
...glTranslated(), glRotated(), glRotated()...

//в зависимости от того, какой тип партикла устанавливаем его цвет
case ogl_Particle_list[i].typ of
 pt_eng_part: glColor3d(1,0.5+random*0.4,random*0.5); //random для большей "живости" огня
 pt_ship_expl: glColor3d(0.8,0.2,0.2);
...
end;

//выводим партикл (внутри только glVertex и glTexCoord)
glBegin(GL_TRIANGLE_STRIP);
 ...
glEnd;

 end;


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

---
бритва Оккама: "Не создавайте сущности сверх необходимого"


 
DeadMeat ©   (2004-06-10 17:46) [7]

> VitGun
Укажи в свойствах текстуры TextureMode в tmModulate

---
...Death Is Only The Begining...



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

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

Наверх




Память: 0.47 MB
Время: 0.038 c
4-1093965391
Arnold
2004-08-31 19:16
2004.10.10
Известен Handle окна, как узнать какой его тип (TForm,TButton..)


1-1096277803
DelphiLexx
2004-09-27 13:36
2004.10.10
CreateThread


8-1089930613
Ribinzon
2004-07-16 02:30
2004.10.10
Работа с JPG


1-1095742639
tse
2004-09-21 08:57
2004.10.10
Арифметические операции с большими целыми числами


8-1090222118
Ricko
2004-07-19 11:28
2004.10.10
Автоматизация вещания радиостаниции





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский