Java 在Android中结合OpenGL ES渲染和UI元素
Android应用程序使用Android.opengl.GLSurfaceView呈现opengl ES:Java 在Android中结合OpenGL ES渲染和UI元素,java,android,opengl-es-2.0,opengl-es-3.0,Java,Android,Opengl Es 2.0,Opengl Es 3.0,Android应用程序使用Android.opengl.GLSurfaceView呈现opengl ES: public class GameActivity extends AppCompatActivity { private SurfaceView surfaceView; @Override protected void onCreate(Bundle state) { ... surfaceView = new SurfaceVi
public class GameActivity extends AppCompatActivity {
private SurfaceView surfaceView;
@Override
protected void onCreate(Bundle state) {
...
surfaceView = new SurfaceView(this);
setContentView(surfaceView);
}
}
public class SurfaceView extends GLSurfaceView {
private final SceneRenderer renderer;
public SurfaceView(Context context) {
...
renderer = new SceneRenderer(context);
setRenderer(renderer);
}
}
如何在OpenGL ES渲染上显示Android UI元素(如文本标签)?需要使用:
public class GameActivity extends AppCompatActivity {
private SurfaceView surfaceView;
@Override
protected void onCreate(Bundle state) {
setContentView(R.layout.activity_gl);
surfaceView = findViewById(R.id.oglView);
surfaceView.init(this.getApplicationContext());
}
}
public class SurfaceView extends GLSurfaceView {
private SceneRenderer renderer;
public SurfaceView(Context context) {
super(context);
}
public SurfaceView(Context context, AttributeSet attributes) {
super(context, attributes);
}
public void init(Context context) {
renderer = new SceneRenderer(context);
setRenderer(renderer);
...
}
}
并创建布局活动_gl.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
tools:context=".activities.GameActivity">
<com.app.SurfaceView
android:id="@+id/oglView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<TextView ... />
</androidx.constraintlayout.widget.ConstraintLayout>
要从渲染线程更新元素,可以使用Handler/Looper。需要使用:
public class GameActivity extends AppCompatActivity {
private SurfaceView surfaceView;
@Override
protected void onCreate(Bundle state) {
setContentView(R.layout.activity_gl);
surfaceView = findViewById(R.id.oglView);
surfaceView.init(this.getApplicationContext());
}
}
public class SurfaceView extends GLSurfaceView {
private SceneRenderer renderer;
public SurfaceView(Context context) {
super(context);
}
public SurfaceView(Context context, AttributeSet attributes) {
super(context, attributes);
}
public void init(Context context) {
renderer = new SceneRenderer(context);
setRenderer(renderer);
...
}
}
并创建布局活动_gl.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
tools:context=".activities.GameActivity">
<com.app.SurfaceView
android:id="@+id/oglView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<TextView ... />
</androidx.constraintlayout.widget.ConstraintLayout>
要从渲染线程更新元素,可以使用Handler/Looper