赞
踩
给纹理添加一个局部更新的功能,在用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本身没问题了,
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。