Android 용 기본 3D 게임을 만들었으며 HUD를 추가하고 싶습니다. 어떻게해야합니까? 3D 게임 위에 배치 된 레이아웃을 추가 할 수 있습니까, 아니면 OpenGL을 사용하여이 작업을 수행해야합니까?Android : OpenGL-ES 게임 (HUD) 이미지
답변
일반적인 해결 방법은 3D 장면을 그 다음 직각 투영으로 전환하고 OpenGL을 사용하여 HUD를 계속 칠하는 것입니다. OpenGL 캔버스 위에 일반 구성 요소를 배치하면 예기치 않은 결과가 발생할 수 있습니다 (깜박이거나 단순히 보이지 않을 수도 있음).
하나 이상의 레이아웃을 OpenGL 레이아웃에 추가 할 수 있습니다. 이렇게하려면 RelativeLayout으로 시작해야합니다. OpenGL과 Hud Layout을 모두 포함합니다. 선언 순서는 중요합니다 (첫 번째 선언, 첫 번째 렌더링). Hud 레이아웃의 위치를 변경하려면 layout_margin 속성을 사용하거나, 전체 오버레이 인 경우 match_parent를 사용할 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- START of OpenGL Layout -->
<LinearLayout
android:id="@+id/openGLLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="0dp"
android:layout_marginTop="0dp" >
</LinearLayout>
<!-- END of OpenGL Layout -->
<!-- START of HUD Layout -->
<LinearLayout
android:id="@+id/hudLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:layout_marginTop="50dp">
<TextView
android:id="@+id/hudText"
android:text="Hud Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</TextView>
</LinearLayout>
<!-- END of HUD Layout -->
</RelativeLayout>
이 예제에서 OpenGL 레이아웃은 컨테이너로 사용되는 empy LinearLayout입니다. 나는 코드에 의해이 RelativeLayout의 내 자신의 GLSurfaceView를 추가
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main);
MyOpenGLSurfaceView view = new MyOpenGLSurfaceView(getApplication());
LinearLayout openGLLayout = (LinearLayout)findViewById(R.id.openGLLayout);
openGLLayout.addView(mView);
}
나는 확인 팝업 또는 상황에 맞는 메뉴 주로이 방법을 사용합니다. 이렇게하면 openGL을 사용하여 직접 버튼을 만들 필요가 없습니다.
나는 똑같은 문제를 겪고 있었고 나는 거의 1 년 동안 그것을 앓고있었습니다. 나는 XML 레이아웃을 사용하지 않은, 대신과 같이 자바에서보기를 추가하고 다음 addView가과 같이 호출에 내가 가진
rel.addView(camPreview, camParams);
rel.addView(glView, glParams);
rel.addView(imageView, imageParams);
하나의 제안 AZ 인덱스 PARAM을 추가했다 :
rel.addView(camPreview, 0, camParams);
rel.addView(glView, 1, glParams);
rel.addView(imageView, 2, imageParams);
하지만 그
내가 심지어 XML 레이아웃으로 전환 시도하지만, 아직도 내가 솔루션이었다 결국
를 원하는 것을 ... 중 하나가 작동하지 않았다 :
를glView.setZOrderMediaOverlay(true);
rel.addView(camPreview, camParams);
rel.addView(glView, glParams);
rel.addView(imageView, imageParams);
참고 : setZOrderMediaOverlay (참)은 실제로보기
그것을 시도하고 당신을 위해 작동하는지 알려 주시기를 추가하기 전에 호출 할 필요가있다.
- 1. 게임 UI HUD
- 2. Android opengles glBindTexture() 호출
- 3. Android OpenGLES 기기 문제
- 4. Android OpenGLES Render-to-Texture
- 5. 격자 모양의 큐브 android opengles
- 6. 안드로이드 게임 이미지 형식
- 7. Opengles 1.0에서 Opengles 2.0으로 안드로이드 마이그레이션, 텍스처?
- 8. CCLayer UIGestureRecognizer 및 HUD
- 9. Android 게임 시작 화면
- 10. Android Opengles CameraPreview (카메라 피드에 텍스트 그리기)
- 11. Android 리소스 OpenGLES 2.0 예제 강제 종료
- 12. PC에서 opengles 프로그램 테스트
- 13. 아이폰 OpenGLES
- 14. 파이 게임 이미지 크기?
- 15. 게임 레벨로 이미지
- 16. 이미지 퍼즐 게임 도움말
- 17. 파이 게임 이미지 AttributeError
- 18. GLKView와 OpenGLES 1.1의 텍스처?
- 19. 모달 HUD on asynctask
- 20. Qt의 Mac HUD 창
- 21. AndEngine HUD 및 Scene
- 22. Xcode4 "Build Finished"HUD
- 23. HUD VIEW 란 무엇입니까?
- 24. UIImageView에 HUD 추가
- 25. CCUserDefault, ios/android 게임 및 게임 업데이트
- 26. OPENGLES 게임이 3 초마다 멈춤
- 27. Android 게임 성능 뷰어
- 28. Android 게임 개발.
- 29. Android 게임 최소화
- 30. Android 캔버스 게임 문제