Войти
ПрограммированиеФорумГрафика

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

Страницы: 1 2 3
#30
22:00, 3 ноя. 2017

Vlad2001_MFS
Надо как то систему координат в OpenGL по вертикали перевернуть.
Пробую так:

  glTranslated(0, screen_height, 0);
  glRotated(180, 1, 0, 0);
Но пока безуспешно.

#31
23:10, 3 ноя. 2017

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 имеет экранные координаты.
Вопрос закрыт.

#32
23:35, 3 ноя. 2017

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

#33
23:39, 3 ноя. 2017

Funtik
> Забавный ты чувак ))))) вообще -то текстурные координаты в диапазоне от 0 до 1,
> они не могут быть отрицательные....
Забавный ты чувак. Про GL_TEXTURE_WRAP не слышал?

#34
23:40, 3 ноя. 2017

Funtik
Но это работает.
P.S. По моему в OGL от -1.0f до 1.0f можно задавать.

#35
23:40, 3 ноя. 2017

MrShoor
просто я не извращаюсь, а делаю uv.y => 1- uv.y

#36
23:42, 3 ноя. 2017

Funtik
> uv.y => 1- uv.y
Я пробовал в шейдере так сделать и это не помогало.

#37
23:46, 3 ноя. 2017

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 
И оно заработает. Лишь точность может чуть-чуть пострадать.
#38
23:46, 3 ноя. 2017

gamedevfor
а ты не в шейдере делай... а в тех координатах... ну как-то так:
0 0  = > 0  1-0
1 0  = > 1  1-0
1 1  = > 1  1-1
01    = > 0  1-1

#39
23:47, 3 ноя. 2017

gamedevfor
> Я пробовал в шейдере так сделать и это не помогало.
Что то ты делал не так, потому что это помогает 100%

#40
23:52, 3 ноя. 2017

MrShoor
Ну хорошо, я не спорю... но тут-то задачи текстуру тайлить нет...
просто он из правосторонней системы координат пытается создать левостороннюю,
если я правильно понял...
Ну и зачем так извращаться? Если в GL представлено иначе...

#41
23:55, 3 ноя. 2017

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 

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

#42
23:57, 3 ноя. 2017

gamedevfor
> И так тоже работает - правильно.
Это значит, что ты на правильном пути )))))

#43
23:59, 3 ноя. 2017

Funtik
> Ну и зачем так извращаться? Если в GL представлено иначе...
Зачем, зачем? потому что для 2D графики экранная система координат считай стандарт.
То что там в OGL начудили еще в 90-х когда был разброд и шатание в графике - сейчас никому не нужно.

#44
0:12, 4 ноя. 2017

gamedevfor
> То что там в OGL начудили еще в 90-х когда был разброд и шатание в графике -
> сейчас никому не нужно.

Тебе не нужно.

Страницы: 1 2 3
ПрограммированиеФорумГрафика

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