GML
d3d_transform_add_scaling( scalex, scaley, scalez );
d3d_transform_add_rotation_x( Roll );
d3d_transform_add_rotation_y( Pitch );
d3d_transform_add_rotation_z( Yaw );
d3d_transform_add_translation( x, y, z );
// teraz funkcje rysujace d3d np model albo figurę
d3d_model_draw( jakis_model, xOffset, yOffset, zOffset, jakas_textura );
d3d_transform_set_identity();
Jest parę rzeczy które trzeba wiedzieć używając tych funkcji by nie nadziać się na jakieś bugi.
1. Ważna jest kolejność transformacji.
Najpierw trzeba skalować, potem obracać potem dopiero przemieszczać obiekt. Oczywiście można pominąć którąś z tych rzeczy ale kolejność jest ważna.
2. funkcje d3d_transform_add_* od d3d_transform_set_* różnią się tym że set zanim wykona jakie kolwiek transformacje najpierw wyzeruje wszystko. To znaczy że d3d_transform_set_* są połączeniem funkcji d3d_transform_set_identity(); z d3d_transform_add_*
3. Po dokonaniu transformacji i narysowaniu figury należy pamiętać by zresetować macierz transformującą za pomocą d3d_transform_set_identity(); Bo inaczej transformacja przejdzie do kolejnych obiektów.
4.
Normalnie bez transformacji gdy rysujesz jakąś figurę np boxa i chcesz go przemieścić to wpisujesz współrzędne w pierwszych sześciu argumentach d3d_draw_block(x1,y1,z1,x2,y2,z2 jednak gdy używasz przemieszczenia funkcją d3d_transform_add_translation() to te współrzędne wpisujesz właśnie w niej a te z d3d_draw_block(x1,y1,z1,x2,y2,z2 będą zmieniać origin obiektu nie pozycję