История изменений
Исправление 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 например.