游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1885|回复: 5

哪位兄弟知道?

[复制链接]

7

主题

17

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2008-11-8 13:09:00 | 显示全部楼层 |阅读模式
哪位兄弟知道directx的sin函数怎么实现的啊????????
我测试了一下D3dxmatrixrotationX的旋转矩阵,我也写了一个类似的,可是性能上差了一倍多,
后来想了一下,估计是sin函数的问题,可是directx的数学函数库里没有sin函数,不知道它怎么实现的
速度这么快~~~,我用了n种方式,用了查sin表方法,还用了cordic的方法,用了泰勒级数,,,还是慢了一个档次~~~
不知道哪位兄弟能给个好点的算法>>>>>>>>>>>>>>>>谢谢~~~~~~~~~~~~

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2008-11-9 18:28:00 | 显示全部楼层

Re:哪位兄弟知道?

和sin函数无关。sin函数直接编译成cpu的sin指令,比你什么算法都快。

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2008-11-9 18:35:00 | 显示全部楼层

Re:哪位兄弟知道?

sin和cos可以一条cpu指令同时取得

5

主题

972

帖子

975

积分

高级会员

Rank: 4

积分
975
发表于 2008-11-9 21:31:00 | 显示全部楼层

Re:哪位兄弟知道?

求救,以下程序如何理解。关键是
__asm__ (
      "fsin"
      : "=t" (ret)
      : "0" (x)
   );
这几行

////////////////////////////////////////////////////////
double my_sin(double x)
{
   register double ret;
   __asm__ (
      "fsin"
      : "=t" (ret)
      : "0" (x)
   );
   return ret;
}//计算x(弧度表示)的正弦值。

int main()
{
   printf("%f\n",sin(0.5));
   printf("%f\n",my_sin(0.5));
   system("pause");
   return 0;
}

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2008-11-10 09:50:00 | 显示全部楼层

Re:哪位兄弟知道?

就是直接使用汇编指令计算sin。
记得VC有编译选项,可以指定sin等函数直接编译成fsin汇编指令

5

主题

972

帖子

975

积分

高级会员

Rank: 4

积分
975
发表于 2008-11-11 12:41:00 | 显示全部楼层

Re:哪位兄弟知道?

谢谢,但问题是我看不懂这种汇编啊

  : "=t" (ret)
  : "0" (x)
这些到底是什么东西?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-20 22:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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