Существуют два распространенных сценария, которые создают эту ситуацию, и трудно сказать, какой из них выполняет ваша программа, если вообще существует.
Порядок прорисовки
Во-первых, убедитесь, что вы рисуете ваши объекты в правильном порядке.Вы должны нарисовать от задом наперед , иначе модели не будут смешаны должным образом.
http://www.opengl.org/wiki/Transparency_Sorting
примечание как Арне БергенФоссаа отметил, что спереди назад - правильный способ визуализации объектов, которые не прозрачны с точки зрения производительности.Из-за этого большинство средств визуализации сначала рисуют все модели, у которых нет прозрачности спереди назад, а затем возвращаются назад и визуализируют все модели с прозрачностью спереди назад.Это описано в большинстве 3D-графических текстов.
задом наперед
спереди к-обрат
кредит изображения Джеффу Личу в Университете RMIT
Освещение
Второй наиболее распространенной проблемой является неправильное использование освещения.Обычно в этом случае, если вы используете конвейер с фиксированными функциями, люди советуют вам просто позвонить glDisable(GL_LIGHTING);
Теперь это должно работать (если это вообще является причиной), ноЧто делать, если вы хотите освещение?Тогда вам придется либо использовать пользовательские шейдеры, либо настроить соответствующие параметры материала для моделей.
Обсуждение использования свойств материала можно найти по адресу http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=285889