我在三星Galaxy变体上遇到了白色纹理问题,但在我测试的其他手机上,纹理正常工作。那么我的问题是,通常会导致这种行为的罪魁祸首是什么? Galaxy变体是否具有特殊硬件且缺少某些功能?
我的纹理加载代码如下:
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glPixelStorei(GL_UNPACK_ALIGNMENT, 2);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,GL_MODULATE);
if(alpha)glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*) image_data);
else glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, (GLvoid*) image_data);
绘图通常使用GL_TRIANGLES。
*我面前没有实际的设备,所以无法进行glGetError操作。
image_data
是什么样子。行是否对齐在任何边界上?如果你的纹理是RGBA格式,它们应该始终是dword对齐的,所以1或4都可以。如果它们是RGB格式,并且你没有任何行填充,那么你需要一个值为1。 - Tim