2014-02-19 16 views
0

На моем ноутбуке (графическая карта Intel HD), когда я пытаюсь нарисовать текстуру, она будет обертываться правильно. Однако, когда я использую свой рабочий стол с графической картой nvidia, он больше не будет завершаться, и он будет зажимать 0..1. Ниже приведено мое кодирование загрузки изображений. Как вы можете видеть, я явно устанавливаю, чтобы обертка текстуры повторялась.OpenGl 2d Повторение текстуры (разные результаты на разных устройствах)

int x, y, comp; 
GLuint texID; 
unsigned char* data = stbi_load(filename, &x, &y, &comp, 0); 
glGenTextures(1, &texID); 
glBindTexture(GL_TEXTURE_2D, texID); 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, x, y, 0, (comp == 3) ? GL_RGB : GL_RGBA, GL_UNSIGNED_BYTE, data); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
stbi_image_free(data); 
m_resourceMap[resID] = texID; 

ответ

0

решаемые Он должен был сделать с тем, как Intel HD Graphics и Nvidia реализовать GLSL. По какой-то причине реализация Inte l не понравилась моей шейдерной программе, которая преобразует координаты вершин в координаты текстуры. однако Intel не понравилось и не будет работать, если я не сопоставил текс-coords с использованием gltexcoordpointer. поэтому, когда я тестировал его на nvidia, моя старая шейдерная программа, которая отображала координаты текстуры, работала нормально, и реализация nvidia игнорировала мое сопоставление gltexcoordpointer. Я решил это, просто передав атрибут правильно.

Смежные вопросы