Почему мое приложение SFML + OpenGL отображает 3D-модель с прозрачностью даже после отключения смешивания и установки неC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему мое приложение SFML + OpenGL отображает 3D-модель с прозрачностью даже после отключения смешивания и установки не

Сообщение Anonymous »

Я разрабатываю игровой движок, используя SFML для управления окнами и OpenGL для рендеринга с помощью C++. Моя цель — визуализировать 3D-изображение. модель, но части модели кажутся прозрачными. Я попробовал несколько подходов, чтобы гарантировать, что модель будет полностью непрозрачной, но проблема не устранена. Когда я вращаю камеру вокруг модели, передние грани становятся невидимыми. Из-за этого я всегда вижу лица сзади.
Изображение

Изображение


Моя настройка (минимум):
Инициализация окна SFML

Код: Выделить всё

sf::ContextSettings settings;
settings.depthBits = 24;
settings.stencilBits = 8;
settings.antialiasingLevel = 0;
settings.majorVersion = 3;
settings.minorVersion = 3;

sf::RenderWindow window(sf::VideoMode(800, 600), "SFML + OpenGL", sf::Style::Default, settings);
window.setVerticalSyncEnabled(true);

glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glDisable(GL_ALPHA_TEST);
glDisable(GL_BLEND);
Игровой цикл

Код: Выделить всё

while (m_isRunning) {
handleEvents();

// Clear the screen
glClearColor(0.9f, 0.9f, 1.0f, 1.0f); // Opaque light blue background
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

// Update logic
m_activeScene->update(deltaTime);

// Render logic
window.pushGLStates();
m_activeScene->render(); // Custom rendering
window.popGLStates();

window.display();
}
Шейдер модели (для фрагментарного затенения модели):

Код: Выделить всё

#version 330 core
out vec4 FragColor;

in vec2 TexCoords;

uniform sampler2D texture_diffuse1;

void main() {
vec4 texColor = texture(texture_diffuse1, TexCoords);
FragColor = vec4(texColor.rgb, 1.0); // Force full opacity
}
Что я пробовал
  • Я отключил глобальное смешивание перед рендерингом

    Код: Выделить всё

    glDisable(GL_BLEND);
    
  • Я убедился, что прозрачный цвет имеет полностью непрозрачное значение альфа

    Код: Выделить всё

    glClearColor(0.9f, 0.9f, 1.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
  • Я убедился, что глубинное тестирование включено

    Код: Выделить всё

    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);
    
  • Я заменил фрагментный шейдер простым сплошным цветом, чтобы изолировать проблемы с текстурой. Модель по-прежнему отображается с прозрачностью в некоторых областях.
Вопросы:
  • Почему модель отображается с прозрачностью даже после отключения смешивания и обеспечения непрозрачности цветов в шейдере?
  • Может ли проблема быть связана с альфа-каналом кадрового буфера по умолчанию? Если да, то как я могу визуализировать полностью непрозрачные объекты?
  • Существуют ли другие состояния или конфигурации OpenGL, которые могут вызвать такое поведение при рендеринге 3D-моделей?
Есть идеи или предложения?

Подробнее здесь: https://stackoverflow.com/questions/793 ... rency-even
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему мое приложение OpenGL отображает 3D-модель с неожиданной прозрачностью?
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Производительность окна SFML остается низкой после отключения LWA_COLORKEY
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Рендеринг 3D-куба в SFML без OpenGL
    Anonymous » » в форуме C++
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Как использовать режим смешивания для изменения цвета текста на анимированном фоне
    Гость » » в форуме CSS
    0 Ответы
    56 Просмотры
    Последнее сообщение Гость
  • Я использую Python для смешивания изображений путем затухания одного над другим, но после затухания я получаю черный фон
    Anonymous » » в форуме Python
    0 Ответы
    47 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»