Практически не рекомендуется использовать WinAPI вместе с приложениями OpenGL, если только у вас нет для этого причин - и загрузка текстур с диска не является хорошей причиной.
Подумайте так: OpenGL - это платформанезависимый API, зачем ослаблять это преимущество, используя непереносимые подпрограммы, когда существуют переносимые альтернативы и удобнее использовать в большинстве случаев?
Для загрузки текстур я рекомендуюбиблиотека SOIL .Вероятно, это будет гораздо лучшим решением, чем то, что рекомендуют учебные пособия NeHe.
Для поиска файлов на диске вы можете использовать boost :: filesystem если вы хотите избавиться от зависимости WinAPI.Но сейчас это не приоритет.
Если у вас есть текстура, загруженная SOIL (значение GLuint является идентификатором текстуры), вы можете сделать следующее:
- enable2D текстурирование (
glEnable(GL_TEXTURE_2D)
), - привязка текстуры в качестве активной 2D текстуры (
glBindTexture(GL_TEXTURE_2D,tex);
), - установка активного цвета на чистый белый, чтобы изображение текстуры было полноцветным,
- нарисуйте вершины как обычно, но для каждой вершины вам нужно будет указать текстурную координату (
glTexCoord2f
) вместо цвета.(0,0) - верхняя левая координата текстурного изображения, (1,1) - нижний правый.
Обратите внимание, что текстурное изображение должно иметь размеры , равные двум (например, 16x16 или 256x512).Если вы хотите использовать текстуру любого размера, переключитесь на более новую версию OpenGL, которая поддерживает GL_TEXTURE_RECTANGLE
.
Не очень много объяснений, если говорить об основах.:) 1041
Кстати - +1 за то, что сказал Маркус в своем ответе.Вы изучаете устаревшую версию OpenGL прямо сейчас;в то время как вы можете делать с ним много забавных вещей, вы можете сделать больше с как минимум OpenGL 2 и шейдерами ... и с шейдерами это обычно проще.