社区
游戏开发
帖子详情
关于 像素对齐 行间距pitch 的问题
chifagao
2011-07-18 11:05:18
行间距pitch 肯定不是 图像的宽度。 一般大于 图像的宽度
这个间隙 什么时候产生和什么阶段存在的? 是将 像素写入到 磁盘 还是读入到 内存是产生的?还是一直就存在。
图像在磁盘存储时 存不存在 间隙 ? 写入到磁盘是 将 间隙的字节和像素一起写入 还是只 写入 像素字节本身?
...全文
451
3
打赏
收藏
关于 像素对齐 行间距pitch 的问题
行间距pitch 肯定不是 图像的宽度。 一般大于 图像的宽度 这个间隙 什么时候产生和什么阶段存在的? 是将 像素写入到 磁盘 还是读入到 内存是产生的?还是一直就存在。 图像在磁盘存储时 存不存在 间隙 ? 写入到磁盘是 将 间隙的字节和像素一起写入 还是只 写入 像素字节本身?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xychzh
2011-07-20
打赏
举报
回复
修正上楼:
“像素格式也取决于创建时的格式”
应该是:
“像素格式取决于要保存的格式”
xychzh
2011-07-20
打赏
举报
回复
再补充一下,这个pitch的值是IDirect3DTexture9在加载纹理时决定的,从该值可以看到实际的纹理占了多少内存。跟图片本身的像素尺寸无关。
比如你不从图片加载,自己构造一个二维像素数据,加载到IDirect3DTexture9时,会根据你给的宽高,及像素格式来决定它要为这些像素如何分配内存,以获得最大性能。
关于写入到文件,我的测试结果是可能会和pitch一致,也可能不会
1:我加载了一个非2的次幂纹理,载入后被扩充成了2的次幂尺寸,然后保存纹理后,尺寸也是2的次幂,与pitch一致
2:我创建了一个1×1的D3DFMT_A1R5G5B5格式纹理,其pitch是4(而原本只有16位),保存到纹理后,图像宽度依然是1×1
这样可以得出的大致结论就是,宽高肯定是和创建后的宽高一致的,像素格式也取决于创建时的格式,而pitch应该只算是他纹理本身的内存组织方式。
以上都是由测试产生的想法,同样仅供参考。
xychzh
2011-07-20
打赏
举报
回复
一般情况下,如果禁用了2的次幂处理,则pitch就是图像原宽度的字节数,如果没禁用,则宽度就为缩放后的宽度字节数,
总之它总是等于图像创建完后通过GetLevelDesc()函数得到的宽度的字节数
以上都是通过测试D3DXCreateTextureFromFileEx()得出的大致结果。
另外,对于一些特殊格式,情况也会有所不一样,以CreateTexture()为例:
比如:
1×1、2×2的D3DFMT_A8L8格式纹理(16位)或者D3DFMT_L8(8位)纹理,其pitch始终是4字节,而且不管是否禁用了2的次幂限制,都是4字节。(似乎4是pitch的最低值)
可能是为了最大化的提升性能,所以,做了很多特殊的处理,总之是无规律的,无法用一个“公式”直接得到什么结论的,如果能把所有情况都测试一下,然后列个表,看看pitch的值到底都是多少,或许会更好一些。
一般读写纹理时用pitch做为图像一行的宽度就不会有什么问题。
我所知道的就是这些了,都是测试的结果,没看过SDK,对不对不能保证,你参考下吧。
OpenCL图像对象创建、映射与读写操作详解与性能优化
在异构计算与GPU加速领域,内存管理是决定性能的关键因素。其核心原理在于理解主机与设备间的数据通路,通过优化数据传输减少PCIe总线瓶颈。OpenCL作为主流的异构计算框架,提供了图像对象这一专门为多维数据优化的内存对象类型,其技术价值在于能够利用GPU的纹理单元进行高效采样与滤波,显著提升图像处理算法的执行效率。在计算机视觉、科学计算等应用场景中,合理使用图像对象可以大幅降低数据搬运开销。本文聚焦于OpenCL图像对象的创建、内存映射与读写操作,深入解析了`clCreateImage`、`clEnqueu
cudaMemcpy2D() 函数
cudaMemcpy2D() 函数
嵌入式多媒体处理器PNX2015:
像素
格式与DDR控制器协同设计解析
在嵌入式多媒体处理领域,图像数据的表示与高效传输是系统设计的核心挑战。其原理在于,通过定义统一的
像素
格式(如YUV 4:2:2、NV12)作为硬件子系统间的通用数据语言,确保从采集、处理到显示的流水线能无歧义地协作。这背后离不开DDR SDRAM控制器的智能调度,它作为系统的流量枢纽,通过多端口仲裁、带宽预算和灵活的地址映射策略,在CPU的随机访问与DMA的大块连续传输间取得平衡,从而最大化内存带宽利用率。这种软硬件协同设计的技术价值在于,它为实时视频处理(如数字电视、视频监控)提供了稳定的性能基石。具体到
内存管理API(四):cudaMallocHost、cudaMalloc
Pitch
—— 页锁定内存、
pitch
ed内存
本文深入探讨了CUDA编程中优化数据传输与内存访问的两个核心API:cudaMallocHost(页锁定内存)和cudaMalloc
Pitch
(
Pitch
ed内存)。针对普通主机内存传输效率低的
问题
,页锁定内存通过物理连续特性避免了二次拷贝,实现真正的异步传输;针对二维/三维数据访问效率低的
问题
,
Pitch
ed内存通过内存
对齐
优化GPU访问性能。文章详细解析了两个API的原理、函数原型及参数,并提供了与Stream联动的实战代码示例,帮助开发者突破大数据量传输和矩阵运算的性能瓶颈。适用于需要优化CUDA程序
writeroom-mode 与字体、主题搭配技巧:5步营造沉浸式写作氛围
在 Emacs 中想要获得专注的写作体验,writeroom-mode 是绕不开的名字。这款插件为 Emacs 带来了类似 OS X Writeroom 编辑器的**沉浸式写作**模式:一键全屏、隐藏菜单栏与工具栏、居中文本,把所有干扰挡在屏幕之外。不过,真正让沉浸式写作体验“到位”的,往往是它和字体、主题的搭配。本文用 5 个步骤,教你如何组合出属于自己的极简写作环境。 ## 认识 write
游戏开发
8,324
社区成员
23,685
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章