//nv12render.cpp
#include "nv12render.h"
#include <QOpenGLTexture>
#include <QDebug>
#include"debug.h"
#include"RKBaseFunc.h"
#include <sys/mman.h>
#if 1
void Nv12Render::initialize()
{
initializeOpenGLFunctions();
glClearColor(0.0f,0.0f,0.0f,1.0f);
glClear(GL_COLOR_BUFFER_BIT);
const char *vsrc = " \
attribute vec4 vertexIn; \
attribute vec4 textureIn; \
varying vec4 textureOut; \
void main(void) \
{ \
gl_Position = vertexIn; \
textureOut = textureIn; \
}";
//Hi3536的openGL ES2着色器必须要先设置精度
const char *fsrc = "\
precision mediump float; \
varying mediump vec4 textureOut; \
uniform sampler2D textureY; \
uniform sampler2D textureUV; \
void main(void) \
{\
vec3 yuv; \
vec3 rgb; \
yuv.x = texture2D(textureY, textureOut.st).r - 0.0625; \
yuv.y = texture2D(textureUV, textureOut.st).r - 0.5;
qt pbo渲染方法
最新推荐文章于 2024-07-08 17:20:11 发布
该代码段展示了如何使用OpenGL ES在Hi3536平台上进行NV12纹理的渲染。首先,它初始化OpenGL环境,定义顶点和纹理坐标,编译和链接着色器。然后,通过内存映射或直接分配内存来处理NV12缓冲区。在渲染过程中,将NV12数据加载到OpenGL缓冲区,并创建及设置纹理,最后进行绘制操作。

最低0.47元/天 解锁文章
2476

被折叠的 条评论
为什么被折叠?



