OpenGL ES平铺与重叠贴图的思考
太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)
本文遵循“署名-非商业用途-保持一致”创作公用协议
。。。。。。
前面省略了一些想说的话,但由于存在消极因素,故而删去,这里更注重提醒:本文中所想传达的知识可能并没有潜在传达的思考问题的方式更重要!
删除一堆废话之后,也没什么太多的细节,正题就是个引子:
1、任何一个从3dmax导出的模型中,都可能存在多个几何体,以导出obj格式为例,从第一行开始向后,每一行以一个v或vn或vt或f开头是有用的信息,按这个次序,的多个v接着多个vn,再接着多个vt,再接着多个f,算做一组数据,互相关联索引,代表着一个几何体,从3dmax导出时的注释上也可以看得出来,不过我们还是以实际规律作为解析的依据。
上面说的,多个接着多个,再接着多个,明白吗?不明白?没关系,去导出一个看看就知道了。
我们可以给一个几何体贴图,网上的例子多也是给一个几何体贴一张图。
那么,多个几何体,其实是要把一个几何体相关的操作部分都重来一遍,不信,试试,确实可行;
2、一个几何体,就一套V,一套VT,一套VN,一套F,要平铺式地贴多张图,这个在3dmax导出的obj中可以看到,在一堆f开头的行中,有些会以usemtl开头,这表示其后的f共用这一个材质,具体使用的材质在同埋导出的同名mtl文件中能找到,其中有可能找到图片。
这样一来,是否可以考虑针对一组v/vt/vn共用,来考虑一个usemtl下面的多个f作为一个整体呢?
之前一直不明白的一个概念,在这里可能有解了,那就是网格,之所以叫网格,而不叫几何体,是因为未封闭。
几何体是由三角形组成的,而网格也是由三角形组成的,而网格往往是指一个内何体表面的一部分。
到这里,概念比较清晰了,但具体能不能按这种方式处理,暂时因整体的处理逻辑还不提练出来,还无法测试得出结论,但可以初步断定是可行的,源于之前的一些错误提供数据后,一个几何体居然只呈现了一个面,即然错误的时侯面是可以呈现的,而错误本身只是数据的错误,而非OpenGL ES本射的错,那么,是否可以论证呢,这个也不好说,因为我也不太清楚这个论据是否充分,还是以最后实践结果而下结论吧。
期待吧。
错误和异常是两个不同的概念,错误是不应该存在的,而异常是可预见的多种情况的友善提示。至于bug,其本身也是不应该存在的,只不过它可能是程序逻辑上的,也可能是业务逻辑的,更可能是架构设计上的,或许有时为了简化和短期目标,可能允许bug存在,而简化进程,但终究是不应该存在的。不过这世上还真的不存在没有bug的程序,就像人无完人一样。真有存在完人的那一天,就有可能存在无bug的程序的。