Я с радостью использую класс SpriteBatch для платформы LibGDX. Моя цель - изменить представление спрайта через шейдер.LibGDX SpriteBatch Возможно использование нескольких меток?
batch = new SpriteBatch(2, shaderProgram);
Я скопировал шейдер по умолчанию из класса SpriteBatch и добавил еще один единообразного Sampler 2d
+ "uniform sampler2D u_Texture2;\n"//
Есть ли рабочий способ придать текстуру в затенение. Выполнение этого так, всегда заканчивается на экране ClearColor.
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();
Работает только одна текстура. Рисование вручную с помощью класса Mesh работает так, как ожидалось. Итак, что я могу сделать, чтобы использовать удобство SpriteBatch?
THX за помощью
эй, наконец, я получил ответ, спасибо! Вы правы. Это связано с тем, как класс связывает текстуру. Мне нужно сказать, что я уже создал свой собственный класс SpriteBatch. SpriteBatch также показал некоторые проблемы при обработке текстур Framebuffer большего размера. И я всегда связываю TEXTURE0 раньше. Вот почему я решил сделать это по-своему. Менее удобный, но более гибкий. Теперь у меня есть пакет спрайтов, который обрабатывает только генерацию вершин. Все arround можно настроить с помощью собственных шейдеров. – fky
Помните, что SpriteBatch делает немного больше, чем генерирование вершин, если вы не будете осторожны, вы столкнетесь с проблемами производительности. У самого SpriteBatch есть некоторые проблемы «удобства использования», но это дизайнерское решение. Он предназначен для упрощения самых распространенных операций рисования и, как-то, что ущемляет гибкость. Во всяком случае, я смог решить большинство проблем, с которыми я столкнулся до сих пор (в большинстве случаев он включает/отключает соответствующие флажки opengl перед его использованием). Может быть, сегодня вечером я попытаюсь реализовать мультитекстури, как вы это делали, и сообщит вам об этом;) –
sry за опоздание и спасибо за вашу поддержку. Он работает так, как вы его редактировали. НО, мне это не нравится. Это выглядит для меня опасным. Я предпочитаю свою специализированную версию, которая также быстрее и лучше отлаживается из-за ее меньшего размера. SpriteBatch пытается сделать всех счастливыми. На мой взгляд, это не действительно оптимизированный по производительности класс. Но в любом случае, спасибо за то, что ясно, что SpriteBatch использует текстуру LAST BOUND, а не только TEXTURE0 – fky