查看: 4070|回复: 6

浮点纹理的MipMap问题

[复制链接]

该用户从未签到

发表于 2008-3-28 11:34:23 | 显示全部楼层 |阅读模式
请教一个问题:怎样用OSG做浮点纹理的MipMap?OpenGL中glTexImage2D()可以指定某个MipMap层纹理的数据,OSG中怎样指定某个MipMap层纹理的数据?

该用户从未签到

发表于 2008-3-28 12:22:48 | 显示全部楼层
申请一个二维数组,再指定就行了,,和OPENGL中的差不多~~~~

该用户从未签到

发表于 2008-3-28 13:14:34 | 显示全部楼层
原帖由 yonjin 于 2008-3-28 11:34 发表
请教一个问题:怎样用OSG做浮点纹理的MipMap?OpenGL中glTexImage2D()可以指定某个MipMap层纹理的数据,OSG中怎样指定某个MipMap层纹理的数据?


OSG的源代码中有一个很好的例子:
osgParticle/PrecipitationEffect.cpp,参看里面的createSpotLightImage函数。
包括Image::data数据的录入,MipmapDataType列表的使用,以及Image::setMipmapLevels函数的使用,都可以在其中找到
基本的步骤为:
1、将各层的Mipmap图片数据按照从大到小的顺序(且尺寸必须为2的倍数)依次存放到一个unsigned char*数组中,中间不能有不知名的数据信息,将这个数组使用setImage送入Image对象;
2、将各层图片数据在数组中的偏移地址记录到一个Image::MipmapDataType列表中,这个列表用于帮助OSG选择正确的明细层次图形;
3、使用setMipmapLevels将MipmapDataType送入Image对象,这一步的次序和setImage不能颠倒,否则可能无法正确实现Mipmap的显示。

[ 本帖最后由 array 于 2008-3-28 13:23 编辑 ]

该用户从未签到

发表于 2008-3-28 14:33:45 | 显示全部楼层
void Texture2DArray::Extensions::glTexImage3D  ( GLenum  target,  
  GLint  level,  
  GLenum  internalFormat,  
  GLsizei  width,  
  GLsizei  height,  
  GLsizei  depth,  
  GLint  border,  
  GLenum  format,  
  GLenum  type,  
  const GLvoid *  pixels   
)   const

该用户从未签到

发表于 2008-3-28 14:53:13 | 显示全部楼层
刚才仔细看了一下文档,我认为在OSG中默认的就是二维纹理映射,不过,是你要设置一些不同的参数,OSG把这些给封装起来了而已~~否则,除非你使用上面的3D纹理映射~~~~~~个人是这么理解的,也不知道对不对,呵呵~~~~~

该用户从未签到

 楼主| 发表于 2008-3-28 15:54:47 | 显示全部楼层
谢谢!array的方法是我想要的。Texture2DArray不是用来做MipMap的,它所有的纹理大小要一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表