Я пытаюсь изолировать одного игрока через камеру глубины Kinect. Я открываю поток NUI_IMAGE_TYPE_DEPTH_AND_PLAYER_INDEX
для обработки информации о проигрывателе/глубине. Код, который я использую, чтобы сделать игрока это:Изолирующий плеер в глубине камеры Kinect
if (LockedRect.Pitch != 0) {
USHORT* curr = (USHORT*) LockedRect.pBits;
const USHORT* dataEnd = curr + ((width/2)*(height/2));
index = 0;
while (curr < dataEnd && playerId != 0) {
USHORT depth = *curr;
USHORT realDepth = NuiDepthPixelToDepth(depth);
BYTE intensity = 255;
USHORT player = NuiDepthPixelToPlayerIndex(depth);
// Only colour in the player
if (player == playerId) {
for (int i = index; i < index + 4; i++)
dest[i] = intensity;
}
else {
for (int i = index; i < index + 4; i++)
dest[i] = 0;
}
index += 4;
curr += 1;
}
}
dest
является OpenGL текстуры.
Проблема, с которой я сталкиваюсь, заключается в том, что переменная player
изменяется, когда второй человек входит в кадр и заставляет человека, нарисованного в текстуре, быть новым человеком.