第11月第14天 opengl yuv

1.

Here is some snippets of code from my project ‘movie player for iOS‘.

1. fragment shader

varying highp vec2 v_texcoord;
uniform sampler2D s_texture_y;
uniform sampler2D s_texture_u;
uniform sampler2D s_texture_v;
void main() {
    highp float y = texture2D(s_texture_y, v_texcoord).r;
    highp float u = texture2D(s_texture_u, v_texcoord).r - 0.5;
    highp float v = texture2D(s_texture_v, v_texcoord).r - 0.5;
    highp float r = y +             1.402 * v;
    highp float g = y - 0.344 * u - 0.714 * v;
    highp float b = y + 1.772 * u;
    gl_FragColor = vec4(r,g,b,1.0);
}

2. create textures from YUV420p frame

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glGenTextures(3, _textures);
const UInt8 *pixels[3] = { yuvFrame.luma.bytes, yuvFrame.chromaB.bytes, yuvFrame.chromaR.bytes };
const NSUInteger widths[3]  = { frameWidth, frameWidth / 2, frameWidth / 2 };
const NSUInteger heights[3] = { frameHeight, frameHeight / 2, frameHeight / 2 };
for (int i = 0; i < 3; ++i) {
    glBindTexture(GL_TEXTURE_2D, _textures[i]);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, widths[i],heights[i],0,GL_LUMINANCE,GL_UNSIGNED_BYTE,pixels[i]);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
}

3. init vertices and texture coords

static const GLfloat texCoords[] = { 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f };
static const GLfloat vertices[]= {-1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f };

4. render frame

[EAGLContext setCurrentContext:_context];
glBindFramebuffer(GL_FRAMEBUFFER, _framebuffer);
glViewport(0, 0, _backingWidth, _backingHeight);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(_program);
for (int i = 0; i < 3; ++i) {
    glActiveTexture(GL_TEXTURE0 + i);
    glBindTexture(GL_TEXTURE_2D, _textures[i]);
    glUniform1i(_uniformSamplers[i], i);
}
glVertexAttribPointer(ATTRIBUTE_VERTEX, 2, GL_FLOAT, 0, 0, vertices);
glEnableVertexAttribArray(ATTRIBUTE_VERTEX);
glVertexAttribPointer(ATTRIBUTE_TEXCOORD, 2, GL_FLOAT, 0, 0, texCoords);
glEnableVertexAttribArray(ATTRIBUTE_TEXCOORD);
glBindRenderbuffer(GL_RENDERBUFFER, _renderbuffer);
[_context presentRenderbuffer:GL_RENDERBUFFER];

The link to project on github.

https://stackoverflow.com/questions/12428108/ios-how-to-draw-a-yuv-image-using-opengl

时间: 2024-10-11 22:46:45

第11月第14天 opengl yuv的相关文章

20141112,微软11月12日发布14个安全补丁

大家好,我们是微软大中华区安全支持团队. 微软于北京时间2014年11月12日发布了14个新的安全公告,其中4个为严重等级,8个为重要等级,共修复Microsoft Windows. Internet Explorer (IE). Office. .NET Framework, Internet Information Services (IIS).Remote Desktop Protocol (RDP). Active Directory Federation Services (ADFS)

2014年11月12~11月14日,杨学明老师《软件测试管理》内训在北京某银行软件中心成功举办!

2014年11月12~11月14日,北京天气呈现少有的APEC蓝,著名研发管理专家杨学明老师为某银行提供了三天的内训服务,此次培训由两部分组成,第一部分是<软件测试管理高级实务>.第二部分是<软件测试需求分析和测试设计>,三天的培训非常紧张,包括老师讲解,案例演练,专题研讨,过程衔接非常紧密,课堂气氛也比较轻松,来自该银行核心系统和网银两个事业部的同事参加了此次培训,包括开发,需求,测试和维护人员等,课程结束后,举行了考试,大家对三天的学习进行回顾和总结,并准备把这两天学习到知识结

