У меня есть следующие два шейдеры: вершинный шейдер:LibGDX OpenGL вопрос
/// fragment shader
#version 130
in vec2 vs_uv;
out vec4 fs_color;
uniform sampler2D u_source;
uniform sampler2D u_map;
void main() {
fs_color = vec4(vs_uv, 0, 1);
}
/// vertex shader
#version 130
out vec2 vs_uv;
void main() {
const vec4 vertices[4] = {
vec4(-1, -1, 0, 1),
vec4(-1, 1, 0, 0),
vec4(1, 1, 1, 0),
vec4(1, -1, 1, 1)
};
vec4 description = vertices[gl_VertexID];
gl_Position = vec4(description.xy, 0, 1);
vs_uv = description.zw;
}
Очевидно, что это оказывает полный экран градиентной заливкой прямоугольник. Я создал программу, с этими двумя шейдер и вынес 4 вершины в фреймбуфер и вернуть вынесенный цвет текстуру из него:
public Texture apply(Texture source, Texture map) {
m_renderBuffer.begin();
Gdx.gl20.glClear(Gdx.gl20.GL_COLOR_BUFFER_BIT);
m_program.begin();
m_program.setUniformi(m_sourceLocation, 0);
m_program.setUniformi(m_mapLocation, 1);
Gdx.gl20.glDrawArrays(Gdx.gl20.GL_TRIANGLE_FAN, 0, 4);
m_program.end();
m_renderBuffer.end();
return m_renderBuffer.getColorBufferTexture();
}
Обращает вынесенную текстуру с SpriteBatch:
m_lightSpriteBatch.begin();
m_lightSpriteBatch.draw(lightTexture, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
m_lightSpriteBatch.end();
Он хорошо работает и делает градиент-заполненный прямоугольник, как я хочу. Когда я связать две текстуры (передаются в качестве параметров для apply
метода - source
и map
) после meginning программы:
m_program.begin();
source.bind(0);
map.bind(1);
...
Это делает дерьмо, даже учитывая то, что я не использую текстур в коде шейдера!
- текстуры оказывается без каких-либо текстуры привязок
source
текстуры- "херово" оказали текстуры
map
текстуры
Как могут быть части в (3), которые не находятся в (2)? Например, «TNT» или «die» никогда не встречается ни в одной из входных текстур, которые вы показываете. У вас есть дополнительные текстуры, содержащие эти данные? – BDL
Это одна из текстур, которые я ранее загружал до вызова 'apply'. Он обеспечивает спрайты для второго изображения. Это не куча текстур, это одна текстура. –