2012-11-02 71 views
2

在學習OpenGL時,我在尋找可以評估各種圖像類型的圖像閱讀器,如".png", ".bmp", ".tga", ".dds", ...。我的計劃是提取PARAMS像heightwidthtype圖像文件,並與下面樣的功能設置:OpenGL通用圖像閱讀器和GLFW(glfwReadImage,glfwLoadTexture2D)支持各種圖像格式

glTexImage2D(GL_TEXTURE_2D, 0, <color format>, <width>, <height>, 
    0, <color orientation>, <data type>, <actual data>); 

我通過CImg librarystb_image.c去了。但是,我無法得到如widhthheight,type等參數。

這似乎是<GL/glfw.h>一個很好的框架。我有一個印象是,它只是用來加載使用以下功能".tga"格式:

int glfwLoadTexture2D(const char *name, int flags); 

它支持所有格式?

另外,我在附近看到下面的函數。如果有人能夠介紹,那麼這將是一個獎金。

int glfwReadImage(const char *name, GLFWimage *img, int flags); 
void glfwFreeImage(GLFWimage *img); 

其中:

typedef struct { 
    int Width, Height; 
    int Format; 
    int BytesPerPixel; 
    unsigned char *Data; 
} GLFWimage; 

如果GLFW不支持所有格式,那麼有沒有剛剛得到上述GLFWimage像PARAMS任何庫,並允許我們單獨設置它通過glTexImage2D

回答

1

DevIL對於廣泛的圖像格式選擇有相當不錯的支持,但不再處於積極的開發階段;作者太忙了。

GLI也是一個不錯的選擇;它只是DDS,但這不像人們想象的那麼大。正在載入JPG/PNG /等。對於原型開發(以及最終用戶的容易定製)而言是方便的,但是DDS文件通常是更好的長期選擇,因爲它們本身支持遊戲和交互式應用中常用的幾個特徵(BCn compressed texture formats,立方環境地圖,卷紋理等)。

+0

GLFW呢,這個問題中提到的函數有用嗎? – iammilind

+0

你是正確的,glfwReadImage()只加載TGA文件。再一次,只支持一種圖像格式不是世界末日;離線圖像格式轉換工具是一毛錢一打。但是如果你只支持一種格式,我仍然推薦使用TGA的DDS。 – postgoodism

2

你應該看看DevIL - 這可能正是你想要的。

+0

GLFW,這個問題中提到的函數有用嗎? – iammilind

+0

@iammilind:GLFW只有TGA圖像文件的代碼。所以它不是非常通用的。 – datenwolf