游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4531|回复: 10

请指教:我相使用DirectX9做一个另类的应用

[复制链接]

2

主题

10

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2004-3-31 11:46:00 | 显示全部楼层 |阅读模式
   大家都想使用DirectX 、OpenGL做3D游戏,我却想用它们来显示矢量图形(说白了就是类似于CAD的东西啦)。因为我发现在观察矢量图形文件的时候全部由CPU计算几何图形投影到屏幕上的线,负荷很重,速度比较慢(100K条线以上的时候...),因此我想利用显卡的T/L功能(相当于多了一个CPU,多好的事情...)。然而我翻SDK的时候,发现DDraw不支持这种几何变换,D3D又没有绘制线、填充一个区域的功能。请教,如何在D3D中绘制一条线之类的(难道需要我用三角形模拟?)?如何填充2个或多个嵌套多边形构成的区域?
  

5

主题

255

帖子

255

积分

中级会员

Rank: 3Rank: 3

积分
255
发表于 2004-3-31 12:28:00 | 显示全部楼层

Re:请指教:我相使用DirectX9做一个另类的应用

学习

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-3-31 13:31:00 | 显示全部楼层

Re:请指教:我相使用DirectX9做一个另类的应用

D3D的DrawPrimitive可以绘制线的。
不过填充区域确实很难,因为填充算法本身就是一递归过程。

42

主题

140

帖子

203

积分

中级会员

Rank: 3Rank: 3

积分
203
发表于 2004-3-31 14:16:00 | 显示全部楼层

Re:请指教:我相使用DirectX9做一个另类的应用

多边形构成的区域转化成凸包,就可用三角面绘制了。
其实很少有CAD图纸达到100K条线

2

主题

10

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2004-3-31 14:52:00 | 显示全部楼层

Re:请指教:我相使用DirectX9做一个另类的应用

CAD图纸达到100K线,主要是因为我设想的系统中最后都是画线...因为如果使用Truetype字体,一个汉字就可以高达200个以上的线。一个圆,缺省也会有32条以上的线。因此,100K线,几兆的图形就有了。至于要填充,主要就是那个Truetype文字绘制的原因。之所以不直接使用D3D中的文字显示功能,是因为CAD系统往往会对文字有很多变换,比如竖写,旋转写,等等。
    另外,还请各位大侠指教,能否在D3D中直接生成出贝赛尔曲线(其实Truetype字体轮廓就是)

2

主题

10

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2004-3-31 14:59:00 | 显示全部楼层

Re:请指教:我相使用DirectX9做一个另类的应用

其实心里很矛盾的,GDI提供的功能倒是很齐全的,比如生成贝塞尔曲线Polybesier,比如连续画线的Polyline函数,比如BeginPath/EndPath函数之类的填充。问题就是所有的计算都需要CPU,这在小图形没有任何问题,图形量大(几兆的图形)以后就很慢。有那么多硬件加速功能的显卡没有利用上...DirectX为什么就没有那些函数呢?做个缺省的也好啊。各位大侠觉得呢?

42

主题

140

帖子

203

积分

中级会员

Rank: 3Rank: 3

积分
203
发表于 2004-3-31 19:38:00 | 显示全部楼层

Re:请指教:我相使用DirectX9做一个另类的应用

Truetype中文字体填充计算是很消耗
不过不是每次都要重算,如CAD平移,旋转操作
缩放操作AutoCAD好象优化的非常好,不知道他是如何处理的

2

主题

10

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2004-3-31 21:17:00 | 显示全部楼层

Re:请指教:我相使用DirectX9做一个另类的应用

关于这些中文字体填充计算,目前我能想到的只是三角化方法,就是把字体轮廓三角化然后再逐个绘制/填充三角形.这个方法无论是效率还是效果都不是很好,能否有更强的方法?迷惑中~~

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2004-4-2 13:28:00 | 显示全部楼层

Re:请指教:我相使用DirectX9做一个另类的应用

OpenGL比较合适做这个的。有 NURBS 的功能。没有见过几个 CAD软件用 D3D di

187

主题

600

帖子

606

积分

高级会员

Rank: 4

积分
606
QQ
发表于 2004-4-6 17:59:00 | 显示全部楼层

Re:请指教:我相使用DirectX9做一个另类的应用

用OpenGL哪!
我讨厌D3D
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-5-16 16:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表