Войти
ПрограммированиеФорумОбщее

Выбор формата моделей (3 стр)

Страницы: 1 2 3 4 5 Следующая »
#30
11:19, 2 июля 2012

BUzer
ОпенГЛ принимает матрицы со смещением в 3-7-11, ДХ - в 12-13-14. У ОпенГЛ - коломн-мажор, у ДХ - ров-мажор.
Как же они одинаковые?

#31
12:18, 2 июля 2012

-Eugene-
http://www.opengl.org/archives/resources/faq/technical/transformations.htm

For programming purposes, OpenGL matrices are 16-value arrays with base vectors laid out contiguously in memory. The translation components occupy the 13th, 14th, and 15th elements of the 16-element matrix

#32
12:28, 2 июля 2012

BUzer
http://www.opengl.org/sdk/docs/man/xhtml/glTranslate.xml
Там явно column-major

#33
12:38, 2 июля 2012

-Eugene-
Кончай тормозить. В картинке матрицы по твоей ссылке нигде не указано, какой её элемент в каком месте лежит в памяти.
Открой, к примеру, http://www.opengl.org/sdk/docs/man/xhtml/glMultMatrix.xml - там видно, что этот последний столбик и есть элементы по индексам 12, 13, и 14.

#34
12:42, 2 июля 2012

BUzer
Какое то извращение - нумеровать стобиками. Я всегда думал, что в ГЛ и в ДХ разные матрицы. Видимо, из-за этого:

Sadly, the use of column-major format in the spec and blue book has resulted in endless confusion in the 
OpenGL programming community. Column-major notation suggests that matrices are not laid out in 
memory as a programmer would expect.
#35
13:47, 2 июля 2012

-Eugene-
> Я всегда думал, что в ГЛ и в ДХ разные матрицы.
Не ты один. Миф про транспонирование настолько популярен, что даже авторы библиотек, типа assimp, пишут про свои матрицы нечто подобное:

…the matrices are stored row by row in memory, which is similar to the OpenGL matrix layout. If you want to use these matrices in DirectX functions, you have to transpose them.

#36
14:40, 2 июля 2012

BUzer
> the matrices are stored row by row in memory, which is similar to the OpenGL
> matrix layout

может они их грузили glLoadTransposeMatrix ?

#37
15:04, 2 июля 2012

innuendo
Да не, в своих сэмплах они делают как-то так:

struct aiMatrix4x4 m = nd->mTransformation;

// update transform
aiTransposeMatrix4(&m);
glPushMatrix();
glMultMatrixf((float*)&m);
#38
22:45, 2 июля 2012

AngelOfDeath
Неуспел отписаться в предидущей твоей теме, для чтения записи в файл лучше использовать виндовые Read WriteFile , имхо проще и надежнее, а все эти ваши иостримы так или иначе обёртки над вин апи.

#39
8:31, 3 июля 2012

Они кошернее, там используются исключения, а не возвращаемые коды, семантика их мне тоже больше нравится, и они переносимы. Мне этого хватает.

#40
9:55, 3 июля 2012

>The translation components occupy the 13th, 14th, and 15th elements of the 16-element matrix
Кстати, это какая матрица? Column-major или row-major? А то я путаюсь в названиях.

#41
10:01, 3 июля 2012

gammaker
row

#42
10:11, 3 июля 2012

AngelOfDeath
> Они кошернее

А они могут так?

  pVB->Lock(0, sizeVB, &pData, 0);

  ReadFile(hFile, pData, sizeVB, &nBytes, 0);

  pVB->Unlock();

Как говорится, хозяин-барин :)

#43
10:42, 3 июля 2012

AngelOfDeath
> только вот для преобразования всегда нужен 3ds Max, а это хреново...
Из макса в колладу, из коллады в свой бинарник сборщиком ресурсов. Изменения формата не заставляют открывать макс - надо просто прогнать сборщик ресурсов. Плюс валидация ресурсов сборщиком сразу.

#44
10:49, 3 июля 2012

TheGrayWolf
> pVB->Lock(0, sizeVB, &pData, 0);
ID3D11Buffer так не может, так что отпадает...
GLoom
Понял, попробую. А почему коллада, а не, допустим, fbx?

Страницы: 1 2 3 4 5 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.