nixp.ru v3.0

23 октября 2017,
понедельник,
00:07:14 MSK

DevOps с компанией «Флант»
Gnus написал 17 июля 2006 года в 18:04 (337 просмотров) Ведет себя неопределенно; открыл 16 тем в форуме, оставил 26 комментариев на сайте.

Столкнулся с такой вот парой непонятностей:

1. Если расстояние от камеры до объекта превышает какое-то определённое(по-моему

1.0), то части объекта исчезают. Пробовал менять плоскости отсечения по glOrtho и

glFrustum — что трупу лоботомия. Увеличить дистанцию не получается.

2. Есть замечательные функци glVertexPointer и glTexCoordPointer, способные

нарисовать целую пачку текстурированных полигонов, но текстура-то,блин, на всех

одна и та же — та, которую установил предварительно как glBindTexture. А нельзя

ли их менять в процессе прорисовки полигонов из пачки?

rgo

1. чего-то ты не так делаешь.

2. ну дык натягивать не текстуры на полигоны, а одну текстуру на все полигоны. просто надо добиться чтобы нужный кусок текстуры попадал на нужный полигон.

Gnus

1. А что конкретно не так?

2. Это как понимать — одну монтерских размеров текстуру, которая содержит все нужные изображения? Жестоко…

rgo

1. я похож на телепата?

2. можно две или пять. вообще обычно текстура натягивается на объект. иначе говоря на многогранник.

Gnus

А что обычно в таких случаях «не так» бывает? Я так мыслю, сечётся потому что расстояние от камеры большое, а других способов увеличить не нашёл — только отодвигать заднюю плоскость. Разве что процедуру не там вызываю? Или там может какой glEnable() включить надо?

rgo

я всегда делаю так:

man glFrustum

где можно вычитать, например, что near должен быть больше нуля, и, вообще, отношение far/near должно быть умеренным. подробно не вникал что значит умеренным, но по опыту знаю что far/near == 100 вполне дееспособная комбинация. Также там написано, что не стоит вызывать эту функцию промеж glBegin и glEnd (впрочем как и все прочие функции сводящиеся к glMultMatrix).

ну а после этого я делаю так:

glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glFrustum (/* ... */);

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