2014-02-12 1 views

답변

1

OpenGL의 오버레이 인 Rajawali를 사용합니다.

http://www.rozengain.com/blog/2011/08/23/announcing-rajawali-an-opengl-es-2-0-based-3d-framework-for-android/

난 강력하게 멀리는 OpenGL의 고통이 많이 걸립니다 당신이 너무 그것을 사용하는 것이 좋습니다 것입니다. 어쨌든, 내가 쓴 것은 Rajawali 코드가 포함되어 있지만 원칙은 비슷해야하며 필요한 것을 골라 낼 수 있어야합니다. 당신이 내 작업의 결과를 보려면 여기를보고있는 경우 :

http://www.youtube.com/watch?v=yEioXZT-lv0

내가 카메라 뷰 프로그래밍 방식이 아닌 레이아웃 XML의를 만드는이 작업을 수행 할 수 있습니다. 나는 조금에 대한 연주했다하지만 나를 위해 일한 다음 -이 당신의 활동의 당신의에서 onCreate 방식으로 진행됩니다

mOpenCvCameraView = (CameraBridgeViewBase) new JavaCameraView(this, -1); 
    mOpenCvCameraView.setCvCameraViewListener(this); 

    mLayout.addView(mOpenCvCameraView); 

    mSurfaceView.setZOrderMediaOverlay(true); 
    setGLBackgroundTransparent(true); 
    mRenderer = new OpenGLRenderer(this); 
    mRenderer.setSurfaceView(mSurfaceView); 
    super.setRenderer(mRenderer); 

mRenderer.setCameraPosition(0, 0, 20); 

OpenGLRenderer 여기 차례로 GLSurfaceView.Renderer를 확장 RajawaliRenderer을 확장합니다. 아마도 여기에서 재현하는 것이 아니라 후자의 두 가지 소스 코드를 살펴 보는 것이 가장 좋습니다. 내 OpenGLRenderer에서는 initScene() 메서드에서 객체, 카메라 등을 설정했습니다. 또한 물체의 움직임을 제어하기 위해 활동에서 호출 할 수있는 메소드를 추가 등

내 활동이 아래에 배치 클래스의 핵심 요소로 RajawaliActivity를 확장 : 나는 희망

public class RajawaliActivity extends Activity { 
protected GLSurfaceView mSurfaceView; 
protected FrameLayout mLayout; 
protected boolean mUsesCoverageAa; 
private RajawaliRenderer mRajRenderer; 
protected boolean checkOpenGLVersion = true; 
protected boolean mDeferGLSurfaceViewCreation = false; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if(!mDeferGLSurfaceViewCreation) 
     createSurfaceView(); 
} 

protected void createSurfaceView() 
{ 
    mSurfaceView = new GLSurfaceView(this); 

    ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 

    mSurfaceView.setEGLContextClientVersion(2); 

    mLayout = new FrameLayout(this); 
    mLayout.addView(mSurfaceView); 


    setContentView(mLayout); 
} 

이것은 도움이됩니다 - 행운을 빌어 요!

+0

감사합니다. 코드 google https://code.google.com/p/andar/ 프로젝트에서 도움을 얻었습니다. – Choris

+0

감사합니다. 괜찮아 보입니다. – timegalore

0

onCreate() 방법에서 이와 같이 할 수 있습니다. MyGLSurfaceView 생성자의 setFormat(PixelFormat.TRANSLUCENT)을 기억하십시오.

mGLView = new MyGLSurfaceView(this); 
    setContentView(mGLView); 

    mOpenCvCameraView = (CameraBridgeViewBase) new JavaCameraView(this, -1); 
    mOpenCvCameraView.setCvCameraViewListener(this); 
    addContentView(mOpenCvCameraView, new LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
관련 문제