Frage

Kann jemand sehen, was mit diesem Code falsch?

SIZE_BG ist 6MB wie ich versuche, ein großes Bitmap-Bild (3366x600) zu zeichnen. Ich benutze malloc mein Bild zu verhindern, dass der Stapel überläuft. Ich erhalte eine Zugriffsverletzung auf dem Aufruf von glDrawPixels (). bgPtr scheint sich auf die richtigen Daten zu zeigen, wie ich die ersten paar Bytes überprüft, bevor glDrawPixels aufrufen und sie korrekt sind.

    bgPtr = (char*)malloc(SIZE_BG);
    fstream inFile(texFileName, ios::in | ios::binary);
    inFile.read(bgPtr, SIZE_BG);
    inFile.close();

//... other code

    glDrawPixels(3366, 600, GL_BGRA_EXT, GL_UNSIGNED_BYTE, bgPtr+54);
War es hilfreich?

Lösung

  

SIZE_BG ist 6 MB

3366 × 600 ist etwa 1,92 Millionen Pixel
BRGA zeigt 4 Bytes pro Pixel
so, 3366 × 600 × 4 ist etwas mehr als 7.7MB

Daher Ihre Puffer zu klein ist ... glDrawPixels() über das Ende in nicht zugewiesenen Speicher gelesen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top