Vlad2001_MFS
Надо как то систему координат в OpenGL по вертикали перевернуть.
Пробую так:
glTranslated(0, screen_height, 0); glRotated( 180, 1, 0, 0);
Но пока безуспешно.
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 имеет экранные координаты.
Вопрос закрыт.
gamedevfor
Забавный ты чувак ))))) вообще -то текстурные координаты в диапазоне от 0 до 1, они не могут быть отрицательные....
Смотри как это OGL и как показано в DX
Funtik
> Забавный ты чувак ))))) вообще -то текстурные координаты в диапазоне от 0 до 1,
> они не могут быть отрицательные....
Забавный ты чувак. Про GL_TEXTURE_WRAP не слышал?
Funtik
Но это работает.
P.S. По моему в OGL от -1.0f до 1.0f можно задавать.
MrShoor
просто я не извращаюсь, а делаю uv.y => 1- uv.y
Funtik
> uv.y => 1- uv.y
Я пробовал в шейдере так сделать и это не помогало.
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
И оно заработает. Лишь точность может чуть-чуть пострадать.
gamedevfor
а ты не в шейдере делай... а в тех координатах... ну как-то так:
0 0 = > 0 1-0
1 0 = > 1 1-0
1 1 = > 1 1-1
01 = > 0 1-1
gamedevfor
> Я пробовал в шейдере так сделать и это не помогало.
Что то ты делал не так, потому что это помогает 100%
MrShoor
Ну хорошо, я не спорю... но тут-то задачи текстуру тайлить нет...
просто он из правосторонней системы координат пытается создать левостороннюю,
если я правильно понял...
Ну и зачем так извращаться? Если в GL представлено иначе...
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
И так тоже работает - правильно.
gamedevfor
> И так тоже работает - правильно.
Это значит, что ты на правильном пути )))))
Funtik
> Ну и зачем так извращаться? Если в GL представлено иначе...
Зачем, зачем? потому что для 2D графики экранная система координат считай стандарт.
То что там в OGL начудили еще в 90-х когда был разброд и шатание в графике - сейчас никому не нужно.
gamedevfor
> То что там в OGL начудили еще в 90-х когда был разброд и шатание в графике -
> сейчас никому не нужно.
Тебе не нужно.
Тема в архиве.