Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / OGL экранные координаты вершин? (3 стр)

OGL экранные координаты вершин? (3 стр)

Поделиться

Страницы: 1 2 3 4 Следующая

Vlad2001_MFSУчастникwww3 ноя. 201716:50#30
gamedevfor
Поменяйте в матрице местами b и t так, чтобы было t+b и t-b. Я сейчас даже в opengl все протестировал - работает.

Правка: 3 ноя. 2017 16:50

gamedevforПользовательwww3 ноя. 201717:22#31
Vlad2001_MFS
Сделал:
two / (top - bottom);

- ((top + bottom) / (top - bottom));

Изображение показывает нормально (не перевернуто) но смещено по вертикали вниз (то есть координаты квадрата не [100;100] как я хочу, а [100;874] при разрешении экрана [1024;1024])
Выходит что начало координат в таком случае не верхний левый угол, а нижний левый угол.

Правка: 3 ноя. 2017 21:02

Vlad2001_MFSУчастникwww3 ноя. 201721:54#32
gamedevfor
Ну тогда не знаю чем помочь, у меня в тесте все нормально работает.
gamedevforПользовательwww3 ноя. 201722:00#33
Vlad2001_MFS
Надо как то систему координат в OpenGL по вертикали перевернуть.
Пробую так:
  glTranslated(0, screen_height, 0);
  glRotated(180, 1, 0, 0);
Но пока безуспешно.
gamedevforПользовательwww3 ноя. 201723:10#34
Vlad2001_MFS
> у меня в тесте все нормально работает.
Вообще странно что у вас работает, потому что пишут что по умолчанию в OpenGL декартовая система координат (поэтому и брало левый нижний угол за начало координат), а в оконной системе координат левый верхний угол является началом координат.

                                  Решение:
Матрица:
Изображение
Она была правильной.

И теперь нужно поменять текстурные координаты вершин:

Так было             И так нужно (перевернуть по вертикали)
1.0f   1.0f             1.0f   -1.0f     // Top Right
1.0f   0.0f     =>      1.0f    0.0f     // Bottom Right
0.0f   0.0f             0.0f    0.0f     // Bottom Left
0.0f   1.0f             0.0f   -1.0f     // Top Left 

Теперь OpenGL имеет экранные координаты.
Вопрос закрыт.

Правка: 3 ноя. 2017 23:11

FuntikПостоялецwww3 ноя. 201723:35#35
gamedevfor
Забавный ты чувак ))))) вообще -то текстурные координаты в диапазоне от 0 до 1, они не могут быть отрицательные....
test | OGL экранные координаты вершин?
Смотри как это OGL и как показано в DX

Правка: 3 ноя. 2017 23:39

MrShoorУчастникwww3 ноя. 201723:39#36
Funtik
> Забавный ты чувак ))))) вообще -то текстурные координаты в диапазоне от 0 до 1,
> они не могут быть отрицательные....
Забавный ты чувак. Про GL_TEXTURE_WRAP не слышал?
gamedevforПользовательwww3 ноя. 201723:40#37
Funtik
Но это работает.
P.S. По моему в OGL от -1.0f до 1.0f можно задавать.

FuntikПостоялецwww3 ноя. 201723:40#38
MrShoor
просто я не извращаюсь, а делаю uv.y => 1- uv.y
gamedevforПользовательwww3 ноя. 201723:42#39
Funtik
> uv.y => 1- uv.y
Я пробовал в шейдере так сделать и это не помогало.
MrShoorУчастникwww3 ноя. 201723:46#40
gamedevfor
> P.S. По моему в OGL от -1.0f до 1.0f можно задавать.
В OGL можно хоть от -1000 до 1000 задавать. Есть правила по которым обрабатывается выход за пределы [0;1]. Для случаев с WRAP - текстура будет повторятся тайлясь сама с собой.
Так что можешь написать хоть:
1.0f   -100.0f     // Top Right
1.0f   -99.0f     // Bottom Right
0.0f   -99.0f     // Bottom Left
0.0f   -100.0f     // Top Left 
И оно заработает. Лишь точность может чуть-чуть пострадать.
FuntikПостоялецwww3 ноя. 201723:46#41
gamedevfor
а ты не в шейдере делай... а в тех координатах... ну как-то так:
0 0  = > 0  1-0
1 0  = > 1  1-0
1 1  = > 1  1-1
01    = > 0  1-1
MrShoorУчастникwww3 ноя. 201723:47#42
gamedevfor
> Я пробовал в шейдере так сделать и это не помогало.
Что то ты делал не так, потому что это помогает 100%
FuntikПостоялецwww3 ноя. 201723:52#43
MrShoor
Ну хорошо, я не спорю... но тут-то задачи текстуру тайлить нет...
просто он из правосторонней системы координат пытается создать левостороннюю,
если я правильно понял...
Ну и зачем так извращаться? Если в GL представлено иначе...
gamedevforПользовательwww3 ноя. 201723:55#44
Funtik

Сделал так:

1.0f   1.0f             1.0f   0.0f     // Top Right
1.0f   0.0f     =>      1.0f   1.0f     // Bottom Right
0.0f   0.0f             0.0f   1.0f     // Bottom Left
0.0f   1.0f             0.0f   0.0f     // Top Left 

И так тоже работает - правильно.

Страницы: 1 2 3 4 Следующая

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

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