DirectX9:先导篇 图形学基础
1.3-图形学基础知识
1.3.1 表面
表面是Direct3D用于存储2D图像数据的一个像素矩阵,可以用接口IDirect3DSurface9来描述表面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | //GetDesc-该方法通过填充接口D3DSURFACE_DESC来获取该表面的描述信息 D3DSURFACE_DESC surfaceDesc; _surface->GetDesc(&surfaceDesc); //LockRect-该方法用于获取指向表面存储区(surface memory)的指针,通过指针运算,可对表面中的每一个像素进行读写操作 D3DLOCKED_RECT lockedRect; _surface->LockRect( &lockedRect, 0, 0 ); DWORD * imageData=( DWORD *)lockedRect.pBits; for ( int i=0;i<surfaceDesc.Height;i++){ for ( int j=0;j<surfaceDesc.Width;j++){ int index=i*lockedRect.Pitch/4+j; imagedata[index]=0xffff0000; //red } } //UnlockRect-如果调用了LockRect,就必须调用该方法解除对表面存储区的锁定 _surface->UnlockRect(); |
1.3.4 内存池
表面和其他的Direct3D资源可以放入许多类型的内存池(Memory Pool),内存池的类型可用D3DPOOL枚举类型来表示
D3DPOOL_DEFAULT:默认值,由Direct3D自动调配.在调用IDirect3DDevice9::Reset之前,必须对内存池中的资源进行销毁和释放
D3DPOOL_MANAGE:放入由Direct3D管理的显存或AGP存储区
D3DPOOL_SYSTEMMEM:系统存储区
D3DPOOL_SCRATCH:系统存储区,不受图形设备制约
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)