OpenGL es 在android平台的移植性問題

來源:互聯網
上載者:User

  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");
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.