在我的笔记本电脑(英特尔高清显卡)上,当我尝试绘制纹理时,它会正确包裹。但是,当我使用带有nvidia显卡的桌面时,它将不再包装,它将夹到0..1。我的图片加载编码发布在下面。如您所见,我明确设置纹理包装重复。
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 :(得分:0)
解决 它与Intel HD Graphics和Nvidia实施GLSL的方式有关。由于某种原因,它的实现并不像我的着色器程序那样将顶点坐标转换为纹理坐标。但是英特尔并不喜欢这样,除非我使用gltexcoordpointer映射tex坐标,否则无法工作。所以当我在nvidia上测试它时,我的旧着色器程序映射纹理坐标工作正常,nvidia的实现忽略了我的gltexcoordpointer映射。我只是通过使属性正确传入来解决它。