Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Подсветка объектов. 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.036 c
14-1095732732
Думкин
2004-09-21 06:12
2004.10.10
С днем рождения! 21 сентября


14-1095514391
cyborg
2004-09-18 17:33
2004.10.10
Прикольнуться чтоли над буржуями :)


14-1095768383
SergeySEM
2004-09-21 16:06
2004.10.10
Какое сегодня число


6-1091083739
MakNik
2004-07-29 10:48
2004.10.10
Workstation ID


1-1096012511
Pine
2004-09-24 11:55
2004.10.10
Как построить в D7 исполняемый файл с BDE 5.01?





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