android 使用opengl开发VR的使用
来源:互联网 发布:芙丽芳丝洗面奶知乎 编辑:程序博客网 时间:2024/06/05 03:41
opengl 学习了快一个月了主要是参考午王的博客来学习的:
http://blog.csdn.net/junzia/article/category/6462864
下面是自己封装的着色器工具类:
public class ShaderUtils { public static int createprograms(String vertpath1,String fragpath2){ int vertextype= GLES20.glCreateShader(GLES20.GL_VERTEX_SHADER); GLES20.glShaderSource(vertextype,getstr(vertpath1)); GLES20.glCompileShader(vertextype); int fragtype=GLES20.glCreateShader(GLES20.GL_FRAGMENT_SHADER); GLES20.glShaderSource(fragtype,getstr(fragpath2)); GLES20.glCompileShader(fragtype); int programs=GLES20.glCreateProgram(); GLES20.glAttachShader(programs,vertextype); GLES20.glAttachShader(programs,fragtype); GLES20.glLinkProgram(programs); return programs; } public static String getstr(String path1){ try { Log.e( "getstr: ","aaaaaaaa" ); InputStream input=Tp.app.getAssets().open(path1); int len=input.available(); byte[]bytes=new byte[len]; input.read(bytes); String str=new String(bytes); Log.e("getstr: ",str ); return str; } catch (IOException e) { e.printStackTrace(); } return null; }}在render中动态更改贴图:
@Override public void onDrawFrame(GL10 gl10) { GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT|GLES20.GL_DEPTH_BUFFER_BIT); if (change){ Log.e( "onDrawFrame: ","qqqqq" ); textureId =createTexture(); calculateAttribute(); change=false; }
计算贴图是耗时操作只在更改时更改.
list =new ArrayList<>(); list.add("vr/1.jpg"); list1.add("房间1"); list.add("vr/2.jpg"); list1.add("房间2"); list.add("vr/3.jpg"); list1.add("房间3"); list.add("vr/4.jpg"); list1.add("九寨沟"); list.add("vr/5.jpg"); list1.add("安徽章山大峡谷"); list.add("vr/6.jpg"); list1.add("四川黄龙景区"); list.add("vr/7.jpg"); list1.add("芙蓉洞金銮宝殿"); list.add("vr/8.jpg"); list1.add("深圳海上田园"); list.add("vr/9.jpg"); list1.add("花都新加坡"); list.add("vr/10.jpg"); list1.add("赤壁卧龙槐"); list.add("vr/11.jpg"); list1.add("珠穆朗玛"); spinner = ((Spinner) findViewById(R.id.spinner)); spinner.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list1)); glview = ((GLView) findViewById(R.id.glview)); init(glview); mSensorManager =(SensorManager)getSystemService(Context.SENSOR_SERVICE); List<Sensor> sensors= mSensorManager.getSensorList(Sensor.TYPE_ALL); mRotation =mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { if (first){ Log.e( "onItemSelected: ","1111" ); glview.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); // ((VrRender) renderer).create(); ((VrRender) renderer).change=true; ((VrRender) renderer).setbtmap(MainActivity.this,list.get(i)); // glview.onResume(); glview. requestRender(); // glview. requestRender(); glview.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); } first=true; } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); }动态更改文理贴图:
使用dirty模式更改再切换回动画模式
这是自己加的一些,其他的还是去参考午王的博客,他写的比我的好多了。
学了这么久好歹也是有些入门了。
项目下载地址:
http://pan.baidu.com/s/1kVPzfAf
阅读全文
0 0
- android 使用opengl开发VR的使用
- Android VR的使用
- VR开发 入门 使用Three.js 开发的WebVR demo
- VR开发 入门 使用Three.js 开发的WebVR demo
- Android 3D开发,OpenGL ES 的使用(一)
- VR开发——Unity中导入常用的VR开发插件及简单使用
- android openGl纹理的使用
- Android 如何使用NDK开发OPenGL ES
- Android OpenGL ES 开发中的Buffer使用
- Android 如何使用NDK开发OPenGL ES
- Android OpenGL ES 开发中的Buffer使用
- 使用HTC和Steam VR进行unity VR的开发第一步
- 使用HTC和Steam VR进行unity VR的开发第二步 (实现功能)
- Unity使用UGUI进行VR游戏的界面开发
- 探索使用 Unity 开发 Gear VR App 遇到的坑
- Google vr sdk的使用
- c#使用vr box 手柄开发
- Unity使用暴风魔镜VR游戏开发
- UVA839NotSoMobile
- python17常用模块
- oracle-约束
- Lua学习笔记
- CSS学习笔记:布局(内外边距与漂浮)与定位
- android 使用opengl开发VR的使用
- 面试题65:滑动窗口的最大值
- 指定maven的编译版本和编码
- DUTOJ 1110 比赛成绩 DFS 并查集
- POJ 2796:Feel Good (单调栈)
- python 多进程实例 进程间的通信
- VS2015动态库编程之MFC扩展动态库(下)
- python18运维应用
- C#中Equal与==的使用原则