设为首页 加入收藏

TOP

OpenGL ES 在Android平台的移植性问题
2014-11-24 11:52:51 来源: 作者: 【 】 浏览:0
Tags:OpenGL Android 平台 移植 问题

但到了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入门:向TextView添加滚动.. 下一篇Android HandlerThread使用小例

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++ Lambda表达式保 (2025-12-26 05:49:45)
·C++ Lambda表达式的 (2025-12-26 05:49:42)
·深入浅出 C++ Lambda (2025-12-26 05:49:40)
·C语言指针从入门到基 (2025-12-26 05:21:36)
·【C语言指针初阶】C (2025-12-26 05:21:33)