0
白盒我有我使用的顯示質感以下:OpenGL的顯示,而不是質地
glEnable (GL_BLEND);
glEnable(GL_TEXTURE_2D);
glBlendFunc (GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);
glGenTextures(1, tex);
glBindTexture (GL_TEXTURE_2D, *tex);
glBegin (GL_QUADS);
glTexCoord2f (tx, ty);
glVertex2f (sx, sy);
glTexCoord2f (tw, ty);
glVertex2f (sx + sxmax, sy);
glTexCoord2f (tw, th);
glVertex2f (sx + sxmax, sy + symax);
glTexCoord2f (tx, th);
glVertex2f (sx, sy + symax);
glEnd();
glDisable (GL_TEXTURE_2D);
glDisable (GL_BLEND);
我使用加載紋理如下:
GLuint GetTexture(string Filename)
{
GLuint tex_ID;
tex_ID = SOIL_load_OGL_texture(
Filename.c_str(),
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_POWER_OF_TWO
| SOIL_FLAG_MIPMAPS
| SOIL_FLAG_MULTIPLY_ALPHA
| SOIL_FLAG_COMPRESS_TO_DXT
| SOIL_FLAG_DDS_LOAD_DIRECT
| SOIL_FLAG_INVERT_Y
);
if(tex_ID > 0)
{
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex_ID);
return tex_ID;
}
else
{
cout<<"Texture failed to load"<<SOIL_last_result()<<Filename<<endl;
return 0;
}
}
,並通過引用傳遞到一個類
當我運行檢查,看看是否正確加載的紋理:
if(tex==0)
是。此外,每當我運行glColor3f();
與一些值時,屏幕上不顯示任何內容。 我做錯了什麼?
我使用glfw和SOIL來加載/顯示紋理。
嘗試做小步驟:首先加載紋理並嘗試渲染它(不啓用blening),然後添加混合。使用以下標誌加載紋理:SOIL_FLAG_INVERT_Y(僅一個標誌,僅用於測試)。如果你有工作紋理,然後嘗試添加混合... – fen
你有沒有在第一幀後重新'glEnable(GL_TEXTURE_2D)'? – genpfault
第一個代碼塊中的「tex」類型是什麼? – genpfault