Ich bin glücklich mit der SpriteBatch-Klasse des LibGDX Framework. Mein Ziel ist es, die Darstellung des Sprites durch einen Shader zu ändern.LibGDX SpriteBatch Multitexture möglich?
batch = new SpriteBatch(2, shaderProgram);
Ich kopierte den Standard Shader aus der Spritebatch-Klasse und hat eine andere Uniform Sampler 2d
+ "uniform sampler2D u_Texture2;\n"//
Gibt es eine funktionierende Weg, um die Textur auf den Shader zu geben. So geht es immer in einem ClearColor-Bildschirm.
batch.begin();
texture2.bind(1);
shaderProgram.setUniformi("u_Texture2", 1);
batch.draw(spriteTexture,positions[0].x,positions[0].y);
batch.draw(spriteTexture,positions[1].x,positions[1].y);
batch.end();
Jede Textur allein funktioniert. Das manuelle Zeichnen mit Hilfe der Mesh-Klasse funktioniert wie erwartet. Was kann ich tun, um den Komfort von SpriteBatch zu nutzen?
THX für Hilfe
hey endlich bekam ich eine Antwort, danke! Sie haben Recht. Es ist der Grund dafür, wie die Klasse die Textur bindet. Ich muss sagen, dass ich bereits meine eigene SpriteBatch Klasse daraus gemacht habe. SpriteBatch hat auch einige Probleme beim Rendern von größeren Framebuffer-Texturen gezeigt. Und ich bin immer TEXTURE0 vorher binden. Deshalb habe ich beschlossen, es auf meine Art zu tun. Weniger praktisch, aber viel flexibler. Jetzt habe ich einen Sprite Batch, der nur die Generierung der Vertices behandelt. Alles kann mit eigenen Shadern angepasst werden. – fky
Beachten Sie, dass SpriteBatch ein wenig mehr als das Generieren der Vertices ausführt. Wenn Sie nicht vorsichtig sind, treten Leistungsprobleme auf. SpriteBatch selbst hat einige Usability-Probleme, aber es ist eine Designentscheidung. Es soll die gebräuchlichsten Zeichenoperationen vereinfachen, und irgendwie schadet das der Flexibilität. Wie auch immer, ich war in der Lage, die meisten der Probleme zu lösen, die ich bisher kennengelernt habe (in den meisten Fällen aktiviert/deaktiviert es entsprechende OpenGL-Flags, bevor es verwendet wird). Vielleicht werde ich heute Nacht versuchen, Multitextur zu implementieren, wie du es getan hast, und dich wissen lassen;) –
sry, dass du wieder zu spät bist und Danke für deine Unterstützung. Es funktioniert so, wie du es bearbeitet hast. ABER, ich mag es nicht. Das sieht irgendwie gefährlich für mich aus. Ich bevorzuge meine spezialisierte Version, die wegen ihrer kleineren Größe auch schneller und besser debuggbar ist. SpriteBatch versucht, alle glücklich zu machen. Es ist meiner Meinung nach keine wirklich leistungsoptimierte Klasse. Aber wie auch immer, danke, dass SpriteBatch LAST BOUND Textur verwendet und nicht nur TEXTURE0 – fky