Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Не могу увидеть причину проблемы (Вопрос по матрицам: MVP) (2 стр)

Не могу увидеть причину проблемы (Вопрос по матрицам: MVP) (2 стр)

Страницы: 1 2
TargetПостоялецwww10 авг. 201820:03#15
Suslik
> и если ты сделаешь, например, SetRotation().SetIdentity(), то у тебя останется
> каша, а не матрица. и рано или поздно этот момент обязательно настанет — не
> выстрелит сейчас, выстрелит завтра.

Нет, все элелементы устанавливаются как положено.

+ Показать

Диагональные в единицу или на сколько нам нужно, по дефолту 1,0f, те, которые не по диагонали - в 0,0f.

TargetПостоялецwww10 авг. 201821:39#16
Решил проблему. Виновником оказался (я, конечно) неправильная имплементация оператора умножения: не правильный порядок шел. Просто проверил - переставил порядок умножения матриц и все правильно вычислялось, как оказалось. Но все равно переписал, чтобы умножение шло как в gml - справа налево.

Правка: 10 авг. 2018 21:40

romgermanПостоялецwww11 авг. 20188:49#17
Помню у меня тоже были проблемы с операторами матриц... потому что я недостаточно разобрался в c++ и запутался где нужно передавать по значению, а где можно передать указатель.
Вижу, ты используешь VS, поэтому не могу не буркнуть про то, что отлаживать там легко и возмутиться почему ты не отлаживаешь свою математику.

Правка: 11 авг. 2018 8:51

MarmiladПостоялецwww11 авг. 20189:43#18
Target жестяк !
Через for SetIdentityMatrix задавать !

Лучше просто сделай сразу массив IdentityMatrix и пихай его.

Типа такого:

#include "Matrices.h"   // for Matrix2, Matrix3, Matrix4
...

// create an identity matrix with default ctor
Matrix4 m1;

// create a matrix with 16 elements. Для леворукого Джо !
Matrix4 m2(1, 0, 0, 0,   // 1st column
           0, 1, 0, 0,   // 2nd column
           0, 0, 1, 0,   // 3rd column
           0, 0, 0, 1);  // 4th column

Так понятнее и проще. Надо делать понятно и проще. Что бы глянул и сразу понял что и как.
В шейдер можно передать три float для скалирования. И в шейдере умножать Vertex Position на scale. А потом уже на MVP матрицу.


А с for-ми можно забурится и налебезить такого, что потом как минимум неделю будешь разбирать косяк :)
https://www.youtube.com/watch?v=ZyYxzeA8V9k#t=15

Правка: 11 авг. 2018 9:57

Страницы: 1 2

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр