windows - 如何在 Windows 中直接分配显卡内存?

标签 windows bitmap directx

我需要在 Windows 项目中的视频卡内存中分配位图。因为该项目使用了除 GDI 之外的其他二维库,所以 CreateCompatibleBitmap 没有用。

然后我想出了一个使用 DX 的方法,这是我的代码:

if(FAILED(g_D3DDevice->CreateVertexBuffer(10240 * 1024, 0,  
        D3DFVF_VERTEX, D3DPOOL_DEFAULT, &g_VertexBuffer,  
        NULL))) return false;  

    // Fill the vertex buffer.  
    void *ptr;  

    if(FAILED(g_VertexBuffer->Lock(0, 1024 * 10240,  
        (void**)&ptr, 0))) return false;  

    //do something...
    //printf("ptf = %x\n", ptr);
    //memcpy(ptr, objData, sizeof(objData));  
    g_VertexBuffer->Unlock();  

到目前为止效果很好。但是有什么副作用吗?

最佳答案

副作用:

  • 每次要写入或读取 VertexBuffer 时都必须解锁
  • 比正常内存慢

除了这个副作用之外,确保检查这个过程是否成功,因为内存不足的视频卡不会提供最“用户明显”的错误。

至于为什么它会很慢:通过将它放入您的视频卡内存中,您每次想要写入/读取时都必须请求访问顶点,这比在常规内存中实际立即访问它要慢。

关于windows - 如何在 Windows 中直接分配显卡内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16805796/

相关文章:

windows - Avast 防病毒软件最新更新后无法连接到本地主机

windows - Mac 上的 JavaFX native 打包 EXE

java - 如何将uri图像转换为canvas ondraw方法

c++ - 如何在 DirectX 11 中频繁更新顶点缓冲区数据?

c++ - 有没有办法在没有 Visual Studio 的情况下使用 DirectXTex?

windows - 无法在 pentaho 数据集成中找到日志文件

windows - WM_GETICON 有时不返回图标句柄

c# - 找不到“位图”(是否缺少 using 指令或程序集引用?)

javascript - 在 Canvas 上挥动文字

visual-studio-2010 - DirectX SDK 与 VS 2010 的集成