`
leili
  • 浏览: 179697 次
社区版块
存档分类
最新评论

OpenGL es 在android平台的移植性问题

 
阅读更多

Android上为了让视频显示的更流畅,自然要使用到NDK, 没有采用YUV420 overlay的方式, 而采用平台移植更安全的RGB565显示。 在android 2.3上测试通过。

但到了MTK andriod平台(A301)遇到glTexImage2D gl_error 0x501的错误(源图像为176*144)。 经过反复测试, 这个mtk andriod版本支持opengl es, 但对源图像的分辨率有奇怪的限制。当源尺寸宽高必须是64的倍数而且一般宽高为2倍的关系。比如512*256, 256*128都是可以的。 只能先把图像缩放到256*128, 然后再用opengl es刷屏。

另外, OpenSL es在MTK的android上也还是可以用的。


~~~最后 贴上opengl es的sample code给大家参考咯


void OpenGL_Resize(jint screen_width, jint screen_height)

{

glDeleteTextures(1, &s_texture);
GLuint *start = s_disable_caps;
while (*start)
glDisable(*start++);
glEnable(GL_TEXTURE_2D);

glGenTextures(1, &s_texture);

glBindTexture(GL_TEXTURE_2D, s_texture);

glTexParameterf(GL_TEXTURE_2D,
GL_TEXTURE_MIN_FILTER, GL_LINEAR);

glTexParameterf(GL_TEXTURE_2D,
GL_TEXTURE_MAG_FILTER, GL_LINEAR);

glShadeModel(GL_FLAT);
check_gl_error("glShadeModel");
glColor4x(0x10000, 0x10000, 0x10000, 0x10000);
check_gl_error("glColor4x");
int rect[4] = {0, TEXTURE_HEIGHT, TEXTURE_WIDTH, -TEXTURE_HEIGHT};
glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, rect);
check_gl_error("glTexParameteriv");
VideoWidth = width;
VideoHeight = height;

}


static void render_video_opengl(unsigned char* rgb_buffer)
{
glClear(GL_COLOR_BUFFER_BIT);
glTexImage2D(GL_TEXTURE_2D,/* target */
0, /* level */
GL_RGB, /* internal format */
TEXTURE_WIDTH,/* width */
TEXTURE_HEIGHT,/* height */
0, /* border */
GL_RGB, /* format */
GL_UNSIGNED_SHORT_5_6_5,/* type */
rgb_buffer); /* pixels */
check_gl_error("glTexImage2D");
glDrawTexiOES(0, 0, 0, VideoWidth, VideoHeight);
check_gl_error("glDrawTexiOES");
}



分享到:
评论

相关推荐

    基于Android+NDK进行OpenGL_ES开发的完整案例

    本文主要介绍了如何使用Android NDK技术通过JNI实现Android Java层与C层的数据交互,并结合OpenGL ES 在C层实现一个3D效果代码,在Java层用于显示的软件。 一、 Android NDK简介 Android NDK是一套工具,帮助...

    Android NDK opengl ES

    - **可移植性降低**:使用本地代码会使得应用程序失去一定的可移植性。 #### 三、JNI介绍 JNI (Java Native Interface) 是一个框架,用于实现Java和本地代码之间的交互。在Android NDK中,JNI主要被用来调用C/C++...

    Mali OpenGL ES SDK for Linux on ARM v2.0.0

    7. **移植性支持**:针对不同版本的OpenGL ES提供兼容性解决方案,确保代码能在不同设备上运行。 Mali OpenGL ES SDK v2.0.0的发布,带来了以下主要改进: 1. **性能提升**:优化了图形处理流程,减少了延迟,提高...

    android 系统移植讲解

    例如,对于GPU,可能需要移植OpenGL ES驱动;对于无线通信模块,可能需要移植相应的无线协议栈。 然后是文件系统和RIL(Radio Interface Layer)的设置。文件系统包含系统库、二进制文件、配置文件等,需要根据目标...

    OpenglEs从零开始

    由于OpenGL ES的跨平台特性,其函数名在各平台是一致的,因此在iOS平台上编写的代码,使用的是相同的OpenGL ES函数,在Android的Java及NDK(Native Development Kit)上也可以移植使用。这一点为开发者提供了极大的...

    疯狂android资料:第十二章OpenGL与3D应用开发.doc

    Android SDK中,OpenGL ES的支持主要集中在`android.opengl`包下,包括GLSurfaceView、GLU、GLUtils等工具类,它们使得在Android应用中使用OpenGL ES变得更加便捷。 在Android中,开发3D应用的关键在于使用...

    opengl es 2.0 programming guid

    - 为了实现跨平台兼容性,开发人员需要遵循OpenGL ES 2.0规范,确保代码的一致性和移植性。 6. **OpenGL ES 2.0的未来发展趋势**: - 随着移动设备性能的提升,OpenGL ES 2.0正在逐步被OpenGL ES 3.x系列所取代,...

    Adreno openg es developer guide.pdf

    在“About Android”部分,文档可能会解释OpenGL ES如何在Android平台上得到支持,以及Android和OpenGL ES在Adreno GPU上的交互方式。此外,“OpenGLES2.0 with Adreno”表明文档将涉及OpenGL ES 2.0版本,并会指出...

    CEGUI android 移植

    在Android平台上移植CEGUI是一项技术挑战,因为Android的图形系统与传统桌面环境有很大不同,主要基于OpenGL ES。本文将详细介绍CEGUI在Android上的移植过程及其相关知识点。 首先,理解CEGUI的核心概念是必要的。...

    性能强劲的PocketPC3D开发库OpenGLES.rar

    7. **跨平台兼容**:OpenGLES是一个跨平台的标准,可以在iOS、Android、Linux等多种操作系统上运行,确保代码的可移植性。 资源包中的"PocketGLTest"可能是一个测试程序或者示例项目,用于演示OpenGLES的基本使用...

    J2ME游戏移植Android平台要点

    在本文中,我们将深入探讨如何将J2ME游戏移植到Android平台的关键点,以及两者之间的主要差异。 首先,让我们简要了解一下J2ME和Android的基础。J2ME(Java 2 Micro Edition)是Java 2的一个子集,设计用于嵌入式...

    Android驱动移植与开发

    - **图形栈驱动**:包括GPU、Framebuffer、OpenGL ES等,处理图形渲染和显示任务。 3. **驱动开发流程** - 驱动分析:理解硬件工作原理和接口规范。 - 驱动编写:基于硬件特性,编写相应的内核驱动代码。 - ...

    android游戏开发引擎 ANGLE

    它在Android系统中扮演着至关重要的角色,特别是在游戏开发领域,因为它使得基于OpenGL ES的游戏和应用能在Windows、Mac OS X甚至Linux等平台上运行,而无需进行大量的代码修改。 **1. ANGLE的起源与目标** ANGLE...

    CEGUI android 移植的deps

    在Android上,通常选择OpenGL ES作为渲染后端,因为它在移动设备上广泛支持。 7. **资源管理**:CEGUI需要纹理和其他资源。在Android上,这些资源可能需要被转换为适合Android格式,并通过Asset Manager加载。 8. ...

    Android 图形系统的分析与移植

    而在Android平台上,Skia结合OpenGL/ES及特定的硬件特性,进一步增强了图形显示的效果。OpenGL/ES是OpenGL的一个子集,是一个专为嵌入式系统设计的跨平台图形库。 Android图形系统的整体架构如图1所示: - 上层...

    如何基于OpenGL实现视频处理

    OpenGL的核心优势在于它的软件接口与硬件无关,具有高度的移植性。 OpenGL ES是OpenGL的一个子集,专门针对嵌入式系统,如手机、平板电脑和游戏机。OpenGL ES 1.0/1.1版本相对较简单,而OpenGL ES 2.0引入了可编程...

    Android图形系统的分析与移植

    通过对SurfaceManager、Skia、OpenGL/ES等关键技术的深入分析,以及移植策略的探讨,我们能够更好地理解和掌握Android图形系统的本质,为跨平台移植和定制化开发奠定坚实基础。未来,随着硬件技术的不断进步,...

    现代 OpenGL 教程 01——入门指南

    8. 可移植性和兼容性:教程强调了代码在不同OpenGL版本以及在Android和iOS的OpenGLES平台上的兼容性。现代OpenGL致力于向后兼容OpenGL 2.1,同时向前兼容OpenGL 3.x和4.x。兼容性列表展示了在不同版本间的细微区别,...

Global site tag (gtag.js) - Google Analytics