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

Camera и Widescreen

Страницы: 1 2 Следующая »
#0
14:10, 8 дек 2015

Сейчас когда игра переключается между широко-форматом и 4:3 то обрезаются "ушки", крайние полоски.

Для камеры нужно перестроить матрицу проекции.

Сейчас реализовано так, каждая камера подписана на сообщение об изменении разрешения экрана и перестраивает свои матрицы.

Что хочется, что бы камеры небыли подписаны, а эти "изменения" накатывались где-то на боле высоком уровне, например в RenderEngine, когда идет непосредственно "накатка" матриц.
Это возможно?

http://codepaste.net/kkzhna

#1
14:23, 8 дек 2015

Логичнее на мой взгляд, если камерами занимается сцена.
То есть, сцена подписывается на события OnResolutionChanged и обновляет все камеры, которые были созданы.

#2
14:27, 8 дек 2015

Что такое "накатка матриц"?

#3
15:01, 8 дек 2015

me
Ну это сути дела не меняет

programina
> Что такое "накатка матриц"?

DXCALL( m_serviceProvider, m_pD3DDevice, SetTransform, ( D3DTS_VIEW, (D3DMATRIX*)_modelview.buff() ) );
DXCALL( m_serviceProvider, m_pD3DDevice, SetTransform, ( D3DTS_PROJECTION, (D3DMATRIX*)_projection.buff() ) );
#4
18:06, 8 дек 2015

IROV..
можешь на родителя камеры скинуть, кто-то всё равно должен это делать.

#5
18:14, 8 дек 2015

Aroch
ну меня устраивает в принципе и тут, просто сам подход меня смущает. Думал что правильней делать как-то по другому

#6
18:37, 8 дек 2015

У себя буду делать так:

  while (!bquit)
  {
        while (XPending(dpy) > 0)
        {
            XNextEvent(dpy, &event);

            switch (event.type)
            {
                case Expose:
                {
                                // обновляю матрицу проекции.
                }
                break;

                //...
#7
18:40, 8 дек 2015

programina
В вопросе нету как сделать "ивент" и когда ивент обработать.
В вопросе, можно ли както на высшем уровне взять матрицы и "трансформировать" их с учетом "вайдскрина" и тд

#8
18:58, 8 дек 2015

IROV..
> В вопросе, можно ли както на высшем уровне взять матрицы и "трансформировать"
> их с учетом "вайдскрина" и тд
Странный вопрос, вроде очевидно, что можно. Если сделать матрицу глобальной внешней, то ее можно будет менять в любой части кода.

#9
19:11, 8 дек 2015

programina
у тебя Н разных камер, каждая из них требует изменения

#10
19:23, 8 дек 2015

0iStalker
мимо)

#11
19:49, 8 дек 2015

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

#12
19:51, 8 дек 2015

IROV..
> у тебя Н разных камер, каждая из них требует изменения
А зачем вам так много камер и зачем им свои собственные проекционные матрицы вместо одной общей, если не секрет?

#13
20:06, 8 дек 2015

Aroch
У меня так и есть, и пока что оно вроде как работает :)

programina
> если не секрет?
Общая сцена, зума в сцене (можно конечно это делать клипплейнами, но решил через вьюпорт)
так же есть в 2д сцене разные 3д объекты(плейны) они тоже имеют свои матрицы.
есть 3д партиклы, они  тоже имеют свои матрицы
сейчас еще добавляю Изометрическую камеру, а гуи будет классикой
и тд.

#14
20:23, 8 дек 2015

IROV..
Ничо не пойму, у объектов на сцене как бы должна быть своя модельная (мировая) матрица, которая затем умножается на видовую матрицу и далее на проекционную матрицу. Изменять надо только проекционную матрицу, другие матрицы не зависят от размеров экрана. Или вы рисуется каждый объект сцены в отдельнов вьюпорте?

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

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