LINUX.ORG.RU

История изменений

Исправление LINUX-ORG-RU, (текущая версия) :

http://www.opengl-tutorial.org/ru/beginners-tutorials/tutorial-3-matrices/

На уровне приложения могут быть углы эйлера и/или кватернионы.

У объекта будет

  • позиция {x,y,z}
  • масштаб {x,y,z}
  • поворот {x,y.z} или {x,y,z,w}

Из каждого нужно получить матрицу 4x4 и потом все эти матрицы перемножить друг на друга. Получишь «мировую матрицу» объекта.

передаёшь в шейдер как uniform

Затем в вершинном шейдере их получаешь

uniform mat4 world;
...

И перемножаешь с вертексом и другими матрицами вида,проекции и тд.

Погляди как в Corange сделано (там OpenGL2.1 но суть одна)

Матрицы и прочие функции помощники

Затем глянь как эти данные передаются в шейдеры

Затем глянь как эти данные получаются и обрабатываются в вершинном (там много лишнего смотри только на участие world)

И потом в пиксельном шейдере (хотя по данному вопросу это уже лишнее и в самом фрагментном шейдере там много лишнего для твоего случая)

Хотя у тебя в ссылке всё есть, тебе нужны по сути функции помощники для вращения и работы с матрицами,камерой и прочим, возьми какую библиотеку для этой математики и используй или накопируй из Corange нужные функции для манипуляции с объектом и расчёта матриц.

Или GLM https://github.com/g-truc/glm например. В целом ты можешь даже не вникать по началу в матрицы, а использовать для всех манипуляций функции помощники да перемножать результаты в шейдере и всё. Вручную потом ничего делать не надо.

Исправление LINUX-ORG-RU, :

http://www.opengl-tutorial.org/ru/beginners-tutorials/tutorial-3-matrices/

На уровне приложения могут быть углы эйлера и/или кватернионы.

У объекта будет

  • позиция {x,y,z}
  • масштаб {x,y,z}
  • поворот {x,y.z} или {x,y,z,w}

Из каждого нужно получить матрицу 4x4 и потом все эти матрицы перемножить друг на друга. Получишь «мировую матрицу» объекта.

передаёшь в шейдер как uniform

Затем в вершинном шейдере их получаешь

uniform mat4 world;
...

И перемножаешь с вертексом и другими матрицами вида,проекции и тд.

Погляди как в Corange сделано (там OpenGL2.1 но суть одна)

Матрицы и прочие функции помощники

Затем глянь как эти данные передаются в шейдеры

Затем глянь как эти данные получаются и обрабатываются в вершинном

И потом в пиксельном шейдере (хотя по данному вопросу это уже лишнее)

Хотя у тебя в ссылке всё есть, тебе нужны по сути функции помощники для вращения и работы с матрицами,камерой и прочим, возьми какую библиотеку для этой математики и используй или накопируй из Corange нужные функции для манипуляции с объектом и расчёта матриц.

Или GLM https://github.com/g-truc/glm например. В целом ты можешь даже не вникать по началу в матрицы, а использовать для всех манипуляций функции помощники да перемножать результаты в шейдере и всё. Вручную потом ничего делать не надо.

Исправление LINUX-ORG-RU, :

http://www.opengl-tutorial.org/ru/beginners-tutorials/tutorial-3-matrices/

На уровне приложения могут быть углы эйлера и/или кватернионы.

У объекта будет

  • позиция {x,y,z}
  • масштаб {x,y,z}
  • поворот {x,y.z} или {x,y,z,w}

Из каждого нужно получить матрицу 4x4 и потом все эти матрицы перемножить друг на друга. Получишь «мировую матрицу» объекта.

передаёшь в шейдер как uniform

Затем в вершинном шейдере их получаешь

uniform mat4 world;
...

И перемножаешь с вертексом и другими матрицами вида,проекции и тд.

Погляди как в Corange сделано (там OpenGL2.1 но суть одна)

Матрицы и прочие функции помощники

Затем глянь как эти данные передаются в шейдеры

Затем глянь как эти данные получаются и обрабатываются в вершинном

И потом в пиксельном шейдере (хотя по данному вопросу это уже лишнее)

Хотя у тебя в ссылке всё есть, тебе нужны по сути функции помощники для вращения и работы с матрицами,камерой и прочим, возьми какую библиотеку для этой математики и используй или накопируй из Corange нужные функции для манипуляции с объектом и расчёта матриц.

Или GLM https://github.com/g-truc/glm например. В целом ты можешь даже не вникать по началу в матрицы, а использовать для всех манипуляций функции помощники да перемножать результаты в шейдере и всё.

Исходная версия LINUX-ORG-RU, :

http://www.opengl-tutorial.org/ru/beginners-tutorials/tutorial-3-matrices/

На уровне приложения могут быть углы эйлера и/или кватернионы.

У объекта будет

  • позиция {x,y,z}
  • масштаб {x,y,z}
  • поворот {x,y.z} или {x,y,z,w}

Из каждого нужно получить матрицу 4x4 и потом все эти матрицы перемножить друг на друга. Получишь «мировую матрицу» объекта.

передаёшь в шейдер как uniform

Затем в вершинном шейдере их получаешь

uniform mat4 world;
...

И перемножаешь с вертексом и другими матрицами вида,проекции и тд.

Погляди как в Corange сделано (там OpenGL2.1 но суть одна)

Матрицы и прочие функции помощники

Затем глянь как эти данные передаются в шейдеры

Затем глянь как эти данные получаются и обрабатываются в вершинном

И потом в пиксельном шейдере (хотя по данному вопросу это уже лишнее)

Хотя у тебя в ссылке всё есть, тебе нужны по сути функции помощники для вращения и работы с матрицами,камерой и прочим, возьми какую библиотеку для этой математики и используй или накопируй из Corange нужные функции для манипуляции с объектом и расчёта матриц.

Или GLM https://github.com/g-truc/glm например.