У меня есть текстура, которую я отображающая используя следующее: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 (только один флаг, просто для проверки). Если у вас есть рабочая текстура, тогда попробуйте добавить blending ... – fen
Вы когда-нибудь перегружаете 'glEnable (GL_TEXTURE_2D)' после первого кадра? – genpfault
Какой тип 'tex' в первом блоке кода? – genpfault