Текстура OpenGL случайно не показана - PullRequest
8 голосов
/ 27 апреля 2010

У меня очень, очень странная проблема в моем C ++ OpenGL приложении.

Я просто загружаю текстуру и применяю ее к квадрике:

glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D, tex);
glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

Тогда

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex);
gluQuadricDrawStyle(quad,GLU_FILL);
gluQuadricTexture(quad,GL_TRUE);
gluCylinder(quad,1,0,2,20,1);
glDisable(GL_TEXTURE_2D);

Теперь: он отлично работает 9 раз из десяти, но иногда текстура не отображается (квадрика остается белой).

image загружен правильно, поэтому проблема должна быть с OpenGL. Я пробовал с несколькими разными изображениями тоже. Всегда GL_NO_ERROR.

Есть идеи? Это сводит меня с ума ...

Ответы [ 2 ]

2 голосов
/ 28 апреля 2010

Найдено :) Это был элемент GLint texture, который не был правильно перераспределен в конструкторе копирования.

Однако я до сих пор не понимаю, почему это иногда срабатывает ...

1 голос
/ 28 апреля 2010

Код, который вы используете, кажется действительным. Ты ...

  • пытался использовать простой четырехугольник вместо квадрики
  • заверил, что image заполнен правильно
  • проверено, что tex не изменено где-то еще
  • заверил, что другие программы не используют одновременно opengl
  • перезагрузил компьютер;)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...