條件語句我想爲我的遊戲做了一些計算,我試圖來計算兩個點之間的距離。實質上,我使用圓的方程來查看點是否在我定義的半徑內。與SSE
(x - x1)^2 + (y - y1)^2 <= r^2
我的問題是:我如何用SSE評估條件語句並解釋結果?到目前爲止,我有這個:
float distSqr4 = (pow(x4 - k->getPosition().x, 2) + pow(y4 - k->getPosition().y, 2));
float distSqr3 = (pow(x3 - k->getPosition().x, 2) + pow(y3 - k->getPosition().y, 2));
float distSqr2 = (pow(x2 - k->getPosition().x, 2) + pow(y2 - k->getPosition().y, 2));
float distSqr1 = (pow(x1 - k->getPosition().x, 2) + pow(y1 - k->getPosition().y, 2));
__m128 distances = _mm_set_ps(distSqr1, distSqr2, distSqr3, distSqr4);
__m128 maxDistSqr = _mm_set1_ps(k->getMaxDistance() * k->getMaxDistance());
__m128 result = _mm_cmple_ps(distances, maxDistSqr);
一旦我得到結果變量,我迷路了。我如何使用剛剛得到的結果變量?我的計劃是,如果條件評估結果是真的,則進行一些照明計算,然後在屏幕上繪製像素。在這種情況下,我如何解釋真與假?
朝着正確方向邁出的任何幫助,非常感謝!
我不知道我完全理解你的問題;例如,您可以執行'_mm_and_ps(距離,結果)'來清除超出範圍的值。 –
順便說一句,也許它只是爲了簡潔,但你爲什麼不在SSE中做'(x - x1)^ 2 +(y - y1)^ 2'? –