小编dev*_*ner的帖子

Lua二维数组错误

所以我对 Lua 相当陌生,在其他语言中我已经能够创建一个 2D 变量数组并简单地通过该数组进行索引以创建一个平铺地图。每当我在 lua 中尝试这个时,我都会收到一个错误(特别是一个错误,指出我正在索引一个 nil 值)。我怎样才能解决这个问题?

代码

function love.load()
love.graphics.setColor(255,255,0)
tile = love.graphics.newImage("lightGrass.png")
map = { {1,1,0,0,0,0,0,0,0,0},
        {0,1,0,0,0,0,0,0,0,0},
        {0,1,0,0,0,0,0,0,0,0},
        {1,1,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0}
    }
end

function love.draw()
    for i = 0, 10 do
        for j = 0, 10 do
            newPos = map[i][j]
            if newPos == 0 then -- this is where the error is!!!!!!!!!!!!!!!
                love.graphics.draw(tile,j * 32, i * 32)
            end
        end
    end

end

function love.update(dt)

end
Run Code Online (Sandbox Code Playgroud)

indexing null lua for-loop love2d

5
推荐指数
1
解决办法
250
查看次数

SSE的条件语句

我正在尝试为我的游戏做一些计算,我正在尝试计算两点之间的距离.基本上,我正在使用圆的方程来查看这些点是否在我定义的半径范围内.

(x - x1)^2 + (y - y1)^2 <= r^2
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何用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);
Run Code Online (Sandbox Code Playgroud)

一旦我得到结果变量,我就迷路了.我如何使用刚刚得到的结果变量?我的计划是,如果评估的条件证明是真的,做一些光照计算,然后在屏幕上绘制像素.在这种情况下,我如何解释真实与虚假?

任何有关正确方向的帮助都非常感谢!

c++ conditional sse simd intrinsics

1
推荐指数
1
解决办法
717
查看次数

标签 统计

c++ ×1

conditional ×1

for-loop ×1

indexing ×1

intrinsics ×1

love2d ×1

lua ×1

null ×1

simd ×1

sse ×1