часть моего кода:
Код: Выделить всё
// Setting up the depth test and culling
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_GREATER); // Using GL_GREATER for depth testing
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
// Clearing color and depth buffer
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear color and depth buffers
// Drawing selected faces
glBegin(GL_TRIANGLES);
for (const auto& face : m.cm.face) {
if (!face.IsD() && face.IsS()) { // Only process selected faces
for (int i = 0; i < 3; ++i) {
const auto& vert = *face.V(i);
const vcg::TexCoord2& texCoord = face.WT(i);
glTexCoord2f(texCoord.U(), texCoord.V());
glVertex3f(vert.P().X(), vert.P().Y(), vert.P().Z());
}
}
}
glEnd();
это сетка:

отверстие например:

и это мое результат img:

Мне не нужна часть текстуры, которую «я-наблюдатель» не может видеть, на передней части сетки.
Я включил тестирование глубины с помощью glEnable( GL_DEPTH_TEST) и установите glDepthFunc(GL_GREATER). Я также включил отсечение обратной грани с помощью glEnable(GL_CULL_FACE) и glCullFace(GL_BACK), но эта настройка, похоже, не устраняет скрытые лица в отображаемом выводе. Учитывая, что в сетке есть дыра, как я могу гарантировать, что только видимые грани отображаются правильно, не показывая скрытые поверхности?
Я попробовал изменить исходный glOrtho(minX, maxX, minY, maxY , minZ - 1.0f, maxZ + 1.0f); to glOrtho(minX, maxX, minY, maxY, minZ - 1.0f, maxZ - 1.5f);
Эффект такой: показано на рисунке:

Но это не тот эффект, который мне нужен . Я хочу нарисовать текстуру, которую вижу в орфографическом виде. При этом будут удалены части, которые не следует удалять, но это все равно будет выглядеть немного раздражающе (часть в красной рамке на рисунке).
Подробнее здесь: https://stackoverflow.com/questions/791 ... ted-mesh-f