我发现很多程序员在编写3d系统的时候,都会反复强调使用opengl还是使用d3d.这其实是完全多余的,只是在浪费精力.如果出现了第三种非常流行的render engine该怎么办?为了编写looking,我研究了很多3d系统的源代码.它们中的大多数都会提出一个driver的概念.不同的driver代表不同的render engine,例如opengl或d3d.driver标准化了render engine的功能.对于3d系统来说,它并不关心到底使用什么driver. 【扩展信息:SCCS Chapter 5】
在研究t-junctions与编写t-junctions fix代码时,一个阴影始终在我的脑海里挥之不去:经过t-junctions fix后的polygon还能继续参加以后的切割运算么?我感觉,这是不可能的,毕竟很多t-junctions fix后的polygon已经是concave polygon了.t-junctions fix应该是3d系统中关于polygon切割最后一步完成的工作.那么,我在looking editor中进行csg操作时就忍受那些斑点么?这令我非常困惑.在这里我想说一下我调试csg的初衷.调试csg可以让我在相对简单的场景中调试bsp树与bsp算法.我可以很容易的看到结果是否正确,发现问题所在.现在看来,这个目的已经达到,并且收获要比最初想像的多得多.但是,显然新的问题出现了. 昨天,一位looking开发日记的读者发email给我,问我关于csg的问题.在这里我想谈谈我对csg的理解,希望有机会与感兴趣的程序员共同探讨.在调试csg前,我查阅了很多关于csg算法的文章.总的来说csg大体有两种实现方式: 1.基于polygon切割的算法. 2.基于渲染的算法. 基于polygon切割的算法相对比较麻烦,它把polygon进行某种形式的切割,然后有选择的丢弃无用的polygon.这种算法一般比较复杂,但最终的render速度是最好的.looking editor使用的就是这种算法,在切割polygon时使用的是bsp算法.基于render的算法实现相对简单一些,并且算法的种类也非常的丰富.在opengl的老家sgi有一篇使用stencil buffer渲染csg效果的文章http://www.sgi.com/software/opengl/advanced96/notes.html.另外,在internet上还有一篇使用z-buffer渲染csg的文章,我记不清楚文章的url了,不过文章的文件名是egsggh98.pdf,在google上应该很容易查到.基于render的算法总的来说是一种可见面分析算法. ... 下一页