Вверх ↑
Ответов: 2200
Рейтинг: 673
#1: 2020-11-19 19:46:13 ЛС | профиль | цитата
Gik, повторюсь: MAV делал элемент GL_gluCoord (Обратные преобразования оконных и мировых координат) и выкладывал его на форуме с примером.
Для ленивых:
type
THIGL_gluCoord = class(TDebug)
private
Viewport: Array [0..3] of GLInt; // параметры viewport-a.
ProjMatrix: Array [0..15] of GLDouble;// матрица проекции.
mvMatrix: Array [0..15] of GLDouble; // видовая матрица.
wX,wY,wZ:GLdouble; // возвращаемые оконные/мировые координаты.


procedure THIGL_gluCoord._work_doGluProject; // преобразование мировых координат в оконные
var
X : Real;
Y : Real;
Z : Real;
begin
X:=ReadReal(_data,_data_X,_prop_X);
Y:=ReadReal(_data,_data_Y,_prop_Y);
Z:=ReadReal(_data,_data_Z,_prop_Z);
glGetIntegerv(GL_VIEWPORT,@Viewport); // узнаём параметры viewport-a.
glGetDoublev(GL_PROJECTION_MATRIX,@ProjMatrix); // узнаём матрицу проекции.
glGetDoublev(GL_MODELVIEW_MATRIX,@mvMatrix); // узнаём видовую матрицу.
gluProject(X,Y,Z, @mvMatrix, @ProjMatrix, @Viewport, wx, wy, wz);
_hi_onEvent(_event_onGluProject);
end;

карма: 11

0
Редактировалось 1 раз(а), последний 2020-11-19 19:46:51