instantiating a SpriteBatch object when my DeviceContext is a ComPtr

已答覆 instantiating a SpriteBatch object when my DeviceContext is a ComPtr

  • 2012年4月28日 下午 10:53
     
      包含代碼

    This question has to do with the DirecXTK library that Chuck Walbourn & Shawn Hargreaves put together. I'm using c++,  VS11 Ultimate beta, and win 8 CP to make a metro app.

    The SpriteBatch takes a pointer to the deviceContext as an argument in the constructor:

    explicit SpriteBatch(_In_ ID3D11DeviceContext* deviceContext);

    However, using the Direct3DApplication starter project, it creates the ID3D11deviceContext using a ComPtr:

    Microsoft::WRL::ComPtr<ID3D11DeviceContext>    m_d3dContext;

    So when I try the line from Shawn's Blog,:

    std::unique_ptr<SpriteBatch> spriteBatch(new SpriteBatch(m_d3dContext));

    I get a red squiggly under the 'left paren' between the words SpiteBatch & the m_d3dContext. The compile error says this:

    cannot convert parameter 1 from 'Microsoft::WRL::ComPtr<T>' to 'ID3D11DeviceContext *'

    I'm a little too new at c++ and pointers to know how to resolve this, but I bet there's an easy answer. How would I go about converting the pointers to give the SpriteBatch constructor what it wants?

    Thank you.


    • 已編輯 Shazen 2012年4月28日 下午 10:53
    •  

所有回覆

  • 2012年4月29日 上午 10:40
     
     已答覆

    hi, you need the underlying interface pointer

    m_d3dContex.Get( );

    • 已標示為解答 Shazen 2012年4月29日 上午 11:45
    •  
  • 2012年4月29日 上午 11:45
     
     
    Thank you so much. That worked.