Я делаю игру, на самом деле очень основную копию Minecraft, для моего проекта класса. Я застрял в процессе выбора прямо сейчас, что позволило мне уничтожить и создать блоки в игровой среде.Проблема с кодировкой цвета в OpenGL
Я пытаюсь использовать собственный режим выбора OpenGL без каких-либо успехов, и создание моего собственного лучеискателя с использованием математических библиотек кажется большой работой для проекта такого размера. Итак, я решил использовать метод кодирования с цветовой кодировкой, который состоит из рендеринга каждого выбираемого объекта в другом цвете, затем получения цвета в позиции мыши и использования его для идентификации выбранного объекта.
Мой текущий интерфейс - это всего лишь 3D-рендеринг многих ящиков, сложенных друг на друга, создавая структуру, похожую на ландшафт. Поскольку я еще не сделал текстурного отображения, все ящики имеют оттенки серого (освещение включено).
Теперь время для фактического кода:
Это инициализация части, что позволяет текстурирования, освещения и т.д.
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHT1);
При нажатии кнопки мыши, я пытаюсь получить цвета при мыши положение курсора (всегда в середине окна, на самом деле) с помощью:
glDisable(GL_LIGHTING);
glDisable(GL_TEXTURE_2D);
glDisable(GL_DITHER);
glDisable(GL_LIGHT0);
glDisable(GL_LIGHT1);
renderColors();
GLubyte pixels[3];
glReadPixels(x, y, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, (void *)pixels);
glEnable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
glEnable(GL_DITHER);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHT1);
проблемы в том, что запрещает не работает, и я всегда получаю значение RGB различных оттенков серого I n my pixels
массив.
В чем может быть проблема?