首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏蜉蝣禅修之道

    iOS OpenGL ES常见问题整理

    好比OpenGL会经常挂在drawcall上,然而很有可能是在前面的glBindTexture、glTexImage2D或glUniformMatrix等方法中出现了问题。 GL_STENCIL_BUFFER_BIT) iOS9系统图片花屏 iOS 9上使用CGContextDrawImage解码图片时会带上上一次解码的残影,即使是一个新的CGContext也会,需要在draw前clearRect glTexImage2D crash可能情况1 传入参数中宽高参数与pixels不对应,宽高大于pixels实际宽高时crash,小于时花屏 glTexImage2D crash可能情况2 之前调用glPixelStorei修改过 GL_UNPACK_ALIGNMENT参数,假如GL_UNPACK_ALIGNMENT大小与glTexImage2D中pixels参数的单位像素字节数不符就会crash,这是很明显的累积错误引发的crash

    3K50发布于 2020-06-14
  • 来自专栏MapleYe

    【iOS】(二)GPUImage的Source,滤镜链的源头--万恶之源

    生成outputFramebuffer,初始化时要指定数据的格式GPUPixelFormat,其核心方法是- (void)uploadBytes:(GLubyte *)bytesToUpload,通过glTexImage2D self.outputTextureOptions onlyTexture:YES]; glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); glTexImage2D renderInContext显示内容,核心方法是- (void)updateWithTimestamp:(CMTime)frameTime 将显示的内容绘制到CoreGraphics上下文,获取图像数据后通过glTexImage2D texture]); // no need to use self.outputTextureOptions here, we always need these texture options glTexImage2D 产生纹理的具体代码 if ([GPUImageContext supportsFastTextureUpload] && captureAsYUV) { // 这里产生YUV纹理 } 否则还是调用glTexImage2D

    1.5K40发布于 2020-03-31
  • 来自专栏Code_iOS

    OpenGL ES 2.0 (iOS)[06-1]:基础纹理

    = 2 * 2) = 6个面的颜色数据; 注:图片类型的数据要自己写转换方法,生成像素数据;当然也可以使用 GLKit 提供的 TextureLoder 类来加载图片像素数据; (3)【核心】glTexImage2D 得到纹理像素的方法,就是加载纹理像素到 GPU 的方法: glTexImage2D void glTexImage2D (GLenum target, GLint level, GLint internalformat 像素模式下的使用: if (texMode == GL_TEXTURE_2D) { glTexImage2D(texMode, 0, GL_RGB, 2, 2, GL_FALSE, GL_RGB , GL_FLOAT, tex2DPixelDatas); } else { // glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X , 0, GL_RGB, 2, 2, GL_FALSE, GL_RGB, GL_FLOAT, texCubemapPixelDatas[0]); // glTexImage2D

    2.4K43发布于 2018-08-30
  • 来自专栏字节流动

    FFmpeg 播放器视频渲染优化

    glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, m_TextureIds[0]); glTexImage2D glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, m_TextureIds[0]); glTexImage2D glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, m_TextureIds[1]); glTexImage2D glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, m_TextureIds[0]); glTexImage2D glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, m_TextureIds[1]); glTexImage2D

    3.7K30发布于 2020-09-22
  • 来自专栏字节流动

    OpenGL 使用 PBO 零拷贝替换 glReadPixels

    Target 标签有 2 个:GL_PIXEL_UNPACK_BUFFER 和 GL_PIXEL_PACK_BUFFER ,其中将 PBO 绑定为 GL_PIXEL_UNPACK_BUFFER 时,glTexImage2D 不使用 PBO 加载纹理 上图从文件中加载纹理,图像数据首先被加载到 CPU 内存中,然后通过 glTexImage2D 函数将图像数据从 CPU 内存复制到 OpenGL 纹理对象中 (GPU 内存) 所以,绑定 PBO 后,执行 glTexImage2D (将图像数据从 PBO 传输到纹理对象) 操作,CPU 无需等待,可以立即返回。

    1.8K10编辑于 2024-04-24
  • 来自专栏一棹烟波

    OpenGL进行简单的通用计算实例

    GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, tex, 0); //将纹理数据设置为单精度浮点数 glTexImage2D GL_TEXTURE_2D, 0, GL_RGBA_FLOAT32_ATI, nWidth, nHeight,0, GL_RGBA, GL_FLOAT, NULL); //将数据传至输入纹理缓存 //glTexImage2D (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0); 57 58 //将数据传至输入纹理缓存 59 glTexImage2D tex); 69 70 system("pause"); 71 72 return 0; 73 } 数据类型要设置为unsigned_byte,将数据送至纹理缓存要用这个函数glTexImage2D

    2.4K70发布于 2018-01-12
  • 来自专栏Android技术专栏

    如何渲染最原始的yuv视频数据?

    我们在渲染图像到屏幕的时候,需要用到glTexImage2D()函数指定二维纹理图像,这个函数各个参数的含义如下: target:指定目标纹理,这个值必须是GL_TEXTURE_2D level:执行细节级别 //y平面 glActiveTexture(GL_TEXTURE0) glBindTexture(GL_TEXTURE_2D,textures[0]) glTexImage2D //u平面 glActiveTexture(GL_TEXTURE1) glBindTexture(GL_TEXTURE_2D,textures[1]) glTexImage2D //v平面 glActiveTexture(GL_TEXTURE2) glBindTexture(GL_TEXTURE_2D,textures[2]) glTexImage2D //y平面 glActiveTexture(GL_TEXTURE0) glBindTexture(GL_TEXTURE_2D,textures[0]) glTexImage2D

    67810编辑于 2024-02-27
  • 来自专栏字节流动

    NDK OpenGL ES 3.0 开发(十六):相机预览

    GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D false; } glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, m_YTextureId); glTexImage2D m_RenderFrame.ppPlane[0]); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, m_UTextureId); glTexImage2D

    3.1K40发布于 2020-06-02
  • 来自专栏字节流动

    在面试中,被反复提及的 OpenGL NV21 图像渲染

    //upload Y plane data glBindTexture(GL_TEXTURE_2D, m_yTextureId); glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE glBindTexture(GL_TEXTURE_2D, GL_NONE); //update UV plane data glBindTexture(GL_TEXTURE_2D, m_uvTextureId); glTexImage2D == GL_NONE) return; //upload Y plane data glBindTexture(GL_TEXTURE_2D, m_yTextureId); glTexImage2D GL_TEXTURE_2D, GL_NONE); //update UV plane data glBindTexture(GL_TEXTURE_2D, m_uvTextureId); glTexImage2D

    2.7K20发布于 2021-11-29
  • 来自专栏进击的多媒体开发

    Android NDK 开发 — 从 Assets 文件夹加载图片并上传纹理

    得到了所有像素数据之后,实际最终还是调用了 OpenGL 的 glTexImage2D 来实现纹理上传。 看到上面那两个 API 基本就稳了,再配合 stb_image 介绍过的方法,stbi_load_from_memory 从内存中加载图片的像素数据,最后就是 glTexImage2D 方法实现纹理上传

    1.9K30发布于 2019-06-03
  • 来自专栏字节流动

    NDK OpenGL ES 3.0 开发(二十二):PBO

    Target 标签有 2 个:GL_PIXEL_UNPACK_BUFFER 和 GL_PIXEL_PACK_BUFFER ,其中将 PBO 绑定为 GL_PIXEL_UNPACK_BUFFER 时,glTexImage2D 不使用 PBO 加载纹理 上图从文件中加载纹理,图像数据首先被加载到 CPU 内存中,然后通过 glTexImage2D 函数将图像数据从 CPU 内存复制到 OpenGL 纹理对象中 (GPU 内存) 所以,绑定 PBO 后,执行 glTexImage2D (将图像数据从 PBO 传输到纹理对象) 操作,CPU 无需等待,可以立即返回。

    3.2K51发布于 2020-06-01
  • 来自专栏字节流动

    NDK OpenGLES 3.0 开发(三):YUV 渲染

    //upload Y plane data glBindTexture(GL_TEXTURE_2D, m_yTextureId); glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE glBindTexture(GL_TEXTURE_2D, GL_NONE); //update UV plane data glBindTexture(GL_TEXTURE_2D, m_uvTextureId); glTexImage2D == GL_NONE) return; //upload Y plane data glBindTexture(GL_TEXTURE_2D, m_yTextureId); glTexImage2D GL_TEXTURE_2D, GL_NONE); //update UV plane data glBindTexture(GL_TEXTURE_2D, m_uvTextureId); glTexImage2D

    2.3K10发布于 2020-06-03
  • 来自专栏代码编写世界

    OpenGL显示图片

    OpenGL的glDrawPixels()函数也能实现图像显示,但是现在高版本的OpenGL都采用glTexImage2D()贴纹理的方式了,也不用考虑图像大小是否是2的N次方,或者4字节对齐的问题。 //放大纹理过滤方式 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //缩小纹理过滤方式 glTexImage2D

    4.5K10编辑于 2022-05-05
  • 来自专栏字节流动

    OpenGL ES 如何渲染 16bit 图像(P010)?

    然后我直接贴给他们一段在 OpenGL 环境下验证过的上传 16bit 图像数据的代码 glTexImage2D(GL_TEXTURE_2D, 0, GL_R16UI, width, height, 0 = vec4(vec3(val / 65535.0), 1.0); } 加载数据到纹理: glBindTexture(GL_TEXTURE_2D, m_uTextureId); glTexImage2D

    1.5K10编辑于 2024-01-02
  • 来自专栏音视频技术学习笔记

    18.opengl高级-立方体贴图

    textureID; glGenTextures(1, &textureID); glBindTexture(GL_TEXTURE_CUBE_MAP, textureID); 立方体贴图包含6个纹理,所以需要调用glTexImage2D textures_faces.size(); i++) { data = stbi_load(textures_faces[i].c_str(), &width, &height, &nrChannels, 0); glTexImage2D stbi_load(faces[i].c_str(), &width, &height, &nrChannels, 0); if (data) { glTexImage2D nrComponents == 4) format = GL_RGBA; glBindTexture(GL_TEXTURE_2D, textureID); glTexImage2D stbi_load(faces[i].c_str(), &width, &height, &nrChannels, 0); if (data) { glTexImage2D

    1.3K30发布于 2020-07-13
  • 来自专栏Qt项目实战

    Qt音视频开发22-通用GPU显示

    glBindTexture(GL_TEXTURE_2D, textureY); glPixelStorei(GL_UNPACK_ROW_LENGTH, linesizeY); glTexImage2D glBindTexture(GL_TEXTURE_2D, textureU); glPixelStorei(GL_UNPACK_ROW_LENGTH, linesizeU); glTexImage2D glBindTexture(GL_TEXTURE_2D, textureV); glPixelStorei(GL_UNPACK_ROW_LENGTH, linesizeV); glTexImage2D

    1.7K40发布于 2020-09-01
  • 来自专栏音视频技术学习笔记

    opengl入门-纹理

    baidu/Downloads/container.jpg", &width, &height, &nrChannels, 0); if (data) { glTexImage2D data = stbi_load("awesomeface.png", &width, &height, &nrChannels, 0); if (data) { glTexImage2D

    1.2K20发布于 2020-06-09
  • 来自专栏24K纯开源

    OpenGL与CUDA互操作方式总结

    GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexImage2D GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexImage2D

    2.6K61发布于 2018-01-18
  • 来自专栏字节流动

    NDK OpenGL ES 3.0 开发(十五):立方体贴图(天空盒)

    glGenTextures(1, &textureID); glBindTexture(GL_TEXTURE_CUBE_MAP, textureID); 由于立方图包含 6 个纹理,每个面对应一个纹理,需要调用glTexImage2D GL_TEXTURE_CUBE_MAP, m_TextureId); for (int i = 0; i < sizeof(m_pSkyBoxRenderImg) / sizeof(NativeImage); ++i) { glTexImage2D

    1.7K40发布于 2020-06-03
  • 来自专栏字节流动

    NDK OpenGLES 3.0 开发(二):纹理映射

    GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //加载 RGBA 格式的图像数据 glTexImage2D RGBA image data glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, m_TextureId); glTexImage2D

    1.4K30发布于 2020-06-03
领券