Тема: GLUT. Своя MODELVIEW матриця для кожного об'єкту.
Привітульки-тульки-тульки.
Як я розумію матрицю MODELVIEW:
Коли в сцені з'являється об'єкт, то він стоїть в нульових координатах
Для того, аби зрушити його кудись, ми завантажуємо матрицю виду, як в картинці під спойлером,
де замість x y z ставимо компоненти потрібної позиції об'єкту, та множимо цю матрицю на позицію кожного вертексу об'єктуУ кожного об'єкту є своя матриця MODELVIEW, адже ми хочемо ставити різні об'єкти в різних місцях
Питаннячко:
Як в GLUT зробити свою матрицю для кожного об'єкту?
Ось код функції, котра малює об'єкти
void display(void) {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glMatrixMode(GL_MODELVIEW);//кажемо, що зараз працюємо з MODELVIEW
//Очистити матрицю
glLoadIdentity();
//Видова трансформація (камера)
gluLookAt(0.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0);
//Модельна трансформація
glRotated(angle, 0, 1, 0); // змінюємо кут об'єкту
glRotated(90, 1, 0, 0);
glScaled(scale, scale, scale); // масштабуємо
glutWireSphere(1, 15, 15); // малюємо сферу
glutWireCube(2); // малюємо куб
glutSwapBuffers();
glFinish();
}
Як ви вже зрозуміли, куб та сфера мають однакові матриці. Тобто вони стоять в одній позиції та під одним кутом.
Як зробити, аби в куба була своя матриця?