Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >OpenGL:使用任意行跨距/填充将纹理读入内存中的图像

OpenGL:使用任意行跨距/填充将纹理读入内存中的图像
EN

Stack Overflow用户
提问于 2013-03-25 12:38:56
回答 1查看 686关注 0票数 1

我希望将纹理读取到内存中,其中目标图像可以在每行的末尾具有任意填充。为了清楚起见,所有行的填充都是相同的。

我知道纹理是用glGetTexImage读取的。我也研究过glPixelStorei,但这只能添加填充,它对边界对齐的选择非常有限。

在OpenGL中有没有办法做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-26 10:38:22

我将自己回答这些问题,因为我发现我一直在阅读OpenGL ES 2.0的文档,该文档在glPixelStore方面严重缺乏功能。但不管怎样,您可以将此函数与GL_PACK_ROW_LENGTH一起使用,以指定两个连续行之间的位移。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15615191

复制
相关文章
OpenGL ES _ 着色器_纹理图像
玩过游戏的同学们,都知道在游戏人物身上穿的那个叫皮肤,专业点将那个就叫做纹理图像。GLSL 支持在顶点和片段着色器使用纹理图像。
酷走天涯
2018/09/14
1.3K0
opencv 将内存中图片读入到mat矩阵
平常用的比较多的是 imread函数,直接将一个.jpg或者.bmp或者其他格式图片文件,读入到mat矩阵中。
战神伽罗
2019/07/22
4.2K0
cuda纹理内存的使用
CUDA纹理内存的访问速度比全局内存要快,因此处理图像数据时,使用纹理内存是一个提升性能的好方法。 贴一段自己写的简单的实现两幅图像加权和的代码,使用纹理内存实现。 输入:两幅图 lena, moon
一棹烟波
2018/01/12
2.2K0
cuda纹理内存的使用
opengl入门-纹理
到这一讲稍微复杂点了,做个阶段性的总结,加深记忆 参考:learnOpenG-纹理 opengl工作流理解: opengl实现渲染的套路有一定范式,把握两条主线: ope
公号sumsmile
2020/06/09
9340
OpenGL ES实践教程(五)多重纹理实现图像混合
教程 OpenGL ES实践教程1-Demo01-AVPlayer OpenGL ES实践教程2-Demo02-摄像头采集数据和渲染 OpenGL ES实践教程3-Demo03-Mirror OpenGL ES实践教程4-Demo04-VR全景视频播放 其他教程请移步OpenGL ES文集。 有简书的开发者问我如何使用在一张大图上贴一张小图,原始的需求是在检测人脸,在返回的范围(矩形)内贴上一张图片。 有几点前提: 尽量少消耗CPU; 合成的数据是用于推流; 图片大小不一致; 说说如果没有上述几点
落影
2018/04/27
3.4K0
OpenGL ES实践教程(五)多重纹理实现图像混合
Android OpenGL ES 纹理
之前我们一直都是在绘制简单的图形与颜色,如果是一张图片该如何通过OpenGL ES进行渲染出来呢?
Rouse
2023/02/14
1.2K0
Android OpenGL ES 纹理
OpenGL ES(三) 纹理
纹理是一种应用到OpenGL绘图场景中三角形上的图像数据,它通过经过过滤纹理单元填充到实心区域。 下面是OpenGL ES载入一个简单纹理的例子 -(void)setupGL{ // 创建设备上下文,用OpenGL ES 2.0的API GLKView *view = (GLKView *)self.view; view.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; // GLKView
用户2215591
2018/06/29
5900
NeNe opengl 纹理映射
#include "stdafx.h" #include <windows.h> // Windows的头文件 #include<stdio.h> //#include <gl/glew.h> // 包含最新的gl.h,glu.h库 //#include <gl/glut.h> // 包含OpenGL实用库 #include <gl/glaux.h> // GLaux库的头文件 //#include<gl/GLU.h> #pragma comment(lib, "open
流川疯
2019/01/17
7840
OpenGL ES 绘制纹理
在OpenGL ES中绘制一张图片需要使用到纹理(texture),绘制纹理步骤如下:
老孟Flutter
2020/09/11
1.1K0
OpenGL 学习系列 --- 纹理
要注意到,OpenGL 绘制的物体是 3D 的,而纹理是 2D 的,那么纹理映射就是将 2D 的纹理映射到 3D 的物体上,可以想象成用一张纸裹着一个物体一样,不过要按照一定规律来。
音视频开发进阶
2019/07/25
1.5K0
OpenGL(八)--纹理相关APIOpenGL(八)--纹理相关API
OpenGL(八)--纹理相关API 1. 原始图像数据 //存储图像数据所占内存大小 size = 图像的高度 * 图像的宽度 * 每个像素所占字节数 像素所占字节数:一般为4Byte,包含RGBA四个通道,每个通道为1Byte(8Bit) 2. 认识函数 像素存储方式 //改变像素存储方式 void glPixelStorei(GLenum pname,GLint param); //恢复像素存储方式 void glPixelStoref(GLenum pname,GLint param); /
用户8893176
2021/08/09
1.3K0
OpenGL(八)--纹理相关APIOpenGL(八)--纹理相关API
《Cocos2D权威指南》——3.5 CCTexture纹理类「建议收藏」
游戏运行中,所有图像文件(PNG、PVR)都被加载成GPU可以理解的OpenGL ES纹理,而精灵则对应着这些纹理图。Cocos2D内置一个纹理缓存管理器(CCTextureCache)来保存这些纹理图,这样可以极大加速创建新精灵,并充分利用已有的纹理图。不利的是,如果收到内存警报,Cocos2D会将当前未使用的纹理图(即引用计数为1的纹理图)全部从内存中清除。 首先我们了解一下和纹理相关的概念。 3.5.1 纹理和纹理图集 所有游戏角色都是以图像的形式存储在iPhone和iPad设备的内存中,通常使用的格式是PNG或JPEG。这些图像一旦被加载入内存,它们将以一种未压缩的纹理格式来存储。PNG是苹果官方推荐的用于iOS设备的图像存储格式。 1 . 纹理(Texture) 游戏角色的图像文件在使用前必须解压缩,并转换成iPhone和iPad的GPU可以理解的格式,同时要加载进RAM(随机存储器),这样的图像称为纹理。GPU原生支持一系列压缩格式,如PVRTC,其他格式必须存储为未压缩的图像数据。OpenGL ES可以使用这些数据在屏幕上绘制图像,所使用的PNG图像文件虽然在闪存中不占用多少空间,但是因为要解压缩,所以会在内存中占用更大的空间。 2 . 纹理图集(TextureAtlas) 对于iPhone和iPad设备而言,内存是非常宝贵的。而且iOS设备的GPU使用共享显存,而不是独立显存,换句话说,GPU将使用主系统的内存来存储纹理图和几何图形。旧版iOS设备的内存是128MB。 让这种内存限制更捉襟见肘的是,旧版iOS设备中,图像填充到纹理中时,其长度和宽度必须使用2的乘方。虽然iPhone 3GS和iPhone 4、iPad等设备支持非2的乘方大小的纹理图,但在Cocos2D中,为了兼容所有设备,仍然使用2的乘方来填充纹理。当然,也可以在ccConfig.h文件中修改这一点。 为了节省内存空间,并减少纹理中的浪费空间,将把这些纹理拼合成为一个大的纹理图,称为纹理图集。纹理图集只是一个大的纹理图而已,其中包含所有的图像。想象有一大张纸,然后把自己的照片都贴在上面,在需要时从纸上把照片剪下来。如果想把所有照片一次性给别人,只需给这一大张纸就行,而不需一张张地递过去。OpenGL ES处理图像也是类似,如果使用纹理图集或精灵表单(Spritesheet)把所有图像一次性交给OpenGL ES来处理,比把单个图像逐个交给OpenGL ES处理要高效。 下面大致介绍CCTexture2D、CCTextureCache和CCTextureAtlas这三个纹理类。 3.5.2 CCTexture2D、CCTextureCache和CCTextureAtlas 在Cocos2D中,使用CCTexture2D(纹理)从图片、文本或源数据中创建OpenGL 2D纹理,所创建的纹理对象使用2的乘方来填充。根据创建CCTexture2D对象的方法不同,纹理的真实图片大小可能和纹理大小略有差异。另外需要注意的是,纹理内容通常是上下颠倒的!关于该类的更多内容,可以参考CCTexture2D.h。 CCTextureCache(纹理缓存)作为单例使用,用于加载和管理纹理。一旦纹理加载完成,下次使用时可使用它返回之前加载的纹理,从而减少对GPU和CPU内存的占用。关于该类的更多内容,大家可以参考CCTextureCache.h。 CCTextureAtlas(纹理图集)用来实现纹理图集。纹理图文件可以是PVRTC、PNG或任何Texture2D所支持的文件类型。CCTextureAtlas(纹理图集)可以对纹理图集的矩形进行实时的更新、添加、删除或重排序。关于该类的更多内容,大家可以参考CCTextureAtlas.h。 在Cocos2D的开发中,CCTexture2D和CCTextureCache在多个方法中都有体现,以CCSprite类的初始化方法之一为例:
全栈程序员站长
2022/07/20
1K0
iOS界面渲染流程分析
前言 本文阅读建议 1.一定要辩证的看待本文. 2.本文所表达观点并不是最终观点,还会更新,因为本人还在学习过程中,有什么遗漏或错误还望各位指出. 3.觉得哪里不妥请在评论留下建议~ 4.觉得还行的话
筑梦师winston
2018/10/11
2.6K0
iOS界面渲染流程分析
图像纹理残余
算法:图像纹理残余是使用ROF(Rudin-Osher-Fatemi)去噪模型保留图像边缘和结构信息的处理技术。该模型使去噪后的图像像素值“平坦”变化,但是在图像区域的边缘上,允许去噪后的图像像素值“跳跃”变化。
裴来凡
2022/05/29
6560
图像纹理残余
【OpenCV】图像的读入与显示
相关工程文件下载: 链接:https://pan.baidu.com/s/1jfDQTdOQqIf34-D5Nx6big 密码:0d13
EdenChen
2018/04/17
1.6K0
【OpenCV】图像的读入与显示
OpenGL ES 2.0 (iOS)[06-1]:基础纹理
Texture 在 OpenGL 里面有很多种类,但在 ES 版本中就两种——Texture_2D + Texture_CubeMap;
半纸渊
2018/08/30
2.1K0
OpenGL ES 2.0 (iOS)[06-1]:基础纹理
图像消除纹理
算法:图像消除纹理是首先将原始图像转换为灰度图像,随机选取和卷积核大小相同的正方形框小图像,选取多个图像取平均值来保证纹理特征能够适应整张图像,最终得到小图像之后取加权平均值,类似于高斯模糊一样的效果,这样卷积出来的结果能有效消除图像纹理。
裴来凡
2022/05/29
1.3K0
图像消除纹理
ps-给文字填充图片纹理
1、打开ps软件,新建适当大小的psd文档(或者打开图片素材) 2、编辑一行文字,设置字体大小 3、打开要填充的图片纹理,拉着图片覆盖要填充的文字上,同时点击最上面工具栏中的对勾 4、按住Alt键,鼠标移至右侧新建的图层与文字的正中间,当鼠标变为拐弯箭头时,点击鼠标左键,文字就被填上纹理的颜色
1900
2022/12/05
2.1K0
ps-给文字填充图片纹理
如何使用OpenGL渲染YUV数据
本篇文章主要描述如何使用OpenGL ES来渲染i420(YUV420P)和nv21(YUV420SP)
雪月清
2020/06/23
6.6K0
点击加载更多

相似问题

OpenGL将图像平铺为纹理并耗尽内存

23

opengl 1D纹理:填充任意浮点值

11

OpenGL ES 2.0,纹理图像未填充屏幕

35

如何获取openGL纹理使用的内存?

12

减少OpenGL纹理使用的内存量

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档