Ich habe nächste zwei Shadern: Vertex-Shader:Libgdx OpenGL Ausgabe
/// 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;
}
Offensichtlich macht es ein Vollbild-Gradienten-gefüllte Rechteck. habe ich ein Programm mit diesen beiden Shadern und 4 Ecken in Framebuffer gemacht und gerendert Farbe Textur Rückkehr von ihm:
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();
}
ich mit einem Spritebatch gemacht Textur zeichnen:
m_lightSpriteBatch.begin();
m_lightSpriteBatch.draw(lightTexture, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
m_lightSpriteBatch.end();
Es funktioniert gut und macht gradientengefülltes Rechteck, wie ich will. Wenn ich zwei Texturen binden (als Parameter übergeben für apply
Methode - source
und map
) nach meginning des Programms:
m_program.begin();
source.bind(0);
map.bind(1);
...
Es macht auch Mist man bedenkt, was ich keine Texturen in der Shadercode verwenden!
- Textur ohne Bindungen Textur gerendert
source
Textur- "crappy" gerendert Textur
map
Textur
Wie kann es Teile in (3) geben, die nicht in (2) sind? Zum Beispiel tritt "TNT" oder "Die" niemals in einer der eingegebenen Texturen auf. Verfügen Sie über zusätzliche Texturen, die diese Daten enthalten? – BDL
Es ist eine der Texturen, die ich zuvor geladen habe, bevor ich 'apply' aufgerufen habe. Es bietet Sprites für das zweite Bild. Es sind keine Texturen, sondern eine Textur. –