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 для загрузки / отображения текстур.

0

Решение

glEnable (GL_BLEND);
glBlendFunc (GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);
glGenTextures(1, tex);
^^^^^^^^^^^^^^^^^^^^^ I hope tex didn't have anything important in it...
glBindTexture (GL_TEXTURE_2D, *tex);
glBegin (GL_QUADS);
....

Вы создаете совершенно новый пустой текстура каждый кадр. Который также случается неполный.

Создать текстуру один раз и использовать это.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]