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平台采集Camera的YUV原始数据后使用OpenGLES2.0显示,内置YV12格式的YUV分量分离。 附件为完整例子,感谢“李狗蛋52635”提供的GLProgram类。
该案例代码为Android 平台OpenGL ES实现...1、在Android平台,使用OpenGL ES通过加载灰度图,构建山地图形渲染效果; 2、使用 OpenGLES 生成与使用Mipmap纹理,构建远处模糊,近处清晰的效果。 具体案例文章讲解请见: ...
超棒的Android的OpenGL ES入门教程!由 Per-Erik Bergman写的6个教程,并附带一份OpenGL ES 1.1 Reference Pages。 内容介绍: OpenGL ES Tutorial for Android – Part I – Setting up the view OpenGL ES ...
Android开发之OpenGL ES教程,Android开发之OpenGL ES教程,Android开发之OpenGL ES教程,Android开发之OpenGL ES教程,Android开发之OpenGL ES教程,Android开发之OpenGL ES教程,Android开发之OpenGL ES教程,...
OpenGL ES 2 for Android A Quick-Start Guide
分享OpenGL ES 2 for Android文档
由资深Android开发专家根据OpenGLES2.0版本撰写,不仅系统地讲解了OpenGLES的核心概念、技术,以及Android的图形机制,还通过大量案例讲解了在Android上进行OpenGLES开发的方法和技巧。 《OpenGL ES应用开发实践...
在Android平台,使用OpenGLES3.0实现纹理纹理、颜色混合代码实现举例。 具体案例文章讲解请见: https://xiaxl.blog.csdn.net/article/details/121634894
Android平台,OpenGL ES3.0 点、线、三角形绘制方式源码实现举例。 相关绘制方式文章讲解请参考: https://xiaxl.blog.csdn.net/article/details/8873002
The example code in this class uses the OpenGL ES 2.0 APIs, which is the recommended API version to use with current Android devices. For more information about versions of OpenGL ES, see the OpenGL ...
本程序是在Eclipse中创建的一个Android Application,该项目中是在JNI中利用OpenGL ES库和OpenCV库进行一副图片的渲染。
opengles 移植到三星6410 的代码
Android OpenGL ES 简明开发教程
1.Android开发之OpenGL+ES教程 2.Android下Opengl+ES导引 3.OpenGL_ES_Programming_Guide_v1.0.2part1 4.OpenGL_ES_Programming_Guide_v1.0.2Part2 5.OpenGL + es + 2.0 + demo 6.OpenGL + ES + three + books 7....
For more information, as well as the latest Pragmatic titles, please visit us at http://pragprog.com. The Android robot is reproduced from work created and shared by Google and is used according to ...
Android OpenGl ES用点绘制的方式绘制圆点,并对圆点进行抗锯齿优化。
( Pro OpenGL ES for Android Part2.zip )
OpenGL ES 2 for Android.pdf高清
由资深Android开发专家根据OpenGLES2.0版本撰写,不仅系统地讲解了OpenGLES的核心概念、技术,以及Android的图形机制,还通过大量案例讲解了在Android上进行OpenGLES开发的方法和技巧。 《OpenGL ES应用开发实践...
基于OpenglES2.0的Android平台水波纹动态壁纸,OpenGL部分由ndk实现,目前在4.0以上系统能正常运行,但在2.3.5这些系统上会有纹理严重失真的问题,还有效率不是很高,主要是网格计算量太大,在魅族MX机器上运行只能...