【问题标题】:DirectDraw question - running the application as a regular Windows applicationDirectDraw 问题 - 将应用程序作为常规 Windows 应用程序运行
【发布时间】:2009-01-07 09:50:37
【问题描述】:

我正在开发一个视频录制应用程序,我想在视频预览上叠加一个徽标和录制计时器。

我尝试运行全屏应用程序,一切正常。然后我尝试将该应用程序作为常规 Windows 应用程序运行,但它返回了错误。

如果有办法修改它以将应用程序作为常规 Windows 应用程序运行,任何人都可以看看下面的代码吗?

HRESULT CViewfinderRenderer::OnStartStreaming()
{
  HRESULT hr = S_OK;
  DDSURFACEDESC ddsd;

  m_pDD = NULL;

  //full screen settings
  hr = DirectDrawCreate(NULL, &m_pDD, NULL);
  hr = m_pDD->SetCooperativeLevel(m_hWnd, DDSCL_FULLSCREEN);

  ddsd.dwSize = sizeof(ddsd); 
  ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT; 
  ddsd.ddsCaps.dwCaps = DDSCAPS_FLIP | DDSCAPS_PRIMARYSURFACE;
  ddsd.dwBackBufferCount = 1;

  //end full screen settings

  //normal settings
  /*hr = DirectDrawCreate(NULL, &m_pDD, NULL);
  hr = m_pDD->SetCooperativeLevel(m_hWnd, DDSCL_NORMAL);

  ddsd.dwSize = sizeof(ddsd);
  ddsd.dwFlags = DDSD_BACKBUFFERCOUNT;
  ddsd.dwBackBufferCount = 1;*/
  //end normal settings

  hr = m_pDD->CreateSurface(&ddsd, &m_pSurface, NULL);
  if (hr != DD_OK) {
    return hr;
  }

  // Get backsurface
  hr = m_pSurface->EnumAttachedSurfaces(&m_pBackSurface, EnumFunction);

  return S_OK;
}

【问题讨论】:

    标签: c++ windows-mobile directshow directdraw


    【解决方案1】:

    即使在运行窗口时,您也需要创建一个主表面,只是它不是可翻转的表面。

     //full screen settings
     hr = DirectDrawCreate(NULL, &m_pDD, NULL);
     hr = m_pDD->SetCooperativeLevel(m_hWnd, DDSCL_NORMAL);
    
     ddsd.dwSize = sizeof(ddsd); 
     ddsd.dwFlags = DDSD_CAPS; 
     ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
    

    除了创建表面之外,您很可能还想为窗口创建一个裁剪器。有关完整示例,请参阅this GameDev article 中的窗口运行段落。

    【讨论】:

    • 这正是我的建议,但一个小时后来了!?
    • 是的,您的建议只是有所改进,并提供了教程链接作为附加值。
    【解决方案2】:

    它返回了什么错误?

    也可以试试这个:

    ddsd.dwFlags = DDSD_CAPS;
    ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
    

    【讨论】:

      猜你喜欢
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      相关资源
      最近更新 更多