Рисование прозрачного объекта внутри непрозрачного - PullRequest
1 голос
/ 04 июля 2011

Я пытаюсь нарисовать прозрачный объект внутри непрозрачной клетки, но что бы я ни пытался сделать, я не могу понять это правильно.

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); 

glDisable(GL_BLEND);

glEnable(GL_DEPTH_TEST);

glEnable(GL_CULL_FACE); 
glCullFace(GL_BACK);

glColor4f(1.0, 1.0, 1.0, 1.0);
drawCage();

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glColor4f(0.0, 0.0, 0.0, 0.5);
drawObject();   

glPopAttrib();

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

Что я делаю не так, это может быть связано с шейдерами, которые я использую

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Несколько вещей.

  1. Проверьте функцию глубины в вашей инициализации и убедитесь, что ваш пиксельный формат имеет буфер глубины.
  2. Попробуйте сначала с помощью стандартного шейдера Гуро.
  3. Тройная проверка того, что все вершины прозрачного объекта находятся внутри клетки.
  4. Используйте какое-то вращение камеры для каждого кадра, чтобы вы могли видеть визуализированную сцену со всех сторон. (Таким образом, вы можете проверить, случайно ли вы визуализировали объект наизнанку. [Часто случается со мной, когда я возвращаюсь в 3D после некоторого отсутствия))

Надеюсь, это поможет

0 голосов
/ 04 июля 2011

Тогда у вас нет проблем с прозрачностью.Если у вас включен тест глубины, и ваш объект появляется перед другим, у вас есть проблема либо в вашей геометрии, либо в вашей программе рисования.Может быть миллион вещей, попробуйте сначала отключить отключение и посмотрите, что произойдет.

С другой стороны, вы пытаетесь визуализировать прозрачный объект с постоянным цветом, имеющий альфа-коэффициент 1,0f.Это означает, что полностью непрозрачный.Вы уверены в этом?

...