У меня есть этот вершинный шейдер, который я использую для поворота или перевода obj в зависимости от значений состояния.Понимание буфера в OpenGLES android
private final String vertexShader="" +
"attribute vec4 vertex;" +
"attribute vec4 colors;" +
"varying vec4 vcolors;" +
"uniform int x;" +
"uniform vec4 translate;"+
"uniform mat4 rotate;"+
"void main(){" +
"vec4 app_verte=vertex;" +
"if(x==1){" +
"app_verte=vertex+translate;" +
"}else if(x==2){" +
"app_verte=rotate*app_verte;" +
"}" +
"vcolors=colors;" +
"gl_Position=app_verte;" +
"}";
Для вращения я использую матрица, с помощью матрицы associeted строится из поплавковой [16] массива следующим образом:
|cos(angle),-sin(angle),0,0|
|sin(angle), cos(angle),0,0|
|0 , ,0,0|
Теперь у меня есть разные вопросы becouse я действительно трудно понять. Если я хочу изменить тип преобразования, я должен установить значение x. Теперь, чтобы иметь преобразование континуума, я предположил, что буферизация вершин будет одинаковой, и после преобразования значение буфера будет изменено. Теперь ничего не случилось, потому что он трансформировался и рисовал с одинаковыми координатами. Сначала я устанавливаю только координаты. Существует способ использовать один и тот же буфер, который является VRAM, не помещая его каждый раз, и если нет, то как можно вытащить измененный буфер в мой буфер obj после tranformation без преобразования точки с помощью массива и поместить его в буфер ?? Извините за мой английский и спасибо всем.
Трудно получить ваш вопрос. Можете ли вы упростить вопрос? если вы спрашиваете, как преобразовать каждую вершину в свой вершинный шейдер, используйте еще один атрибут float x вместо равномерного x – Sung