У меня есть некоторый (OpenCV) код, который генерирует изображения.Я показываю их с помощью OpenGL.Когда создаются новые изображения, я запускаю следующую функцию (каждый раз) с тем же именем texture
и новым image
:
void loadCVTexture(GLuint& texture, const cv::Mat_<Vec3f>& image){
if(texture != 0){
glBindTexture(GL_TEXTURE_2D, texture);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, image.cols, image.rows, GL_BGR, GL_FLOAT, image.data);
} else {
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, 3, image.cols, image.rows, 0, GL_BGR, GL_FLOAT, image.data);
}
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}
Я инициализирую первое изображение до glutMainLoop()
и отображается правильно.Дается идентификатор 1
.Когда я обновляю изображение снова, изображение не меняется.(Я подтвердил, что вызывается функция отображения и что изображение другое.)
Редактировать: Еще одна подсказка, у меня есть подокна.Если я закомментирую другое окно, код будет работать как положено.