Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

OpenGL [Delphi, Windows]


yurique ©   (2005-05-22 19:33:00) 

Привет!

У меня возникла следующая проблемка (а времени разобраться по-хорошему нету :( ).. Так вот: мне в опенГЛ нужно нарисовать трехмерный график функции от двух переменных. С этим проблем нет, рисую.. вот только график получается "полупрозрачным" с одной стороны, и нормальным с другой - от этого нужно избавиться. Рисую четырехугольниками, вот один из них:

     z := self.z[xi, yi];
     Vertex(x, y, z);
     z := self.z[xi+1, yi];
     Vertex(x1, y, z);
     z := self.z[xi+1, yi+1];
     Vertex(x1, y1, z);
     z := self.z[xi, yi+1];
     Vertex(x, y1, z);


Используется один источник освещения. Материал "графика":

 a[0] := 0.2; a[1] := 0.8; a[2] := 0.8; a[3] := 1;
 glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, @a);


Подскажите плз, кто знает...

ЗЫ: можно ли как-нить нарисовать сетку при включенном освещении? (после включения оного, линии перестали быть видными.. )


AlterEgo of WondeRu   (2005-05-23 10:47:00) [1]

yurique   (22.05.05 23:20) [7]
будь у меня время, я бы разобрался.. и по рамблеру полазил бы.. и по гуглю :) .. а так горит..


мдя... уважение так и прёт!


П7   (2005-05-23 01:28:00) [2]

Нормали, это такие хреньки, вектора, которые определяют, как бы это, угол отражения падающего на вершину цвета. Или там полигон...

Т.е. когда ты треугольник рисуешь, то предварительно впихиваешь нормаль. И тогда свет нормально освещает поверхность.

В общем, это единичный вектор - перпендикулярный плоскости полигона.


yurique   (2005-05-22 23:36:00) [3]

ps: а освещение использовать хотел, чтоб график можно было рассмотреть :) - иначе просто контур.. но вместо света, я использовал цвет.. изменяя его в заыисимости от высоты например...


yurique   (2005-05-22 23:20:00) [4]

2 П7:
будь у меня время, я бы разобрался.. и по рамблеру полазил бы.. и по гуглю :) .. а так горит.. к тому же, я имел в виду с какой стороны тут нормали прикрутить - т.е. зачем?

впрочем, вопрос исчерпался.. всё работает: не хватало действительно

glEnable(GL_DEPTH_TEST);

и

glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);


yurique   (2005-05-22 23:12:00) [5]

2 VitGun:
я писал ;) :
>я вообще решил отказаться от освещенности...

вот вроде подобрался к сути проблемы: я не включал glEnable(GL_DEPTH_TEST).. теперь включил, теперь почти всё почти работает :)


П7   (2005-05-22 23:12:00) [6]

Собственно про нормали тебе расскажет твой друг РАМБЛЕР! (:


VitGun   (2005-05-22 23:04:00) [7]

Вопрос назрел: "А зачем ты используешь источник света?" Коли ты сторишь всего лишь график.


yurique   (2005-05-22 22:43:00) [8]

2 Кефир87:
спасибо :)
я вообще решил отказаться от освещенности - график чётче видно.. но тем не менее "глюк" остаётся - с одной стороны график выглядит нормально, с противоположной - как бы просвечивается, вообще мне трудно понять что "происходит" - но картинка получается противная.. может тут что-то связано с буфером глубины..

2 VitGun:
что ты имеешь в виду? я с 3д не особо знаком.. это вообще первое что, пишу в 3д..

зы: может я не правильно использую

glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

и нужно ли это вообще испольщовать?


Кефир87   (2005-05-22 20:54:00) [9]


> нарисовать сетку при включенном освещении?

glDisable(GL_LIGHTINING);
narisovat_setka();
glEnable(GL_LIGHTINING);


VitGun   (2005-05-22 19:46:00) [10]

ИМХО. Нормали строй....


Наверх

Титульная страница Поиск, карта сайта Написать письмо