Я пытаюсь загрузить две текстуры, а затем переключиться между ними в моей функции отображения. Я использую библиотеку ПОЧВЫ для загрузки текстур, как например:Переключение между текстурами, загруженными SOIL
tex_2 = SOIL_load_OGL_texture
(
"s9.png",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_MIPMAPS | SOIL_FLAG_COMPRESS_TO_DXT
);
tex_1 = SOIL_load_OGL_texture
(
"s8.png",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_MIPMAPS | SOIL_FLAG_COMPRESS_TO_DXT
);
А потом я использую
glBindTexture(GL_TEXTURE_2D, tex_1)
or
glBindTexture(GL_TEXTURE_2D, tex_2);
Для переключения между ними. Проблема в том, что я должен загружать их неправильно, и я не уверен, как это сделать. Независимо от того, какая текстура загружается последней (tex_1 в приведенном выше коде), я получаю текстуру, которую я получаю как tex_1, так и tex_2, когда пытаюсь переключиться с помощью glBindTexture. Есть идеи?
Перед загрузкой teaxtures настроить смешивания и включить текстуры и спрайты
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE);
glEnable(GL_TEXTURE_2D);
glEnable(GL_POINT_SPRITE);
glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
Тогда в моей функции отображения, I цикл по всем моим пунктам, которые я хочу сделать, и попытаться изменить текущую текстуру перед тем рисование точки с glVertex3f:
for(int i=0; i<num_particles; i++)
{
//select texture to use
if(class[i] == 2.0f)
glBindTexture(GL_TEXTURE_2D, tex_2);
else
glBindTexture(GL_TEXTURE_2D, tex_1);
glVertex3f(posn[3*i], posn[3*i+1], posn[3*i+2]);
}
цель состоит в том у меня есть два типа точек и спрайта, который можно сделать в каждой точке зависит от класса точка находится в
Вы должны разместить больше кода, так что мы можем на самом деле увидеть, что ваша проблема. –