C++ OpenGL中的Mipmapping

C++ OpenGL中的Mipmapping,c++,opengl,mipmaps,C++,Opengl,Mipmaps,我很难让mipmaps正常工作。我使用的是OpenGL 1.1,我没有glu,所以我使用以下纹理初始化代码: glGenTextures(1,&texname); glBindTexture(GL_TEXTURE_2D,texname); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); gl

我很难让mipmaps正常工作。我使用的是OpenGL 1.1,我没有glu,所以我使用以下纹理初始化代码:

glGenTextures(1,&texname); glBindTexture(GL_TEXTURE_2D,texname); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST_MIPMAP_NEAREST); w=width;h=height; for(int i=0;i<mipmaps;i++,w/=2,h/=2) glTexImage2D(GL_TEXTURE_2D,i,GL_RGBA8,w,h,0,GL_RGBA,GL_UNSIGNED_BYTE,tex[i]); glGenTextures(1,&texname); glBindTexture(GL_TEXTURE_2D,texname); glTexParameteri(GL_纹理2D、GL_纹理包裹S、GL_重复); glTexParameteri(GL_纹理2D、GL_纹理包裹、GL_重复); glTexParameteri(GL_纹理2D,GL_纹理MAG_过滤器,GL_最近); glTexParameteri(GL\u纹理\u 2D、GL\u纹理\u最小\u过滤器、GL\u最近的MIPMAP\u最近的); w=宽度;h=高度;
对于(int i=0;imipmap的值是8。您的图像是256x256。因此,您应该有9个mipmap级别(256128,64,32,16,8,4,2,1)。如果缺少一个,你会失去你的纹理。

glGenerateMipmap在1.1中可用吗?不-我研究过,我认为它是在3.0中添加的。当你不尝试生成MIPMAP时,有什么问题吗?嘿,没有!这就是为什么它如此奇怪。事实上,为了让它工作,我只需更改GL_NEAREST_MIPMAP_NEAREST to GL_NEAREST,然后突然它就工作了s、 但是不使用mipmap。mipmap的值和tex的数据类型是什么? // data types: unsigned long int *tex[20]; int mipmaps, width, height, w, h; GLuint texname;