[高分求解] Android使用opengles显示YUV420数据的问题

李狗蛋52635 李狗蛋52635 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
各位好,我最近在尝试使用opengl来显示YUV420数据,遇到了一些问题,希望各位帮忙解答。

1. 关于流程,我想是在Java层写Renderer类,然后在Renderer的onDrawFrame()/onSurfaceChanged()/onSurfaceCreated()中分别去调用native层的代码,native负责调用所有的opengles接口,在opengl的shader中进行YUV->RGB的转换,然后通过texture渲染出来,不知道这样的思路是否正确?

2. 在使用shader时,我在c代码中是这样写的:


GLuint loadShader(GLenum shaderType, const char *pSource) {
GLuint shader;
GLint compiled;

shader = glCreateShader(shaderType);
LOGD("JNI -> new Shader = %1$d", shader);
if (shader) {
glShaderSource(shader, 1, &pSource, NULL);
glCompileShader(shader);
glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
LOGD("JNI -> compile = %1$d", compiled);
if (!compiled) {
........


我新建了2个shader(GL_VERTEX_SHADER和GL_FRAGMENT_SHADER),但是通过打log发现,2个shader的值是一样的(都是43),两个compiled的值也是一样的(是1393950951这种长数字),我感觉这样是不对的,请问这样对吗,为什么?

3. 各位有没有做过这方面的例子,或有成熟的、好的思路,请不吝赐教,十分感谢!
...全文
评论 1
收藏 已收藏
分享
返回顶部
李狗蛋52635
Android 80,490 成员 91,375 内容