Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 摄像机运动。如何移动相机?_Android_Opengl Es_Camera - Fatal编程技术网

Android 摄像机运动。如何移动相机?

Android 摄像机运动。如何移动相机?,android,opengl-es,camera,Android,Opengl Es,Camera,我目前有一个OpenGL渲染器设置,它显示一个2d正方形和另一个2d形状。通过使用这些键,用户可以左右上下移动正方形。这是通过基于用户是否按上下左右键而改变的值平移正方形来实现的,例如,如果用户按右键,则表示gl.glTranslatef(rightdisplacement,0,0)的平移;等等。运动很好,但我不知道如何让相机在继续运动时跟随正方形。我想移动正方形并使相机朝同一方向移动。如果您正在进行2D渲染,您可能正在调用某个地方来定义坐标系。完全是推测,但您的代码可能看起来像: glOrth

我目前有一个OpenGL渲染器设置,它显示一个2d正方形和另一个2d形状。通过使用这些键,用户可以左右上下移动正方形。这是通过基于用户是否按上下左右键而改变的值平移正方形来实现的,例如,如果用户按右键,则表示gl.glTranslatef(rightdisplacement,0,0)的平移;等等。运动很好,但我不知道如何让相机在继续运动时跟随正方形。我想移动正方形并使相机朝同一方向移动。

如果您正在进行2D渲染,您可能正在调用某个地方来定义坐标系。完全是推测,但您的代码可能看起来像:

glOrtho(0,屏幕宽度,0,屏幕高度,-1,1)

这是定义相机位置的地方。创建相机位置x和y位置变量,并调用

glOrtho( camX - screenWidth/2, camX + screenWidth/2, camY - screenHeight/2, camY + screenHeight/2, -1, 1 );
确保这称为每帧,因为相机位置将明显改变。渲染代码可能类似于

// clear framebuffer

glMatrixMode( GLES10.GL_PROJECTION );                
glLoadIdentity();        
glOrtho( camX - screenWidth/2, camX + screenWidth/2, camY - screenHeight/2, camY + screenHeight/2, -1, 1 );

glMatrixMode( GLES10.GL_MODELVIEW );                 
glLoadIdentity();

// draw your stuff                                 

如果您正在进行2D渲染,则可能需要调用某个地方来定义坐标系。完全是推测,但您的代码可能看起来像:

glOrtho(0,屏幕宽度,0,屏幕高度,-1,1)

这是定义相机位置的地方。创建相机位置x和y位置变量,并调用

glOrtho( camX - screenWidth/2, camX + screenWidth/2, camY - screenHeight/2, camY + screenHeight/2, -1, 1 );
确保这称为每帧,因为相机位置将明显改变。渲染代码可能类似于

// clear framebuffer

glMatrixMode( GLES10.GL_PROJECTION );                
glLoadIdentity();        
glOrtho( camX - screenWidth/2, camX + screenWidth/2, camY - screenHeight/2, camY + screenHeight/2, -1, 1 );

glMatrixMode( GLES10.GL_MODELVIEW );                 
glLoadIdentity();

// draw your stuff