怎么把android OpenGL ES 绘制的图像背景变为透明

 我来答
匿名用户
2017-09-04
展开全部
OpenGLES是一个让人崩溃的东西。在Andorid手机上做3D还就得用它。把我记的一些笔记分享在这里吧: Android OpenGL ES简介 20011-6-3 Android系统使用OpenGL的标准接口来支持3D图形功能,android 3D图形系统也分为java框架和本地代码两部分。 本地代码主要实现的OpenGL接口的库,在Java框架层,javax.microedition.khronos.opengles是java标准的OpenGL包, android.opengl包提供了OpenGL系统和Android GUI系统之间的联系。 Android的本地代码位于frameworks/base/opengl下, JNI代码位于frameworks/base/core/com_google_android_gles_jni_GLImpl.cpp和frameworks/base/core/com_google_android_gles_jni_EGLImpl.cpp, java类位于opengl/java/javax/microedition/khronos下 本地测试代码位于frameworks/base/opengl/tests。包括angeles、fillrate等14个测试代码,这些代码都可以通过终端进行本地调用测试(模拟器中使用adb shell)。 OpenGL ES 1.x 固定管线操作,支持glVertexPointer()等函数,不支持GLSL。头文件在ndk的GLES目录下,库文件是libGLESv1_CM.so。 OpenGL ES 2.x 可编程管线操作,不兼容1.x,不支持固定管线操作,例如glVertexPointer()等函数。支持GLSL(还必须用这个来编程)。头文件在ndk的GLES2目录下,库文件是libGLESv2.so。 OpenGL ES学习 2011-6-30 OpenGL定义了自己的数据类型。应该坚持使用这些OpenGL的数据类型,从而保证可移植性和效率。 OpenGL ES 目前不支持64位数据类型。 OpenGL ES 只支持三边形。 OpenGL ES 只支持gl开头的函数,glu库都不支持。 OpenGL ES 从 OpenGL中删除的功能: 1. glBegin/glEnd 2. glArrayElement 3. 显示列表 4. 求值器 5. 索引色模式 6. 自定义裁剪平面 7. glRect 8. 图像处理(这个一般显卡也没有,FireGL/Quadro显卡有) 9. 反馈缓冲 10. 选择缓冲 11. 累积缓冲 12. 边界标志 13. glPolygonMode 14. GL_QUADS,GL_QUAD_STRIP,GL_POLYGON 15. glPushAttrib,glPopAttrib,glPushClientAttrib,glPopClientAttrib 16. TEXTURE_1D、TEXTURE_3D、TEXTURE_RECT、TEXTURE_CUBE_MAP 17. GL_COMBINE 18. 自动纹理坐标生成 19. 纹理边界 20. GL_CLAMP、GL_CLAMP_TO_BORDER 21. 消失纹理代表 22. 纹理LOD限定 23. 纹理偏好限定 24. 纹理自动压缩、解压缩 25. glDrawPixels,glPixelTransfer,glPixelZoom 26. glReadBuffer,glDrawBuffer,glCopyPixels OpenGL ES 2.0 2011-10-9 2.0和1.1不兼容。 - 2.0使用的头文件是ndk的include目录下的GLES2目录,有gl2.h,gl2ext.h,gl2platform.h,而1.1使用的是GLES目录。 - 2.0使用的库文件是ndk的lib目录下的libGLESv2.so,而1.1使用的是libGLESv1_CM.so。 - 2.0中取消了很多1.1函数,例如glMatrixModel和glLoadIdentity等。 OpenGL着色语言(GLSL――OpenGL Shading Language) - 使用2.0,必须学此语言。因为很多1.1的函数都被取消了。 san-angeles NDK OpenGL ES 1.1的例子程序 2012-3-8 San Angeles,查维基百科,是一个虚构的未来概念城市,位于南加州。常在电影中出现,来源自Los Angeles和San Diego. 该程序的演示效果是,观察一个宏伟的城市,地面是镜面有建筑倒影,城市中有飞船飞过。前后有5、6个观察点,而且镜头在每个观察点不停的移动。 这个例子,用NDK(C++)调用OpenGL ES 1.1来绘制了San Angeles这个城市。基本上全部使用了NDK,Java程序只有1个。 用vc2005演示一下,目的通过跟踪代码了解一些细节。方法是: - 将jni下所有的.h文件,以及demo.c,app-win32.c复制出来,放在一个专门的目录下,然后改造成用OpenGL的而不是ES的。(或者干脆删除大段的绘制代码,保证编译通过) 首先分析Java代码 - DemoActivity.java,这是唯一的Java文件,它主要需要下列4个jni的接口: - private static native void nativeInit(); // 初始化 - private static native void nativeResize(int w, int h); - private static native void nativeRender(); // 绘制1帧 - private static native void nativeDone(); 其次分析C++代码 app-android.c - 首先,调用了importGLInit(),动态导入OpenGL的库。 - 其次,调用了 appInit(),在内存中建立了平台无关的3D对象集合。建立方法是用一个数组,用类似画圆拔高的方式产生诸多三角形。 - 然后,在每个时钟周期中调用appRender(),细节是: - prepareFrame(width, height); // 准备OpenGL ES绘制框架。其实就是清空颜色和深度缓冲,重置投影和模型矩阵。 - camTrack(); // 算好在当前时钟周期,镜头的位置、朝向及焦距等。然后调用gluLookAt来实现。 - configureLightAndMaterial(); // 设置光源和材质 - drawModels(-1); // 先绘制倒影(其实就是将所有模型z轴倒过来画) - 第一个循环,是画精致的物体 - 第二个循环,是画运动的物体 - drawGroundPlane(); // 再绘制镜子一般的地面。在绘制前取消光照,打开混合,然后绘制。绘制后还原状态。 - drawModels(1); // 再绘制所有模型 - drawFadeQuad(); // 最后绘制淡出框,用融合的方式画一个遮住整个视口的2D框,融合系数和时间相关。
解说传感器应用
互联网爱好者

2017-09-04 · 网站编辑,王涛,佑富(上海)智能传感技术有限公司
解说传感器应用
采纳数:134 获赞数:651

向TA提问 私信TA
展开全部
在addview前面设置GLSurfaceView对象:

glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
glSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ej...8@sohu.com
2017-09-04 · TA获得超过208个赞
知道小有建树答主
回答量:250
采纳率:50%
帮助的人:53.3万
展开全部
我看你都是用三维坐标定义定点的。因为你的Z坐标都0,可试试用2维坐标gl.Vertex2f来定义这四个顶点的时候速度怎么样呢。gl.Vertex2f(0.0,768.0);gl.Vertex2f(0.0,0.0);gl.Vertex2f(1024.0, 768.0);gl.Vertex2f(1024.0, 0.0);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
longkouwuxin
2020-08-15 · TA获得超过144个赞
知道答主
回答量:141
采纳率:0%
帮助的人:29.9万
展开全部
1、GLView所在的Activity中的主题属性设置为:android:theme=”@style/Theme.Translucent” 。这样就可以保证最外在的背景是透明的。
2、使用8888 (RGBA) 格式,Alpha通道启用:
mGLSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
3、为GLView指定透明通道:mGLSurfaceView.getHolder() .setFormat(PixelFormat.TRANSLUCENT)。
4、在Render类中设置glClearColor(0,0,0,0);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式