所以我的主要目标是读取给定纹理的像素数据,因此为了测试这一点,我创建了一个具有目标访问权限的新纹理,然后将其绘制为红色。
问题在于,当我访问像素数据时,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
}
答案 0 :(得分:2)
出于某种原因,您假设SDL_RenderReadPixels
分配像素数组并返回结果音高;它既没有。调用侧传递像素阵列足够大以容纳数据及其正确的音调,例如:
Uint32 pixels[3*5];
int pitch = sizeof(Uint32)*3;
在C / C ++中,函数不直接修改输入参数,除非参数是引用类型(在C ++中),或者通过指针间接修改值,所以如果函数需要int
- 它显然是输入参数,而不是输出。例如。看看SDL_CreateWindowAndRenderer
,它输出窗口和渲染器指针,因此它的参数类型是指向指针的指针。