OpenGL命名纹理不起作用

时间:2010-06-11 08:54:02

标签: opengl textures

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显示没有问题)并且我的想法已经用完了。有什么想法吗?我可以根据需要发布更多代码。

设置代码:

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);

1 个答案:

答案 0 :(得分:2)

TexID不能为零,这是默认纹理或没有纹理。

问题是默认的OpenGL缩小过滤器使用mipmaps,但是没有提供常见错误,将MIN / MAG过滤器更改为可用的东西,如GL_LINEAR或GL_NEAREST,并且纹理可以正常工作。

http://www.opengl.org/wiki/Common_Mistakes#Creating_a_Texture

中讨论了更多信息(以及其他常见错误)