• DirectX9:先导篇 图形学基础


    1.3-图形学基础知识

    1.3.1 表面

    表面是Direct3D用于存储2D图像数据的一个像素矩阵,可以用接口IDirect3DSurface9来描述表面

    //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:系统存储区,不受图形设备制约

  • 相关阅读:
    万字长文:大规模 Elasticsearch 高可用集群环境调优实践
    jenkins 配置。
    Xcode的多种Build Configuration
    FZUOJ 2214 Knapsack problem 背包
    Atcoder 070 D Transit Tree Path
    POJ 3903 Stock Exchange LIS
    POJ 2533 Longest Ordered Subsequence 简单DP
    HDU 1260 Tickets 简单DP
    HDU 1114 Piggy-Bank 简单DP
    HDU 1176 免费馅饼 简单DP
  • 原文地址:https://www.cnblogs.com/k5bg/p/11096512.html
Copyright © 2020-2023  润新知