Это не столько ответ, сколько комментарий к вашему коду.Я вижу, что вы используете SFML в качестве фреймворка.SFML внутренне использует OpenGL, а sf::Image
поддерживается текстурой OpenGL.Или другими словами: нет необходимости создавать текстуру OpenGL из sf::Image
самостоятельно.На самом деле SFML заботится о том, чтобы все было правильно настроено для использования изображения в качестве текстуры OpenGL.
В вашем коде у вас есть это:
GLuint LoadTexture(sf::Image image)
{
GLuint Texture;
glGenTextures(1, &Texture);
glBindTexture(GL_TEXTURE_2D, Texture);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA,image.GetWidth(),image.GetHeight(), GL_RGBA,GL_UNSIGNED_BYTE,image.GetPixelsPtr());
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
return Texture;
}
Вам вообще не нужна эта функция.Все, что вам нужно сделать, это image->Bind()
вместо LoadTexture(image)
, потому что уже есть текстура.Просто взгляните на код sf::Image
http://www.sfml -dev.org / Documentation / 1.6 / Image_8cpp-source.htm