首先我们修改下纹理的数据格式,将GL_LUMINANCE改为GL_RED,将GL_LUMINANCE_ALPHA改为GL_RG,完整代码如下: voidYUVRenderOpengl::setYUVData(void*y_data,void*uv_data,intwidth,intheight,intyuvType){ //准备y数据纹理 glGenTextures(1,&y_textureId); glActiveTexture(GL_TEXTURE2); glUniform1i(y_textureSam...
GL_LUMINANCE_ALPHA 改为 GL_RG ,完整代码如下:void YUVRenderOpengl::setYUVData(void *y_data, void *uv_data, int width, int height, int yuvType) { // 准备y数据纹理 glGenTextures(1, &y_textureId); glActiveTexture(GL_TEXTURE2); glUniform1i(y_textureSampler, 2); // 绑定纹理 glBindTex...
既然GL_LUMINANCE和GL_LUMINANCE_ALPHA被删除了,那我们可以再查询些资料看看Opengl中还有那些变量时可以表示一个数据通道和两个数据通道的,这样问题应该就能够解决了。 在Opengl中表示一个通道和表示两个通道的变量还是不少的,例如GL_RED、GL_RED、GL_GREEN、GL_BLUE等这些变量可以表示一个颜色通道的数据,而GL_RG可...
GL_LUMINANCE, GL_LUMINANCE_ALPHA 等几种。 width 指定纹理图像的宽度,必须是2的n次方。纹理图片至少要支持64个材质元素的宽度 height 指定纹理图像的高度,必须是2的m次方。纹理图片至少要支持64个材质元素的高度 border 指定边框的宽度。必须为0。 format 像素数据的颜色格式,必须和internalformatt取值必须相同。
GL_LUMINANCE_ALPHA(Luminance, Alpha) GL_ALPHA (Alpha) 2:纹理坐标概念: 3: 天空盒的概念: 天空盒由六个面组成。每一个面是一个二维纹理,纹理坐标的算法是由中心点取一条射线。与面的交点即是纹理坐标。 二:加载纹理和多级纹理技术 第一步: 创建纹理对象。
先绑定纹理单元,然后配置纹理过滤,接着就是最关键的glTexImage2D方法了。 glTexImage2D方法在上一篇博文中已经调过,就是将纹理像素数据传递到片段着色器的方法。 这次颜色格式改为上面提到的GL_LUMINANCE,表示亮度,用于形成灰度图。这样假如某个Y的值为L,则传入片段着色器中的纹理就成了(L,L,L,1)。因为YUV的...
GL_LUMINANCE,//gpu内部格式 亮度,灰度图(这里就是只取一个颜色通道的意思) width / 2, height / 2,//v数据数量为屏幕的4分之1 0,//边框 GL_LUMINANCE,//数据的像素格式 亮度,灰度图 GL_UNSIGNED_BYTE,//像素点存储的数据类型 NULL //纹理的数据(先不传) ...
GL_LUMINANCE,//gpu内部格式 亮度,灰度图 width, height, //拉升到全屏 0, //边框 GL_LUMINANCE,//数据的像素格式 亮度,灰度图 要与上面一致 GL_UNSIGNED_BYTE, //像素的数据类型 NULL //纹理的数据 ); //设置纹理属性 glBindTexture(GL_TEXTURE_2D, texts[1]); ...
GLUT_LUMINACE: luminance是亮度的意思。但是很遗憾,在多数OpenGL平台上,不被支持。 二、事件处理(Event Processing) void glutMainLoop(void) 让glut 程序进入事件循环。在一个glut程序中最多只能调用一次。一旦调用,会直到程序结束才返回。 三、窗口管理(Window Management) ...
这一部分的代码参考自GPUImage的GPUImageVideoCamera类,YUV视频帧分为亮度和色度两个纹理,分别用GL_LUMINANCE格式和GL_LUMINANCE_ALPHA格式读取。 1、创建亮度纹理; 代码语言:javascript 代码运行次数:0 运行 AI代码解释 glActiveTexture(GL_TEXTURE0);err=CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault,...