为什么我不能在SDL2中绘制纹理?

时间:2017-11-12 16:12:23

标签: c++ sdl

所以我的主要目标是读取给定纹理的像素数据,因此为了测试这一点,我创建了一个具有目标访问权限的新纹理,然后将其绘制为红色。

问题在于,当我访问像素数据时,SDL_RenderReadPixels()表示音高为0,并且所有像素数据都为0.此外,当我尝试绘制新纹理时,它会变黑。

function generateValue(a, b)
{
    if (storedValues[a.id] != null && storedValues[a.id][b.id] !== null)
        return storedValues[a.id][b.id]
    else if (storedValues[b.id] != null && storedValues[b.id][a.id] !== null)
        return storedValues[b.id][a.id];
    else
        // Generate value, store it under a.id and return it
}

1 个答案:

答案 0 :(得分:2)

出于某种原因,您假设SDL_RenderReadPixels分配像素数组并返回结果音高;它既没有。调用侧传递像素阵列足够大以容纳数据及其正确的音调,例如:

Uint32 pixels[3*5];
int pitch = sizeof(Uint32)*3;

在C / C ++中,函数不直接修改输入参数,除非参数是引用类型(在C ++中),或者通过指针间接修改值,所以如果函数需要int - 它显然是输入参数,而不是输出。例如。看看SDL_CreateWindowAndRenderer,它输出窗口和渲染器指针,因此它的参数类型是指向指针的指针。