Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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 I';我在openGL中设置相机时遇到问题_Android_Opengl Es - Fatal编程技术网

Android I';我在openGL中设置相机时遇到问题

Android I';我在openGL中设置相机时遇到问题,android,opengl-es,Android,Opengl Es,现在我有一个平截头台,我真的需要一个矫形器来代替,但我不能让它工作,所以我尝试了一个平截头台。当我更改视图的参数时,gloweat不会更改视图,现在唯一对视图有影响的是glViewport。我刚刚注意到我在玩它,实际上应该是glViewport(0,0,宽度,高度) 有几件事: 在onDrawFrame中调用转换方法,因此它们会累积。您应该包括push/popMatrix或glLoadIdentity 在绘制每个对象之前调用glLoadIdentity,撤消投影变换 将当前矩阵模式保留为投影模

现在我有一个平截头台,我真的需要一个矫形器来代替,但我不能让它工作,所以我尝试了一个平截头台。当我更改视图的参数时,
gloweat
不会更改视图,现在唯一对视图有影响的是
glViewport
。我刚刚注意到我在玩它,实际上应该是
glViewport(0,0,宽度,高度)

有几件事:

  • 在onDrawFrame中调用转换方法,因此它们会累积。您应该包括push/popMatrix或glLoadIdentity
  • 在绘制每个对象之前调用glLoadIdentity,撤消投影变换
  • 将当前矩阵模式保留为投影模式,但应切换到modelview进行转换
  • 建议将orthof应用于投影矩阵,将glulookat应用于modelview(有关说明,请参见)
我认为应该是这样的:

onSurfaceChanged(...) { 
   glViewPort(...)
   glMatrixMode(GL10.GL_PROJECTION);
   glOrthof(...);
   glMatrixMode(GL10.GL_MODELVIEW);
}

onDrawFrame(...) {
   glLoadIdentity();
   GLU.gluLookAt(...);
   for each object {
      glPushMatrix();
      glRotatef(...);
      glTranslatef(...);
      drawObject(...);
      glPopMatrix();
   }
}
希望这有帮助,干杯,阿尔特

onSurfaceChanged(...) { 
   glViewPort(...)
   glMatrixMode(GL10.GL_PROJECTION);
   glOrthof(...);
   glMatrixMode(GL10.GL_MODELVIEW);
}

onDrawFrame(...) {
   glLoadIdentity();
   GLU.gluLookAt(...);
   for each object {
      glPushMatrix();
      glRotatef(...);
      glTranslatef(...);
      drawObject(...);
      glPopMatrix();
   }
}