困扰了我一天的BUG,哎!

开始学习OpenGL的纹理映射,开始基本照着教程默写一遍代码,运行,没结果

 

后又对了对纹理的设置那块,都一样啊,咋就出不来纹理呢。

 

后来才发现,原来是我设置了

 

glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST );

但却没有给自己的纹理数据建立mipmap,这样上面的语句就会失败,而此函数并不返回任何值,没法排错。

 

要想让上述语句有效,需建立自己的mipmap,幸好glu.h提供了这个函数

gluBuild2DMipmaps( GL_TEXTURE_2D, 3, width, height, GL_RGB, GL_UNSIGNED_BYTE, data );

总结,必须建立了mipmap之后,才能设置纹理的各种带mipmap的过滤方式,即:

GL_NEAREST_MIPMAP_NEAREST
GL_LINEAR_MIPMAP_NEAREST
GL_NEAREST_MIPMAP_LINEAR
GL_LINEAR_MIPMAP_LINEAR

要是不建立mipmap,就只能使用以下两种过滤方式:

GL_LINEAR
GL_NEAREST

你可能感兴趣的:(音视频处理,filter,byte)