找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 437|回复: 8

虚拟实际 用户界面(VR UI): CrossApp的测验考试

[复制链接]

该用户从未签到

3

主题

13

帖子

9

积分

LV.1

Rank: 1

积分
9
QQ
发表于 2016-6-3 12:57:30 | 显示全部楼层 |阅读模式
起首讲一下, Android端 GLSu***ceView的衬着机制ARial">        CrossApp是基于Cocos2d-x引擎的,    而Cocos2d-x是完整基于 OpenGL的 。
        一般基于OpenGL的引擎 全部衬着机制 为:
         1 用EGL 库创立 窗口,联系关系OpenGL 高低文到该窗口
         2 设置窗口巨细 以及 glViewPort(...)
         3 while轮回里 , 写OpenGL衬着法式,衬着你想要的工具


       那么, 在Android端以上进程,都包括在了GLSu***ceView中。它供给了一个 Renderer接口, 此中应用最频仍的onDrawFrame就是用来,衬着我们想要的工具的。
       具体可以看 我的另一篇>        实在,编译成Android 版本的全部CrossApp都是 运行在 这个GLSu***ceView里面的, 此中 的衬着以及 触屏机制 都是  经由过程jni来挪用的, jni所应用的类都 在CrossApp/platform/android/jni/在目次下。 这些 jni native方式再往挪用引擎里的其它方式,从而, 在OnDrawFrame里经由过程 native CocosRender()方式衬着到GLSu***ceView上,浮现在我们的面前


CrossApp创立一个ListView的例子,
       若何 设置装备摆设CrossApp, 及创立Android工程,并运行工程的默认Demo,以及若何写一个简略的ListView请参考,>

       假如,以上您都胜利了,那么,我们重要讲授下若何将App的画面分屏。  
       起首,看一下,Android工程目次
        HelloCApp是我用 CrossApp创立的工程, 它依靠于CrossApp\platform\android\下的工程,重要是org.CrossApp.lib下的文件,它有
        为我们创立好的 Cocos2dxActivity, Cocos2dxGLSu***ceView, 和 Cocos2dxRenderer。
      
                    
        HelloCApp 与 org.CrossApp.lib的依靠关系如下:
            file:///C:/Users/can/AppData/Local/Temp/enhtmlclip/Image(1).png   




        其次,看一下, org.CrossApp.lib下的 类
        Cocos2dxActivity 是我们法式的主界面, 在这个类中 init方式里,会将Cocos2dxGLSu***ceView 视图添加到 一个frameLayout, 然后将该frameLayout作为界面的主视图。
        Cocos2dxGLSu***ceView 会经由过程setRenderer 将Cocos2dxRenderer 设置它的衬着接口。如许,当全部法式运行起来时, Cocos2dxRenderer的 onDrawFrame 会经由过程nativeRender()方式将 CrossApp创立的UI 衬着出来
        
      最后,若何分屏
         看到这里,我们基础已经知道,CrossApp的UI 都是 经由过程nativeRender()衬着出来的,即 在Cocos2dxRender.java 类的 onDrawFrame方式里:


        
   Cocos2dxRender.nativeRender() 是终极衬着到屏幕的纹理。
     我们假如可以或许拿到该纹理,则可以将纹理衬着到我们本身的面板上,
     即  先创立一个纹理依靠的 FrameBuffer, 然后nativeRender()将纹理衬着到这个依靠的纹理上,这个依靠的纹理就是我们想要的纹理,然后我们本身将屏幕分为摆布两个面板,将该纹理分辨衬着在这两个面板上,就到达了摆布分屏的目标
  
   VRSDK 是我本身写的SDK, bindOffSFrame() 就是绑定到纹理依靠的FrameBuffer上, showStereo() 是分屏的操纵。
   
   
若何应用VrSDK。
起首,>

  然后, 让 org.CrossApp.lib地点的工程,依靠于 VrSDK工程。
  
      
  最后, 在 Cocos2dxActivity的 onCreate(...)方式里,添加 VrSDK.getInstance().setContext(sContext);
              在 Cocos2dxRenderer里 的 onSu***ceChanged(...)方式里添加VrSDK.getInstance().init(pWidth, pHeight);


  
Okay,  看一下后果:
      




  如许就分屏了。  可以带上VR盒子体验了。


  提醒: 因为CrossApp是 App级的衬着引擎,不是游戏级的。是以,它在我们对App没有操纵时, 在C++ 层,是不再衬着的, UI会固定在最新的衬着出来的画面上。 可是,在Java层onDrawFrame仍是在不断的绘制的,这时,我们本身树立的FrameBuffer是拿不到图的,会呈现黑屏的现象。鄙人一贴,我会剖析,CrossApp的衬着机制,来解决这一题目。

该用户从未签到

0

主题

37

帖子

0

积分

LV.1

Rank: 1

积分
0
QQ
发表于 2016-6-22 00:39:27 | 显示全部楼层
想了解下AR增强现实的相关内容来看看

该用户从未签到

1

主题

8

帖子

3

积分

LV.1

Rank: 1

积分
3
QQ
发表于 2016-10-25 23:29:45 | 显示全部楼层
增强现实希望发展越来越好

该用户从未签到

2

主题

27

帖子

6

积分

LV.1

Rank: 1

积分
6
QQ
发表于 2016-11-29 18:29:34 | 显示全部楼层
嗯,很不错的样子!!

该用户从未签到

2

主题

32

帖子

6

积分

LV.1

Rank: 1

积分
6
发表于 2016-12-1 12:22:56 | 显示全部楼层
增强现实,增强现实,增强现实。重要的事情说三遍

该用户从未签到

3

主题

21

帖子

14

积分

LV.1

Rank: 1

积分
14
QQ
发表于 2016-12-2 09:21:14 | 显示全部楼层
看帖怎么能不会呢??

该用户从未签到

2

主题

37

帖子

11

积分

LV.1

Rank: 1

积分
11
QQ
发表于 2017-1-17 09:37:59 | 显示全部楼层
楼主辛苦了。。回帖是一种美德

该用户从未签到

1

主题

8

帖子

3

积分

LV.1

Rank: 1

积分
3
QQ
发表于 2017-4-15 10:28:57 | 显示全部楼层
竟然还有零回复,给我消失

该用户从未签到

0

主题

42

帖子

0

积分

LV.1

Rank: 1

积分
0
QQ
发表于 2017-10-2 02:47:46 | 显示全部楼层
楼主辛苦了,帮楼主顶起来
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表