Mipmapping in OpenGL

Mipmapping in OpenGL

本文关键字:OpenGL in Mipmapping      更新时间:2023-10-16

我有很多麻烦让地图工作。我使用的是OpenGL 1.1,我没有glu,所以我使用以下纹理初始化代码:

<>之前&texname glGenTextures(1日);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 =宽度;h =身高;(int i = 0; i之前

变量:<>之前//数据类型:Unsigned long int *tex[20];Int mipmaps, width, height, w, h;GLuint texname;之前

tex是保存纹理mipmap像素数组列表的数组。mipmap被正确处理(我单独测试了它们)。mipmaps是将原始图像减少到1x1像素纹理的mipmaps的数量(原始纹理是256x256 -因此在代码中这一点是8)。widthheight是原始纹理的尺寸(256x256)。

结果是它甚至不使用纹理。所有的东西看起来都是平灰色的(由于照明的灰色)。

我是不是忘了什么?我已经检查了这个引用,没有发现任何冲突。

其他细节:总的来说,我启用GL_DEPTH_TEST, GL_TEXTURE_2D, GL_LIGHTING, GL_CULL_FACE, GL_FOG(和GL_LIGHT0, GL_LIGHT1,这可能没有什么区别)。此外,我正在使用Mesa 3D的OpenGL实现(Mesa 4.0版本转换为OpenGL 1.3版本),如果这可能与它有关的话。

编辑:

问题是,当我将GL_NEAREST_MIPMAP_NEAREST更改为GL_NEAREST时,纹理工作良好(不使用mipmaps)。所以,我不知道它怎么可能是其他的代码至少我想不出它可能是什么

mipmaps的值为8。您的图像是256x256。因此,你应该有9个级别的mipmapping(256,128,64,32,16,8,4,2,1)。如果缺少一个,你将失去你的纹理。