请告诉我,我应该为D3DRS_POINTSCALE_A,D3DRS_POINTSCALE_B,D3DRS_POINTSCALE_С设置哪些值来指定精灵,就像场景中的其他对象一样。参数A = 0 B = 0和C = 1(由F.D.Luna提出)不合适,因为刻度不够准确并且颗粒之间的距离(点精灵)可能大于它应该的距离。如果我将点精灵替换为广告牌,则粒子的比例是正确的,但渲染速度要慢得多。请帮助我,因为为我的任务渲染粒子的速度非常重要,但它们的精确度也非常重要。
Direct3D根据以下公式计算屏幕空间点大小: MSDN - Point Sprites我无法理解应为A,B,C设置哪些值以使缩放正确
P.S。对不起我的英语我来自俄罗斯
答案 0 :(得分:0)
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的平方)。