Эй, у меня есть этот скрипт для загрузки SDL_Surface и сохранить его как OpenGL текстуры:SDL_Surface для OpenGL текстуры
typedef GLuint texture;
texture load_texture(std::string fname){
SDL_Surface *tex_surf = IMG_Load(fname.c_str());
if(!tex_surf){
return 0;
}
texture ret;
glGenTextures(1, &ret);
glBindTexture(GL_TEXTURE_2D, ret);
glTexImage2D(GL_TEXTURE_2D, 0, 3, tex_surf->w, tex_surf->h, 0, GL_RGB, GL_UNSIGNED_BYTE, tex_surf->pixels);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
SDL_FreeSurface(tex_surf);
return ret;
}
Проблема заключается в том, что она не работает. Когда я вызываю функцию из основной функции, она просто не загружает изображение (при отображении его просто поворачивает цвет чертежа), а при вызове из любой функции вне основной функции программа вылетает из строя. Именно эта линия, что делает сбой программы:
2D(GL_TEXTURE_2D, 0, 3, tex_surf->w, tex_surf->h, 0, GL_RGB, GL_UNSIGNED_BYTE, tex_surf->pixels);
Может кто-нибудь увидеть ошибку в этом?
Опубликовать минимальный компилируемый источник, который демонстрирует вашу проблему. Вы получите лучшие ответы. Очень сложно теоретировать, в чем проблема. – dirkgently