У меня есть следующий код, который я использую для визуализации текстуры:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
glClearColor(0.0,0.0,0.0,0.0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, *tex);
glBegin (GL_QUADS);
glTexCoord2f (0.0, 0.0);
glVertex2f (sx, sy);
glTexCoord2f (1.0, 0.1);
glVertex2f (sx + sxmax, sy);
glTexCoord2f (1.0, 1.0);
glVertex2f (sx + sxmax, sy + symax);
glTexCoord2f (0.0, 1.0);
glVertex2f (sx, sy + symax);
glEnd();
glDisable(GL_TEXTURE_2D);
glDisable( GL_BLEND );
glClearColor(0.5,0.5,0.5,0.0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glPopAttrib();
Перед запуском этого кода я делаю следующее:
glGenTextures (1, tex);
Однако он просто генерирует белое поле на экране.
tex имеет тип GLuint и создается с использованием следующего:
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;
}
}
Я использую грунт для генерации текстуры и GLFW для ее отображения, все это на C ++. Что я сделал не так?
Запуск glgeterror возвращает код ошибки 1281
Задача ещё не решена.
Других решений пока нет …