2014-02-19 30 views
0

在我的筆記本電腦(英特爾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高清顯卡和Nvidia執行GLSL做。出於某種原因,它的Inte l實現不像我的着色器程序那樣將頂點座標轉換爲紋理座標。但是英特爾並沒有這樣做,除非我使用gltexcoordpointer映射tex座標系,否則無法工作。所以當我在nvidia上測試出來的時候,我繪製紋理座標的舊着色器程序運行良好,nvidia的實現忽略了我的gltexcoordpointer映射。我只是通過正確傳入屬性來解決它。

相關問題