【问题标题】:Scaling of the point sprites (Direc3D 9)点精灵的缩放 (Direc3D 9)
【发布时间】:2018-05-01 01:22:47
【问题描述】:

请告诉我,我应该为 D3DRS_POINTSCALE_A、D3DRS_POINTSCALE_B、D3DRS_POINTSCALE_С 设置什么值,以便像场景中的其他对象一样缩放点精灵。参数 A = 0 B = 0 和 C = 1(由 F. D. Luna 提出)不合适,因为比例不够准确,并且粒子(点精灵)之间的距离可能大于应有的距离。如果我将点精灵替换为广告牌,粒子的比例是正确的,但渲染速度要慢得多。请帮助我,因为我的任务渲染粒子的速度非常重要,但它们的精确比例也非常重要。

Direct3D 根据以下公式计算屏幕空间点的大小: MSDN - Point Sprites我不明白应该为A,B,C设置什么值来缩放是正确的

附:对不起我的英语我来自俄罗斯

【问题讨论】:

    标签: directx rendering scaling particle-system


    【解决方案1】:

    Directx 使用这个函数来确定一个点的缩放大小:

    out_scale = viewport_height * in_scale * sqrt( 1/( A + B * eye_distance + C * (eye_distance^2) ) )
    

    eye_distance 由以下方式生成:

    eye_position = sqrt(X^2 + Y^2 + Z^2)
    

    所以回答你的问题:

    D3DRS_POINTSCALE_A 是常数

    D3DRS_POINTSCALE_B 是线性元素(缩放 eye_distance)和

    D3DRS_POINTSCALE_C 是二次元(缩放 eye_distance 的平方)。

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多