当前位置: 首页 > 知识库问答 >
问题:

Android GLSURFACHEVIEW超过MediaPlayer SURFACHEVIEW

倪振海
2023-03-14

我有一个MediaPlayer使用SurfaceView来显示视频。现在我想在mediaplayer上添加GlSurfaceView,以便在视频上渲染立方体。我使用的是相对布局。我可以分别完成这两项工作,但是,我无法将GlSurfaceView置于SurfaceView之上。它只是不呈现我用于多维数据集的OpenGL代码。有人能帮忙吗?

   _cube = new CubeGLView(this);
   _cube.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
   _cube.setId(10002);
   _cube.getHolder().setFormat(PixelFormat.TRANSLUCENT);
   _cube.getHolder().setFormat(PixelFormat.RGBA_8888);
   //_cube.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);

   _render = new GlRenderer(_cube.getContext());
   _cube.setRenderer(_render);
   _cube.setVisibility(View.GONE);

   RelativeLayout layout = new RelativeLayout(this);
   RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
   RelativeLayout.LayoutParams.MATCH_PARENT,
   RelativeLayout.LayoutParams.MATCH_PARENT);

   RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
   RelativeLayout.LayoutParams.WRAP_CONTENT,
   RelativeLayout.LayoutParams.WRAP_CONTENT);
   lp.addRule(RelativeLayout.CENTER_IN_PARENT);

   mPreview.setLayoutParams(lp);
   _cube.setLayoutParams(lp);

   layout.addView(_cube);
   layout.addView(mPreview);

   setContentView(layout, rlp);

共有1个答案

阎祖鹤
2023-03-14

解决它:mPreview=新的SurfaceView(此);mPreview。setId(10001);

    mPreview.setOnClickListener(this);
    mPreview.setClickable(true);

    holder = mPreview.getHolder();
    holder.addCallback(this);
    holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    extras = getIntent().getExtras();


    _cube = new CubeGLView(this);
    _cube.setEGLConfigChooser(8, 8, 8, 8, 16, 0);

    _cube.setId(10002);
    _cube.getHolder().setFormat(PixelFormat.TRANSLUCENT);
    _cube.getHolder().setFormat(PixelFormat.RGBA_8888);


    _render = new GlRenderer(_cube.getContext());
    _cube.setRenderer(_render);



    RelativeLayout layout = new RelativeLayout(this);
    RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.MATCH_PARENT);

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.MATCH_PARENT);
    lp.addRule(RelativeLayout.CENTER_IN_PARENT);

    mPreview.setLayoutParams(lp);

    LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.setMargins(100,10, 0,0);
    _cube.setLayoutParams(params);

    DataManager datamanager = DataManager.getInstance();

    if (!datamanager.isHasalreadyview()){
        Log.d(TAG, "onCreate icicle == null");
        layout.addView(_cube);
        layout.addView(mPreview);
        datamanager.setHasalreadyview(true);
    }else{
        Log.d(TAG, "onCreate icicle != null");
        layout.addView(mPreview);
        layout.addView(_cube);
    }


    setContentView(layout, rlp);
 类似资料:
  • 我使用命令生成器在Jenkins服务器上运行单元测试。phar exec“codecept运行单元应用程序/模型”-vvv并获取以下错误: [Symfony\Component\Process\Exception\ProcessTimedOutException] 进程“codecept运行单元应用程序/模型”超过了1800秒的超时时间。 我如何修复它并允许测试花费更多的时间?谢谢

  • 我试图用SpringBoot从客户端发送Excel,但是当我获取文件时出错。我添加了我的财产10MB或300MB的最大值,但它不运行。 org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException:字段uploadFile超过其允许的最大大小1048576字节。at org.apache.t

  • 和我的CSS:

  • 问题内容: 我正在使用Hibernate,试图模拟2个并发更新到数据库中的同一行。 编辑:我将em1.getTransaction()。commit移到em1.flush()之后;我没有收到任何StaleObjectException,两个事务已成功提交。 我在上遇到以下异常。为什么? 问题答案: 好吧,您正试图陷入僵局,并且成功了:-) Transaction1开始,与您的实体更新(和锁定)行。

  • 问题内容: 我有一个自动运行git clone /pull的脚本(这实际上发生在jenkinsCI中,但我的问题更笼统)。远程git服务器基于HTTPS。带有git客户端的计算机具有不稳定的DSL Internet连接,因此有时会重新连接并更改IP地址,从而丢失所有现有连接。当git客户端运行时连接失败时,客户端将永远不会成功,但也不会因超时而失败,因此我的脚本会挂断。 我想设置客户端,使其在一段

  • 问题内容: 所以我用这个例子: https://github.com/mcmoe/mssqldocker 为了创建一个SQL Server映像并将其加载数据。我有几个运行容器时运行的sql脚本。 但是,在构建映像时,我开始出现此错误: 我不确定如何解决此问题,我重新启动了docker甚至更新了它。我读了约125层的书吗?谁能解释这个的原因和可能的解决方法? 我发现此命令可以运行: 我的docker