Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

26.07.2013, 06:29

OpenGL: Bind Texture Problem

Hi Leute,
ich habe folgendes Problem:

Wenn ich eine Textur zum Sample'n an meinen Shader übergeben will, mache ich normalerweise folgendes:

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, TextureID);
glUniform1i(SamplerLocation, 0);



...und wenn ich mehrere übergeben will, folgendes:

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, TextureID);
glUniform1i(SamplerLocation, 0);



glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, TextureID2);
glUniform1i(Sampler2Location, 1);


Als dies einem neuen Projekt wiederholt habe, wirft OpenGL mir bei glUniform1i einen Fehler aus: "Invalid operation", die Textur wird aber dennoch an den Sampler übergeben. Wenn ich im Shader nun z.B. vier Sampler habe, werden alle zur ersten Textur, die ich übergeben habe, also "TextureID". Und lasse ich glUniform1i ganz weg, wird die Textur immer noch übergeben. ?!?!
Ich habe bereits überprüft ob "glGetUniformLocation" einen Fehler ausgibt.


Kann mir jemand erklären warum dieser Fehler auftritt?


MfG
RenX

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

2

26.07.2013, 11:20

Benutz bitte Code Tags. Und etwas mehr Code wäre hilfreich.

Ansonsten wüsste ich gerade nicht was du falsch machst.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

26.07.2013, 11:37

Wie genau hast du überprüft ob glGetUniformLocation() nicht fehlschlägt? Bist du dir sicher, dass die Invalid Operation vom glUniform1i() kommt?

4

26.07.2013, 18:49

Oh mein Gott, fühle ich mich jetzt dumm... :D
Ich habe glUniform1i aufgerufen bevor ich glUseProgram aufgerufen habe... :D

Werbeanzeige