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

Вниз

Вопрос по OpenGL   Найти похожие ветки 

 
max999   (2005-09-26 11:25) [0]

Возникла такая проблема:
Рисую 2 полигона - один за другим. На них накладываеться текстура с альфа-каналом. Текстура на обеих полигонах рисуеться правильно, НО если, например, первый полигон перекрывает второй, то часть текстуры второго полигона, которая по идее должна быть видимой через прозрачную часть текстуры первого как бы обрезнаеться... Если развернуть сцену наоборот, то все нормально... Как сделать правильную отрисовку?


 
DR0N ©   (2005-09-26 11:38) [1]

А ты делал что то вроде..
glEnable(GL_BLEND);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(....)?


 
max999   (2005-09-26 11:41) [2]

Щас расскажу, что я делал :)

glEnable(GL_BLEND); - делал

Вот этого не делал:
glEnable(GL_ALPHA_TEST);
glAlphaFunc(....)?
Как это использовать?

И пытался еще рисовать два полигона в одном месте (всего 4) как-бы передний и задний, а потом делал сортировку:
glEnable(GL_CULL_FACE);
glCullFace(GL_FRONT);
не помогло :(


 
max999   (2005-09-26 12:17) [3]

Разобрался. Почти сам... Яндекс помог немного, всем спасибо :)


 
Trimp ©   (2005-09-26 13:47) [4]

2max999
Как решил проблему? Столкнулся с таким же вопросом.


 
max999   (2005-09-26 14:51) [5]

Решение:


gluBuild2DMipmaps(GL_TEXTURE_2D, DemoTex.pdFormat, DemoTex.pdWidth, DemoTex.pdHeight, DemoTex.pdFormat, DemoTex.pdAtype, DemoTex.Pix);
glEnable(GL_TEXTURE_2D);
glEnable(GL_TEXTURE_ENV);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GEQUAL, 0.5);

glColor4f(1.0, 1.0, 1.0, 1.0);
for TreeCount:=0 to 99 do
begin
glPushMatrix();
glTranslatef(TreePos[TreeCount, 0]/2, TreePos[TreeCount, 2], TreePos[TreeCount, 1]/2);

glBegin(GL_QUADS); // Передняя грань
glTexCoord2f(0.0, 0.0); glVertex3f(-0.5, -0.5,  0); // Низ лево
glTexCoord2f(1.0, 0.0); glVertex3f( 0.5, -0.5,  0); // Низ право
glTexCoord2f(1.0, 1.0); glVertex3f( 0.5,  0.5,  0); // Верх право
glTexCoord2f(0.0, 1.0); glVertex3f(-0.5,  0.5,  0); // Верх лево
//glEnd;
//glBegin(GL_QUADS); // Правая грань
glTexCoord2f(1.0, 0.0); glVertex3f(0, -0.5, -0.5); // Низ право
glTexCoord2f(1.0, 1.0); glVertex3f(0,  0.5, -0.5); // Верх право
glTexCoord2f(0.0, 1.0); glVertex3f(0,  0.5,  0.5); // Верх лево
glTexCoord2f(0.0, 0.0); glVertex3f(0, -0.5,  0.5); // Низ лево
glEnd;
glPopMatrix;
end;

glDisable(GL_TEXTURE_2D);
glDisable(GL_BLEND);
glDisable(GL_ALPHA_TEST);


 
Trimp ©   (2005-09-26 15:23) [6]

2 max999
Спасибо.



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

Текущий архив: 2006.04.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.043 c
2-1143537268
Mozgan
2006-03-28 13:14
2006.04.09
Работа со шрифтами


8-1130620561
MegaGaga
2005-10-30 01:16
2006.04.09
Как использовать функции для рисованмя на Canvas`е на битмапе?


11-1123318469
Mikki
2005-08-06 12:54
2006.04.09
Борьба с ListView


15-1142853447
Rentgen
2006-03-20 14:17
2006.04.09
для чего нужна ISaGRAF ?


2-1143184401
mmms
2006-03-24 10:13
2006.04.09
Здравствуйте! Простите за простой вопрос, не могу преобразовать