Я действительно не знаю, что не так (в основном потому, что я не знаю, что делает строка, выдающая мне ошибку).
Не думаю, что мне нужно показывать вам столько кода.
Я пытаюсь получить значения RGBA пикселя, чтобы увидеть, насколько велико значение Alpha.
Я использую это, чтобы определить, есть ли столкновение внутри их прямоугольников или нет.
Вот что у меня есть:
bool Texture2D::GetPixelAlphaValue(Vector2 pixel)
{
int bpp = surface->format->BytesPerPixel;
Uint8* p = (Uint8*) surface->pixels + (int) pixel.y * surface->pitch + (int) pixel.x * bpp);
Uint32 pixelColor = *(Uint32*)p;
Uint8 red, green, blue, alpha;
SDL_GetRGBA(pixelColor, surface->format, &red, &green, &blue, &alpha);
return alpha > 250;
}
Я почти уверен, что мое столкновение хорошо, что я делаю, я проверяю, пересекается ли прямоугольник, я создаю прямоугольник пересечения, а затем проверяю каждый пиксель в прямоугольнике пересечения.
Это приводит к тому, что когда у меня на экране появляется идеальное столкновение с пикселем, игра вылетает, и я получаю стрелку, указывающую на:
Uint32 pixelColor = *(Uint32*)p;
С ошибкой:
Unhandled exception at 0x000393b4 in OpenGLSDLTest.exe: 0xC0000005: Access violation reading location 0x063b6fd0.
Это строка, которую я не понимаю, может кто-нибудь объяснить, что делает эта строка и как я могу решить эту проблему?
С уважением
Markus