簡體   English   中英

如何使用Opengl加載和顯示紋理

[英]How to load and show a texture with Opengl

我一直在嘗試使用C ++中的FreeImage顯示圖像,並且在執行此操作時遇到了很多麻煩。加載函數似乎加載了圖像,但它似乎沒有綁定圖像。 這是我到目前為止所得到的:

    GLuint Load(){
string imgdir = "Path to my file";
FREE_IMAGE_FORMAT fif = FreeImage_GetFIFFromFilename(imgdir.c_str());
FIBITMAP *bitmap = FreeImage_Load(fif,imgdir.c_str(),0);
int height, width;
height = FreeImage_GetHeight(bitmap);
width = FreeImage_GetWidth(bitmap);
GLuint textureid;
glGenTextures(1, &textureid);
glBindTexture(GL_TEXTURE_2D, textureid);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, width, height, 0, GL_RGBA,        GL_UNSIGNED_BYTE, bitmap);
FreeImage_Unload(bitmap);
return textureid;}

void Square(){
glBindTexture(GL_TEXTURE_2D, tex);
glBegin(GL_QUADS);
glTexCoord2f(0.0, 0.0);glVertex3f(0.0, 0.0, 0.0);
glTexCoord2f(1.0, 0.0);glVertex3f(3.0, 0.0, 0.0);
glTexCoord2f(1.0, 1.0);glVertex3f(3.0, 5.0, 0.0);
glTexCoord2f(0.0, 1.0);glVertex3f(0.0, 5.0, 0.0);
glEnd();}

使用這個我得到的只是一個白色的矩形。 任何正確方向的點都將受到贊賞。

你沒有傳遞這些位,而是傳遞了freeimage對象。 您可以使用類似的東西來獲取實際位:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height,
0, GL_BGRA, GL_UNSIGNED_BYTE, (void*)FreeImage_GetBits(bitmap));

確保輸入圖像的格式與RGBA匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM