Как диагонально растянуть текстуру

488
04 января 2017, 02:04

Как растянуть текстуру по диагонали? Т.е что бы она была похожа на параллелограмм

Answer 1

Нашел способ! Кому интересно

в Create

        String vertexShader = "attribute vec4 a_position;    \n" +
            "attribute vec4 a_color;\n" +
            "attribute vec2 a_texCoord0;\n" +
            "uniform mat4 u_worldView;\n" +
            "varying vec4 v_color;" +
            "varying vec2 v_texCoords;" +
            "void main()                  \n" +
            "{                            \n" +
            "   v_color = vec4(1, 1, 1, 1); \n" +
            "   v_texCoords = a_texCoord0; \n" +
            "   gl_Position =  u_worldView * a_position;  \n"      +
            "}                            \n" ;
    String fragmentShader = "#ifdef GL_ES\n" +
            "precision mediump float;\n" +
            "#endif\n" +
            "varying vec4 v_color;\n" +
            "varying vec2 v_texCoords;\n" +
            "uniform sampler2D u_texture;\n" +
            "void main()                                  \n" +
            "{                                            \n" +
            "  gl_FragColor = v_color * texture2D(u_texture, v_texCoords);\n"+
            "}";
    mesh = new Mesh(true, 4, 6, VertexAttribute.Position(), VertexAttribute.  ColorUnpacked(), VertexAttribute.TexCoords(0));
    mesh.setIndices(new short[] {0, 1, 2, 2, 3, 0});
    shader = new ShaderProgram(vertexShader, fragmentShader);

В Render

        sprite9.getTexture().bind();
    shader.begin();
    shader.setUniformMatrix("u_worldView",camera.combined);
    shader.setUniformi("u_texture", 0);
    for (int i=(int)(rect.getPosition().x+10);i<(int)(rect.getPosition().x+80);i++){
        mesh.setVertices(new float[]
                {race[i].x, race[i].y-0.7f, 0, 1, 0, 1, 1, 0, 1,
                        race[i].x, race[i].y, 0, 1, 1, 1, 1, 1, 0,
                        race[i+1].x, race[i+1].y, 0, 1, 1, 1, 1, 1, 0,
                        race[i+1].x, race[i+1].y-0.7f, 0, 1, 1, 1, 1, 0, 1
                });
        mesh.render(shader, GL20.GL_TRIANGLE_FAN);
    }
    shader.end();

Это у меня рисовалась поверхность трассы. Че за значения в меше и в шеййдерах я не знаю, может кто разьяснит в комментах

READ ALSO
Добавлять имена по нажатию в favorites

Добавлять имена по нажатию в favorites

Есть список recyclerView, в котором инициализирую имена:

413
Что в телефонах отсчитывает время? Что является его эталоном времени?

Что в телефонах отсчитывает время? Что является его эталоном времени?

Устал гуглитьчто за контроллер времени импользуется в современных смартфонах и что является его эталоном времени? В каком виде этот контроллер...

457
Нужна помощь в написании теста для консольных крестиков-ноликов

Нужна помощь в написании теста для консольных крестиков-ноликов

У меня консольная программа крестики-ноликиДля тестирования ввода с консоли я использую класс StubInput:

524
Помогите сократить программу. java

Помогите сократить программу. java

Есть задание сделать анаграмму ,например lashjkuj2 akcc66Чтобы все не буквенные символы остались на месте? Я сделал так

541