使用自动生成Mipmap时遇到的一些问题

在使用OpenGL实现纹理局部更新时,遇到glTexSubImage2D与gluBuild2DMipmaps配合的问题。gluBuild2DMipmaps在修改多层mipmap时,使用的是绝对坐标而非相对坐标,导致不适用于纹理更新。文章引用OpenGL Wiki建议使用GPU生成Mipmap,即设置GL_GENERATE_MIPMAP为GL_TRUE,但此方法需要OpenGL 1.4以上的硬件支持。同时,发现非2次幂纹理在915gm硬件上显示为白色,而在9600gt上正常,推测是硬件支持差异导致的问题。
摘要由CSDN通过智能技术生成

给纹理添加一个局部更新的功能,在用OpenGL实现时候找到了glTexSubImage2D这个函数

 

然后问题就开始了

首先是使用glTexSubImage2D时候需要指定mipmap纹理层,而mipmap的生成我目前使用了gluBuild2DMipmaps函数,于是在我尝试修改多层mipmap时发现:居然每一层的修改使用的是绝对坐标,而不是相对坐标

 

举个例子,如果修改了(16,16)~(32,32)这个范围的像素,那么每当采用更小一级的mipmap时候,所修改的纹理就会向+x和+y方向移动并扩大一倍,这是由于mipmap本身的原理决定的。所以这种方法不能采用。

 

在gamedev上看到说2000年左右时候调用gluBuild2DMipmaps还可以,现在就不需要这样做了

http://www.opengl.org/wiki/Texture_Mapping#How_to_create_a_texture

在这个链接上提示了一种方法使用gpu生成mipmap

这个方法需要硬件支持OpenGL 1.4以上(所幸我的915gm还可以支持^^)

 

mipmap本身没问题了,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值