procedure camera(var x_cam, y_cam, z_cam, {look_x, look_y, look_z,} angle_h, angle_v : real);
var
x,y : integer;
sens_cam : real;
sens_trans : real;
begin
sens_cam := 0.2;
sens_trans := 0.002;
glfwgetmousepos(x,y);
glfwsetmousepos(400,300);
angle_h := (angle_h + x - 400);
angle_v := (angle_v + y - 300);
if (glfwgetkey(90) = 1) or (glfwgetkey(87)= 1) // W et Z
then
begin
x_cam := x_cam + sens_trans * cos(angle_h * pi/180);
y_cam := y_cam - sens_trans * sin(angle_h * pi/180);
end;
if (glfwgetkey(65) = 1) or (glfwgetkey(81)= 1) //A et Q
then
begin
x_cam := x_cam + sens_trans * cos(angle_h * pi/180);
y_cam := y_cam + sens_trans * sin(angle_h * pi/180);
end;
if (glfwgetkey(83) = 1) //S
then
begin
x_cam := x_cam - sens_trans * cos(angle_h * pi/180);
y_cam := y_cam + sens_trans * sin(angle_h * pi/180);
end;
if (glfwgetkey(68) = 1) //D
then
begin
x_cam := x_cam - sens_trans * cos(angle_h * pi/180);
y_cam := y_cam - sens_trans * sin(angle_h * pi/180);
end;
glloadidentity;
glrotated(sens_cam * angle_h,0,1,0);
glulookat(x_cam, y_cam, z_cam,x_cam+1, y_cam, z_cam, 0, 0, 1);
end;
Partager