在Android现有活动上绘制3D模型

问题描述 投票:0回答:1

我想在已有一些按钮,文本和图像的现有活动上绘制3D模型。我知道我们可以使用OpenGLES来做到这一点,但是它将创建一个绘制3D图形的窗口。我希望它像一个透明的模型。谁能帮我实现这一目标

android opengl-es opengl-es-2.0 3d-model
1个回答
0
投票

也许还有另一种方法,但是您可以尝试一下。

将UI元素和OGL视图结合在一起:

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);
        ...
    }
}

并创建布局activity_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>

但是要创建透明效果,最好在“框架”布局的元素中添加透明性,如:

<androidx.constraintlayout.widget.ConstraintLayout ...>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/darkYellow"
        android:alpha="0.5">
        <TextView ... />
    </androidx.constraintlayout.widget.ConstraintLayout>

    <com.app.SurfaceView
        android:id="@+id/oglView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

根据我自己的经验,透明度会影响性能,因此,如果有动画效果,最好不要使用透明度。

要从渲染线程更新UI元素,可以使用Handler / Looper。

© www.soinside.com 2019 - 2024. All rights reserved.