0
glBindTexture(GL_TEXTURE_2D, texidx);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 512, 0, GL_RGBA, GL_FLOAT, texdata);
如果texidx == 0
一切完美,但如果texidx != 0
,或使用glGenTexture(&texidx,1)
产生,最终的表现说明只是纯色(最后glColor)而不是质感。我一直在调试超过一天(glGetError显示没有问题)并且正在用尽想法。有什么想法吗?我可以根据需要发布更多代码。OpenGL的工作不
设置代码:
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glDisable(GL_LIGHTING);
glClearColor(0.5,0.5,0.5,0);
glClearDepth(1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glDisable(GL_COLOR_MATERIAL);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
嘿马蒂亚斯讨论,这是一个非常好的问题,但在这种情况下是没有问题的,因为我使用GL_NEAREST。我已经在上面添加了我的设置代码以帮助澄清。 如上所述,奇怪的TexId = 0是唯一正确适用于我的情况。 – Meekohi 2010-06-11 12:02:47
啊哈,但是我需要为每个纹理(杜)设置过滤器。 确保运行后问题得到修复 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); IMMEDIATELY在绑定纹理后,并且在glTexImage2D()之前。 :: sigh ::如果openGL在这种情况下有一些合理的行为,或者至少会引发一个错误,它会不会很好? – Meekohi 2010-06-11 12:11:23
详见:http://www.opengl.org/wiki/Common_Mistakes#Creating_a_Texture_.232.2C_glTexEnvi – Meekohi 2010-06-11 12:11:44