Нарушение доступа glTexSubImage2D

class classOne
{
    ILuint id;

    unsigned char* data()
    {
        ilBindImage(id); 
        return ilGetData();
    }
}

class classTwo
{
    void method(classOne& some)
    {
        (...)
        glTexStorage2D(GL_TEXTURE_2D, 8, GL_RGB8, w, h);
        glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, w, h, GL_BGR, GL_UNSIGNED_BYTE, some.data());
        glGenerateMipmap(GL_TEXTURE_2D);
    }
}

Я получаю ошибку "нарушение прав доступа", когда моя программа обращается к glTexSubImage2D. Что я делаю неправильно?

Я установил GL_PIXEL_UNPACK_ALIGNMENT на 1. Хотя, если я попробую это

auto pdata = new unsigned char[some.dataSize()]; 
memcpy(data,some.data(),some.dataSize()) 

а затем передать pdata в glTexSubImage2D - все вроде бы нормально...

1 ответ

Кажется, я установил неправильный формат изображения - GL_RGBA8/GL_BGRA, в то время как он должен быть GL_RGB8/GL_BGR, как в моем примере кода. Я обманул себя.

Другие вопросы по тегам