Каркас виден сквозь нарисованные OpenGL кубы, есть идеи? - PullRequest
1 голос
/ 16 марта 2011

Я новичок в OpenGL / ES и OpenTK, поэтому простите меня, если мое понимание / терминология немного не в порядке.

В основном,

  1. Я рисуюсерия [белых] кубов на основе треугольников с использованием массива объектов буфера вершин (VBO).
  2. Затем я использую те же вершины для рендеринга [черного] каркаса для кубов, используя lines & polygonOffset ().
  3. Проблема в том, что я могу видеть каркасы, которые отображаются на задних гранях (т. Е. Просвечивать), я не уверен, почему (?).
  4. Я использую 4-значениецвета (rgba), ничего, что я делаю с 4-м значением (альфа / непрозрачность), кажется, ничего не делает.

I имеет определенных нормалей для треугольникаоснованные на кубе секции, всего 36 (2 x 3 вершины / три x 6 сторон), однако, я не определил какие-либо нормали для сегментов каркасной линии (в настоящее время).

Кто-нибудь имеет представление о том, что я могу делать неправильно, основываясь исключительно на подводных камнях / опыте OpenGL.

JFYI, я использую OpenTK-OpenGLES11 на mono / monotouch (C #)

PS Если вам интересно, почему я не опубликовал никакого кода, это потому, что код рендеринга смешан с игровой логикой и распределен по нескольким файлам.Я постараюсь сделать простой, самостоятельный пример, как только смогу, при необходимости.

Ответы [ 2 ]

1 голос
/ 16 марта 2011

Предполагая, что GL.EnableClientState является прямым аналогом glEnableClientState , это не то, как смещение полигонов включеноЕсть ли эквивалент glEnable ?Следующее работает для меня, чтобы получить видимый каркас:

 glEnable( GL_POLYGON_OFFSET_FILL );
 // push back the filled faces a touch
 glPolygonOffset( 1, 1 );
 // draw filled faces
 ...
 glDisable( GL_POLYGON_OFFSET_FILL );
 // draw wireframe
 ...
1 голос
/ 16 марта 2011

Убедитесь, что у вас включено тестирование глубины.Даже фрагменты, составляющие линии и точки, проверяются на глубину, поэтому, если перед линиями нарисованы фигуры, фигуры должны закрывать линии.

Вы хотите посмотреть на функцию glEnable с параметром GL_DEPTH_TEST.

...