2013-07-21 4 views
1

может кто-нибудь дать простой пример с freeimage (с opengl) и glfw3?простой freeimage с примером opengl

при использовании image er("io.png"); er->gen(); только blackscree визуализируется

кода программы

class image 
    { 
    public: 
     FREE_IMAGE_FORMAT format; 
     FIBITMAP * img; 
     GLubyte* texture; 
     char* pixels; 
     GLuint texID; 
     int w,h; 
     image(char* cr){ 
      format = FreeImage_GetFileType(cr); 
      img = FreeImage_Load(format,cr); 

      w = FreeImage_GetWidth(img); 
      h = FreeImage_GetHeight(img); 
      cout << w << " " << h << endl; 
      pixels = (char*)FreeImage_GetBits(img); 
     } 
     void gen() 
     { 
      glGenTextures(1,&texID); 
      glBindTexture(GL_TEXTURE_2D,texID); 
      glTexImage2D(GL_TEXTURE_2D,0,GL_BGR,w,h,0,GL_BGR,GL_TEXTURE_2D,pixels); 
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 

     } 
    }; 

Я пытаюсь использовать изображение в качестве фона приложения OPENGL

ответ

0

FreeImage_GetBits() функция возвращает указатель на данные хранится в внутреннем формате FreeImage. Где каждая строка сканирования обычно выровнена с границей с 4 байтами. Это будет отлично работать, пока у вас есть текстура из двух текстур. Однако для текстур NPOT вам нужно будет указать правильное выравнивание для OpenGL.

В FreeImage есть еще одна функция, которая позволит вам получить неуравновешенный плотно упакованный массив пикселей: FreeImage_ConvertToRawBits(). Используй это.

Смежные вопросы