所以我想在我的场景中添加某种形式的交互性,然后使用WSAD将其移动到场景中。
创建表的功能是:
void drawTable(){
//texture stuff
glEnable(GL_TEXTURE_2D);
//draw legs
glBindTexture(GL_TEXTURE_2D, tableLegTexture);
drawCube(0.050,0.5,0.060,0,0,0);
drawCube(0.050,0.5,0.060,3,0,0);
drawCube(0.050,0.5,0.060,3,0,-1);
drawCube(0.050,0.5,0.060,0,0,-1);
//draw table top
glBindTexture(GL_TEXTURE_2D, tableTopTexture);
drawCube(2,0.050,1,1.5,0.5,-0.5);
glDisable(GL_TEXTURE_2D);
}
在渲染场景方法中,我有:
glPushMatrix();
glTranslatef(tableX, tableY, tableZ);
glTranslatef(-0.5,0,3);
drawTable();
glPopMatrix();
这是键盘部分:
void pressKey(int key, int xx, int yy){
switch(key){
case GLUT_KEY_LEFT :
deltaAngle = -0.01f;
break;
case GLUT_KEY_RIGHT :
deltaAngle = 0.01f;
break;
case GLUT_KEY_UP :
deltaMove = 0.5f;
break;
case GLUT_KEY_DOWN :
deltaMove = -0.5f;
break;
case 'W' :
tableX = tableX + 1;
break;
}
}
所以我想知道。这样做相对简单吗? 我有一种在整个关卡中移动的方法,但这会移动整个场景,所以我不确定如何只移动桌子?
答案 0 :(得分:2)
我怎么会只移动桌子?
在固定翻译之前添加另一个转换:
glPushMatrix();
glTranslatef( tableX, tableY, tableZ );
glTranslatef(-0.5,0,3);
drawTable();
glPopMatrix();
修改键盘回调中的table[X|Y|Z]
并重新绘制。