如何消除Direct3D中的锯齿? -- 关于Mesh.TessellateNPatches的使用

堆烟 2007-12-10 09:22:01
我通过Mesh.Cylinder和Mesh.Cone得到的圆柱和三角锥来生成3D坐标轴,在非特定角度会出现非常明显的锯齿。。。
只是为了得到三维坐标轴,没有其他的任何需要。

打算使用Mesh.TessellateNPatches细分Mesh来消除锯齿现象:
cylinder是一个Mesh。下面的代码隐去了异常处理部分。

VertexBuffer vb = cylinder.VertexBuffer;
GraphicsStream adj = vb.Lock(0,0,0);
Mesh tmp = Mesh.TessellateNPatches( cylinder, adj, 4, true);
if( tmp != null) cylinder = tmp;
....

在执行到语句tmp = Mesh.TessellateNPatches( cylinder, adj, 4, true);时会抛出异常,是不是不能这样调用啊?
谢谢了。。。。
...全文
148 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
堆烟 2007-12-19
  • 打赏
  • 举报
回复
哦,我找了一下,可以通过Device.SetRenderState来设置。谢谢了。
lanzhengpeng2 2007-12-13
  • 打赏
  • 举报
回复
你的方法无法消除锯齿。
锯齿不是因为三角形多少的原因出现的,而是采样问题。
直接应用D3D的全屏反锯齿选项吧,效果会好一些。

关于锯齿的理论,建议你:一、读一读采样和重采样的数据;二、详细了解现代3D图形的绘制流程(无论是D3D还是OpengGL)。

4,499

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