学习笔记(11月14日)--正则

五周二次课(11月14日) 11.1 常用正则表达式 11.2 re正则对象和正则匹配效率比较 11.3 编译正则对象

访问不了google的同学看过来(14年11月5日有效)

访问不了google的同学们,打开这个地址看看是什么?? 地址:https://edgecastcdn.net/00107ED/g/ 更新时间:2014年11月5日 喜大普奔阿, 访问不了的话,点此留言,随时更新 与本文相关的文章 Google开源工具nogotofail:可测试网络流量安全 Google是如何测试的(全) 微软和google的测试比较? Android SDK工具(Google提供的16个工具)简介 Android之父与Google的诀别内幕,***,google也留不住 值得

11月上旬中国域名总量净增2.2万个 涨幅缩小35.5%

IDC评述网(idcps.com)11月20日报道:据WebHosting.info最新数据显示,截止至2014年11月17日,中国域名总量共有9,039,566个.在11月上旬期间(2014-11-04至2014-11-17),涨幅逐渐增大,共净增22,424个,涨幅环比缩小35.5%. (图1)中国域名注册量分布图(10/13/14-11/17/14) 根据图1,可知在11月上旬,中国域名注册量呈上升趋势,所分布的区域无明显变化.接下来,请与IDC评述网一同关注中域名注册总量在11月上旬的具

.CN域名总量约1500万:11月净增193万 增速加快

IDC评述网(idcps.com)12月10日报道:根据中国互联网络信息中心(CNNIC)最新公布的数据显示,11月份.CN域名总量为14,991,015个,净增1,929,617个,环比上月313,499个的净增长量,涨幅约增大5.2倍.下面,请看IDC评述网整理的数据分析. (图1).CN域名增长趋势图 从图1可知,在2015年6月至11月期间,.CN域名总量持续上升,11月份攀升至14,991,015个,所在区域明显高出其他月份,可见当月增速明显加快.相关数据如下:11月份.CN域名净增1

11月国内网站流量统计:百度夺冠 360安全中心居亚

IDC评述网(idcps.com)12月01日报道:根据中国互联网协会-中国网站排名公布的最新数据显示,截至2014年11月27日,国内网站独立访问量排名前五的是:百度.360安全中心.腾讯网.淘宝网和网易,如下图. 根据上图所示,在11月份期间,五大网站流量排名情况变化较大.其中,360安全中心起伏最大,细看上图,IDC评述网发现:在1日至27日期间,360安全中心的流量先不断攀升,曾一度超越百度,未几开始下降,排名最终从第4升至第2,连跃两级. 另外,百度.腾讯网.淘宝网.网易的流量相对稳定

补psp进度(11月4号-9号)

这周psp进度 11月4号 内容 开始时间 结束时间 打断时间 净时间 小伙伴聊天实现 9:45 10:49 0 64m 学习HttpURLConnection 14:13 15:48 10m 85m 11月7号 内容 开始时间 结束时间 打断时间 净时间 和组长测试约跑软件 9:50 10:30 0 40m 开组内站立会议 12:00 12:30 0 30m 11月8号 内容 开始时间 结束时间 打断时间 净时间 学习xml 14:10 16:45 约30m 125m 开组内站立会议 12:0

11月9日中国域名商解析量TOP13:爱名网跻身五强

IDC评述网(idcps.com)11月12日报道:根据DailyChanges公布的实时数据显示,截止至2015年11月9日,在国内域名解析量十三强排行榜上,中国万网域名解析量为3,719,843个,稳居榜首,较上期11月2日净增134,493个,涨幅增大206%,增势强劲.另外,爱名网排名升至第5,51DNS排名跌至第7,两者排名互换.接下来,IDC评述网将对相关数据进行详尽分析. (图1)中国域名解析商(国际域名)解析量排行榜TOP13分布图 如图1所示,截止至2015年11月9日,国内域