博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android使用OpenGL ES2.0显示YUV,您的手机上的数据要解决两个方面的坐标
阅读量:5942 次
发布时间:2019-06-19

本文共 2109 字,大约阅读时间需要 7 分钟。

如果说 ,我不知道,如果你不明白这个话题。连接到:(下称链接①),

里面评论有非常多人提到了这个问题,我也是当中一员,可是问遍了全部人,自己也发帖()

寻求解决方式,却终究没能得到一个可用的方案。

从2014年4月中旬遇到这个问题。纠结了两个多星期,最终在看了好多好多资料之后。于4月的最后一个周一,临时攻克了这么个问题。

距离那时候已经快3个月了,因为这段时间我留下的qq邮箱,不小心泄露了我的那么一点点信息偷笑,也有好几个网友加我q问我这个问题。

索性我就再倒回来写一篇文章解释一下,这也算是我在csdn上面正儿八经的第一篇原创blog,一字一句出自我手。

废话不多说,正文来了:

自从參考链接①做了yuv显示之后,坐标问题就一直存在,以下两组坐标系就是罪魁祸首,

/ 米2S、华为 等//	GLfloat squareVertices_zero[] = {		0.0f,	1.0f,		1.0f,	1.0f,		0.0f,	0.0f,		1.0f,	0.0f,	};	GLfloat coordVertices_zero[] = {		-1.0f,	-1.0f,		 1.0f,	-1.0f,		-1.0f,	 1.0f,		 1.0f,	 1.0f,	};// 红米、台电pad、kindle pad、SS_SCH-1939D等//	GLfloat squareVertices_one[] = {		-1.0f,	-1.0f,		 1.0f,	-1.0f,		-1.0f,	 1.0f,		 1.0f,	 1.0f,	};	GLfloat coordVertices_one[] = {		0.0f,	1.0f,		1.0f,	1.0f,		0.0f,	0.0f,		1.0f,	0.0f,	};

最终在无奈之下,病急乱投医,每找到个资料就好好的看看,最终被这篇()文章中的几个大字“OpenGL 版本号与设备兼容性”  给深深的吸引住了。于是多投入了一些眼神。。哈哈!

然后自己再通过获取不同设备的OpenGL扩展名来看,发现了一些不算规律的规律。

。。

问题从此变得明朗了,解决方式例如以下:

第一步:在createSurfaceView的时候,推断应该使用哪种坐标系:

char *glExtension = NULL;glExtension = glGetString(GL_EXTENSIONS);if(strstr(glExtension, "GL_AMD_compressed_ATC_texture") != NULL){//	LOGD("===%s===", strstr(glExtension, "GL_AMD_compressed_ATC_texture"));	Vertex_Texture_Index = 0;}else{//	LOGE("===%s===", strstr(glExtension, "GL_AMD_compressed_ATC_texture"));	Vertex_Texture_Index = 1;}
当然,那个“GL_AMD_compressed_ATC_texture”仅仅只是是我自己选择来推断的条件,你也能够依据自己的观察自己来选
一个扩展名作为推断

第二步:在render的时候选择纹理坐标系

if(Vertex_Texture_Index == 0)	{		glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, 0, 0, squareVertices_zero);  // 2:2个数字表示一个坐标		glEnableVertexAttribArray(ATTRIB_VERTEX);		glVertexAttribPointer(ATTRIB_TEXTURE, 2, GL_FLOAT, 0, 0, coordVertices_zero);		glEnableVertexAttribArray(ATTRIB_TEXTURE);	}	else if(Vertex_Texture_Index == 1)	{		glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, 0, 0, squareVertices_one);  // 2:2个数字表示一个坐标		glEnableVertexAttribArray(ATTRIB_VERTEX);		glVertexAttribPointer(ATTRIB_TEXTURE, 2, GL_FLOAT, 0, 0, coordVertices_one);		glEnableVertexAttribArray(ATTRIB_TEXTURE);	}
至此。在我这儿就算是攻克了这个问题了。

特此写出来,希望能提供一些帮助给有须要的人

当然。我自己也不是非常确定那个扩展名究竟能不能全然的兼容全部设备,所以。。

以后要是哪位朋友还有更好的解决的方法。烦请告知!!!

版权声明:本文博客原创文章。博客,未经同意,不得转载。

你可能感兴趣的文章
大家谈谈公司里的项目经理角色及职责都是干什么的?
查看>>
剑指offer
查看>>
Velocity魔法堂系列二:VTL语法详解
查看>>
NopCommerce架构分析之八------多语言
查看>>
转:Eclipse自动补全功能轻松设置
查看>>
ES6新特性:Javascript中的Reflect对象
查看>>
hibernate逆向工程生成的实体映射需要修改
查看>>
mysql update操作
查看>>
Robots.txt - 禁止爬虫(转)
查看>>
MySQL数据库
查看>>
项目分析_xxoo-master
查看>>
SQLServer2012自增列值跳跃的问题
查看>>
ViewBag对象的更改
查看>>
Mysql 监视工具
查看>>
hdu1025 Constructing Roads In JGShining's Kingdom(二分+dp)
查看>>
Android PullToRefreshListView和ViewPager的结合使用
查看>>
禅修笔记——硅谷最受欢迎的情商课
查看>>
struts2入门(搭建环境、配置、示例)
查看>>
Caused by: org.apache.ibatis.reflection.ReflectionException我碰到的情况,原因不唯一
查看>>
linux top命令查看内存及多核CPU的使用讲述【转】
查看>>