我正在使用OpenGL绑定在Perl中执行一个程序,通过阅读glutReshapeFunc(\&changeSize);
和GLUT_WINDOW_HEIGHT
变量,我已经通过调用GLUT_WINDOW_WIDTH
时遇到了第一个障碍,但是我不知道如何获取调用glutSpecialFunc(\&processSpecialKeys);
时传递的密钥的值。
阅读API我找不到GLUT_SPECIAL_KEY
变量或类似的东西。
sub changeSize
{
my $w = glutGet(GLUT_WINDOW_WIDTH);
my $h = glutGet(GLUT_WINDOW_HEIGHT);
if($w eq 0){
$w = 1;
}
my $ratio = ($w / $h);
# Use the Projection Matrix
glMatrixMode(GL_PROJECTION);
#// Reset Matrix
glLoadIdentity();
#// Set the viewport to be the entire window
glViewport(0, 0, $w, $h);
#// Set the correct perspective.
gluPerspective(45,$ratio,1,1000);
#// Get Back to the Modelview
glMatrixMode(GL_MODELVIEW);
gluLookAt( $x, 1.0, $z,
$x+$lx,1.0,$z+$lz,
0.0,1.0,0.0);
}
sub processSpecialKeys
{
$fraction = 0.1;
$key = $_[0]; #my first shot was that the key value was stored at $_[0]
#the mouse_x was at $_[1] and $_[2] had mouse_y
if ($key eq GLUT_KEY_LEFT)
{
$angle -= 0.01;
$lx = sin($angle);
$lz = -cos($angle);
}
}
答案 0 :(得分:0)
OpenGL本身并不处理用户输入。您使用的是GLUT,第三方库。
glutReshapeFunc(\&安培; changeSize);通过读取GLUT_WINDOW_HEIGHT和GLUT_WINDOW_WIDTH变量来调用,
您通常不会从重塑处理程序中查询GLUT_WINDOW_HEIGHT和GLUT_WINDOW_WIDTH,因为这两个值都作为参数传递给函数。
当glutSpecialFunc(\& processSpecialKeys)时传递的密钥;叫做。阅读API我无法找到GLUT_SPECIAL_KEY变量或类似的东西。
因为没有。 click的键和位置作为参数传递给回调函数。