none
Direct3DTutorial 范例代码中的一个不解 RRS feed

  • 问题

  • 最近在学习D3D开Metro中的开发,在官方提供的SampleCode中->Lesson1.Basics项目中,有2行代码不是很明白

            // Retrieve the Direct3D 11.1 interfaces.
            DX::ThrowIfFailed(
                d3dDevice.As(&m_d3dDevice)
                );

            DX::ThrowIfFailed(
                d3dDeviceContext.As(&m_d3dDeviceContext)
                );

    这里As代表什么呢?

    d3dDevice 定义为   ComPtr<ID3D11Device> 

    m_d3dDevice 分别定义为   ComPtr<ID3D11Device1>,是全局的。

    谢谢!!

    2012年8月2日 9:42

答案

  • 类似于COM中的 QueryInterface,  F12看到其实现:

        // query for U interface
        template<typename U>
        HRESULT As(_Inout_ Details::ComPtrRef<ComPtr<U>> p) const throw()
        {
            return ptr_->QueryInterface(__uuidof(U), p);
        }


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年8月3日 11:24
    版主