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

OGL экранные координаты вершин?

Страницы: 1 2 3 Следующая »
#0
14:44, 2 ноя. 2017

Этот вопрос неоднократно здесь всплывал но так и не нашел конкретного ответа.

Есть OGL в Ortho проекции (то есть 2D)
Хочу задавать координаты вершин в экранных координатах где [0, 0] - top left of the screen; [screen_width, screen_height] - bottom right of the screen,
Как это сделать?

P.S. Сейчас использую запись вида:

//   0.5f,  0.5f, 0.0f,
//   0.5f, -0.5f, 0.0f,
//   -0.5f, -0.5f, 0.0f,
//   -0.5f,  0.5f, 0.0f,
Но это жутко неудобно.


#1
14:58, 2 ноя. 2017

Тебе нужно правильно настроить матрицу проектирования. Если используешь glOrtho или что-то вроде, то прочитай документацию по ней, там должен быть функционал для того, что тебе нужно.

#2
15:08, 2 ноя. 2017

AMM1AK

Сейчас так:

  glViewport(0, 0, screen_width, screen_height);
  glDisable(GL_DEPTH_TEST);
  glMatrixMode(GL_PROJECTION);  
  glLoadIdentity();
  glOrtho(0.f, screen_width, screen_height, 0.f, -1.0f, 1.0f);
  glMatrixMode(GL_MODELVIEW); 
  glLoadIdentity();

Что еще нужно добавить?

#3
15:09, 2 ноя. 2017

glasm
Хочу сделать чтобы OGL сам автоматически транслировал координаты как ему надо.

#4
17:09, 2 ноя. 2017

gamedevfor
> glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.f, screen_width,
> screen_height, 0.f, -1.0f, 1.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity();
Есть мнение, что нужно выбросить говно мамонта и писать матрицы самостоятельно.

#5
17:24, 2 ноя. 2017

The Player
У меня в вертексный шейдер матрицы передаются в том числе и PROJECTION матрица.
У кого то есть готовая матрица для этого?

#6
17:53, 2 ноя. 2017

gamedevfor
В любой современной математической библиотеке. GLM или MathFU в помощь

#7
17:57, 2 ноя. 2017

Deamon
Не использую никаких библиотек, ни у кого нету в коде этой матрицы?

#8
20:10, 2 ноя. 2017
Не использую никаких библиотек, ни у кого нету в коде этой матрицы?

Вы угараете? Ваша матрица - простая матрица перемещения по диагонали влево вниз на 0.5. Никаких поворотов масштабирования или скоса. Выглядит она как единичная матрица, в последнем столбце которой два верхних элемента равны -0.5, третий равен 0, а последний остаётся равен 1.
Если даже такой мизер по матрицам не шарите, то зачем вообще взяли ванильный OpenGL? Юзайте гейм мейкер, там никаких "матриц в коде" не надо.
#9
20:22, 2 ноя. 2017

KumoKairo
> Ваша матрица - простая матрица перемещения
Это ж неправильно, потому что точка (100, 100) переместится на 0.5 пикселя и будет по сути тоже самое.

#10
20:24, 2 ноя. 2017

Ivashka
Попробую.
А gluLookAt это обязательно?

#11
20:27, 2 ноя. 2017

KumoKairo
> Если даже такой мизер по матрицам не шарите, то зачем вообще взяли ванильный
> OpenGL? Юзайте гейм мейкер, там никаких "матриц в коде" не надо.
Задача очень распространённая, должно быть стандартное решение без каких то там сторонних движков и либ.

#12
22:14, 2 ноя. 2017

gamedevfor
А чем вам gluOrtho2D не нравится? И вообще, выкиньте это старье, возьмите нормальную мат. либу и шейдеры.

Я и сам в матрицах не особый специалист, но:
render | OGL экранные координаты вершин?
r и l - левая и правая граница.
b и t - нижняя и верхняя граница.
Например, r = 640, l = 0, b = 480, t = 0.

Вроде бы проверил, все верно вывел. Правда здесь без дальней и ближней плоскости отсечения.

#13
22:29, 2 ноя. 2017

Ivashka
Не работает, видимая область тупо съезжает вправо (на половину ширины экрана) и вверх (на половину высоты экрана);
На координаты вершин это не влияет;

Если поставить:

gluOrtho2D(0, screen_width, screen_height, 0);
то это работает так же как и:
glOrtho(0.f, screen_width, screen_height, 0.f, -1.0f, 1.0f);

#14
22:30, 2 ноя. 2017

Vlad2001_MFS
> А чем вам gluOrtho2D не нравится?
Тем что оно не работает.

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

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