Решение для борьбы с глубиной с использованием пользовательских глубинных испытаний - PullRequest
1 голос
/ 18 июня 2019

Суть моей проблемы в том, что у меня проблемы с глубинным боем в чистом OpenGL.У меня есть две идентичные геометрии, но одна проще, чем другая.Это образует набор идеально копланарных многоугольников, и я хочу отобразить сложную геометрию поверх более простой геометрии.

Неудивительно, что это приводит меня к борьбе с глубиной, когда я последовательно рисую два набора треугольников, используя буфер глубины OpenGL.На данный момент я пропатчил его, используя glPolygonOffset, но это решение мне не подходит (я хочу, чтобы полигоны были точно копланарными).

Моя идея - временно использовать пользовательский тест глубины при рисованиивторой набор треугольников.Я хотел бы сохранить глубину фрагментов во время рендеринга первого набора.Далее, я бы использовал glDepthFunc(GL_ALWAYS), чтобы отключить буфер глубины (но все равно писать в нем).При рендеринге второго набора я отбрасывал бы фрагменты, которые имеют больший z, чем память, которую я только что создал, но с определенным допуском (я думаю, по крайней мере, один раз точность Z-буфера при конкретном z).Затем я бы сбросил функцию глубины на GL_LEQUAL.

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

Это возможный подход?Проблема в том, что я понятия не имею, как передавать информацию (пользовательский буфер глубины) из одной программы в другую.

Спасибо

PS: я также изучал объекты Frame Buffer и отложенный рендеринг, потому что, по-видимому,он позволяет передавать информацию через G-буфер, но как только я пишу:

unsigned int gBuffer;
glGenFramebuffers(1, &gBuffer);
glBindFramebuffer(GL_FRAMEBUFFER, gBuffer);

Мое окно становится черным ... Извините, если что-то очевидно, я еще не знаком с OpenGL

1 Ответ

0 голосов
/ 18 июня 2019

Как сказал Rabbid76, я могу просто отключить глубинную запись, используя glDepthMask(GL_FALSE).Теперь я могу нарисовать несколько слоев копланарных полигонов, используя одинаковое смещение.Решаемые.

...