Nano Hash - криптовалюты, майнинг, программирование

Java OpenGL GL_TEXTURE_2D затемняет другие цвета

Я пытаюсь поместить текстуры в свою сцену Java OpenGL, но когда я это делаю, цвета других вещей искажаются, как будто цвета смешиваются неправильно. Я использую LWJGL для OpenGL и Slick для загрузки текстур. Когда я оставляю вызов GL11.glEnable(GL11.GL_TEXTURE_2D); без комментариев, цвета затемняются, но когда я комментирую эту строку, цвета правильные, однако у меня, очевидно, нет текстур.

Я разместил свой код здесь http://codepaste.net/26bguu

Речь идет о строке 63.

Один обходной путь, который я нашел, заключается в том, чтобы включить текстуры непосредственно перед тем, как я рисую текстуры, а затем снова отключить сразу после этого. Однако я чувствую, что это должно быть ненужным. Ниже приведены несколько скриншотов, показывающих, что я имею в виду. Единственная разница в том, что одна строка прокомментирована, а не раскомментирована.

Без включенных текстур. Все цвета яркие.

С включенными текстурами. Все цвета темнее.

04.04.2012

Ответы:


1

Вам действительно нужно включать и отключать GL_TEXTURE_2D по мере необходимости.

Если GL_TEXTURE_2D включен, GL будет (обычно) игнорировать цвета вершин, которые вы указали, и вместо этого сопоставит данные координаты текстуры с данной текстурой, чтобы получить цвет для каждого фрагмента/пикселя. Если вы не передадите ему координаты текстуры, может случиться что угодно - как, скажем, на втором скриншоте, который вы разместили.

Нередко приходится делать более 20 вызовов opengl для подготовки к рисованию каждого «объекта». Вот почему программисты OpenGL тратят много времени на объединение большого количества треугольников в отдельные буферы для одновременной отрисовки с помощью одного вызова отрисовки — это значительно повышает производительность.

04.04.2012
  • Хорошо, я воспользуюсь решением, которое, как мне показалось, было довольно хакерским обходным путем: P Ну что ж, мне еще предстоит изучить все тонкости OpenGL. Спасибо за помощь. 04.04.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..