我什么时候应该在android中调用glEnableClientState()和glDisableClientState()

Leo*_*ava 6 android opengl-es

我只是glEnableClientState()在接口onSurfaceCreated()方法中调用一次GLSurfaceView.Renderer.例如:

public class GLRenderer implements GLSurfaceView.Renderer {
   @Override
   public void onSurfaceCreated(GL10 gl, EGLConfig config) {
      gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
      gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
      ...
}
Run Code Online (Sandbox Code Playgroud)

之后我不再调用它们了.我从不调用这个glDisableClientState()方法.但是我看到许多程序员调用这两种方法经常将它们包装在所有绘图调用中.

我的方法有什么问题吗?或者使用围绕所有绘图调用包装它们的方法是一种好的做法还是更有效?

Tim*_*Tim 3

我不认为你的方法有什么问题,只要你的所有绘制调用都需要相同的状态。如果您正在绘制没有法线/颜色的东西,则您不希望启用法线/颜色数组等。

如果您的所有对象都确定使用相同的数组,那么您的方法可能是最好的,因为您可以消除不必要的 opengl 调用。禁用每个对象之后的所有内容可能会降低性能,但一般来说更安全,因为您不会意外地启用您不想要的某些内容。