[OpenGL] Warum "invalid operation"?
-
Hi,
ich hab eine Textureklasse geschrieben, in der sich über ein paar Parameter die Texturen steuern lassen. Wird an den Parametern gedreht, werden die Farbdaten (pixels) geändert und die Textur über glTexSubImage1D() aktualisiert.
Alles hat bisher prima funkrioniert, ich hab's in anderen Klassen verwendet. Nachdem ich aber für eine Klasse eine C-Schnittstelle (Texture-Klasse -> Anwender-Klasse -> C-Schnittstelle) geschrieben hab und darüber die Texture ändere, bekomme ich bei der Aktualisierung plötzlich einen Fehler (GL_INVALID_OPERATION):
glTexSubImage1D(GL_TEXTURE_1D, 0, 0, 256, GL_RGBA, GL_UNSIGNED_BYTE, pixels);Lt. Doku käme nur ein nicht initialisiertes Pixelarray in Frage, aber das kann eigentlich nicht sein:
GL_INVALID_OPERATION - The texture array was not defined by a previous glTexImage1D operation.
Außerdem funtkioniert der Aufruf problemlos aus der Anwenderklasse heraus. Die C-Schnittstelle verwendet die Klasse über eine statische Fkt.-Variable, quasi als Singleton. Der Fehler tritt auch nur auf, wenn das Alphabyte geändert wird und nicht wie per default 255 ist. Ich hab absolut keine Idee, wo ich nach dem Fehler suchen muss.

Habt ihr vllt. eine Tipp?
Grüße,
don_basto.//EDIT: Ergänzungen..
-
Hab's gefunden.

Es lag daran, dass ich einen neuen Renderkontext verwendet habe, aber die Texturdaten nicht komplett neu gesetzt hatte, sondern nur einen Texturausschnitt.
Grüße,
don_basto.