[高分求解] Android使用opengles显示YUV420数据的问题
各位好,我最近在尝试使用opengl来显示YUV420数据,遇到了一些问题,希望各位帮忙解答。
1. 关于流程,我想是在Java层写Renderer类,然后在Renderer的onDrawFrame()/onSurfaceChanged()/onSurfaceCreated()中分别去调用native层的代码,native负责调用所有的opengles接口,在opengl的shader中进行YUV->RGB的转换,然后通过texture渲染出来,不知道这样的思路是否正确?
2. 在使用shader时,我在c代码中是这样写的:
我新建了2个shader(GL_VERTEX_SHADER和GL_FRAGMENT_SHADER),但是通过打log发现,2个shader的值是一样的(都是43),两个compiled的值也是一样的(是1393950951这种长数字),我感觉这样是不对的,请问这样对吗,为什么?
3. 各位有没有做过这方面的例子,或有成熟的、好的思路,请不吝赐教,十分感谢!
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. 各位有没有做过这方面的例子,或有成熟的、好的思路,请不吝赐教,十分感谢!
...全文
相关推荐
Android平台使用OpenGLES2.0显示YUV数据
它可能包含了顶点着色器和片段着色器的定义,以及纹理创建、数据上传和绘制的相关方法。通过分析和理解这个类,你可以更好地掌握如何在Android中使用OpenGLES2.0处理和显示YUV数据。
Android opengl渲染yuv420例子
Android下使用OpenGL渲染yuv420p图像并显示。例子中提供了两种类型,一种使用GLSurfaceView在onDrawframe中调用native方法绘制,另外一种使用EGL,直接在na
opengles相关
总结起来,Android使用OpenGLES将YUV数据转换为RGB显示涉及到色彩空间转换、OpenGL ES着色器编程、纹理管理、帧缓冲对象以及性能优化等多个环节。
Andorid 播放yuv流文件,通过OpenGLES渲染播放
在Android平台上,播放视频通常涉及将视频数据转换成可以在设备上显示的形式。
OpenGLES 在 android 上显示摄像头滤镜效果
步骤3:转换YUV数据到RGB由于OpenGLES默认处理RGB数据,我们需要将摄像头的YUV数据转换为RGB。


