-2
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に渡します-すべて問題ないようです...

4

1 に答える 1

0

コード サンプルのように GL_RGB8/GL_BGR である必要がありますが、間違った画像形式 (GL_RGBA8/GL_BGRA) を設定したようです。私は自分自身をだましました。

于 2014-11-11T12:36:15.627 に答える