Hi,
I have an IndexedFaceSet object with many faces and
I want to put an bitmap image over that object.
i tried this way but nothing happens:
// get texture url
CString imageName = ymlLayer->getImageName();
BSTR imageURL = imageName.AllocSysString();
Index.bstrVal = L"texCoord";
CComPtr<IFieldObject> pFieldTexture;
pFieldsIndexSet->get_Item(&Index, &pFieldTexture);
if (!pFieldTexture)
AfxMessageBox(L"No such texCoord field");
CComPtr<ISFNodeObject> m_TextureNode;
if(FAILED(pFieldTexture->QueryInterface(IID_ISFNodeObject, (void**) &m_TextureNode)))
AfxMessageBox(L"m_TextuteNode not OK");
CComPtr<INodeObject> m_ImageTextureObject;
if(FAILED(m_Engine->CreateNode(L"ImageTexture", L"image", &m_ImageTextureObject))){
AfxMessageBox(L"ImageTexture not created");
}
//get the "url" field of ImageTextureObject
CComPtr<IFieldsCollection> pFieldsImageTexture;
CComPtr<IFieldObject> pFieldUrl;
VARIANT IndexImageTexture;
VariantInit(&IndexImageTexture);
IndexImageTexture.vt = VT_BSTR;
IndexImageTexture.bstrVal = L"url";
m_ImageTextureObject->get_Fields(&pFieldsImageTexture);
pFieldsImageTexture->get_Item(&IndexImageTexture, &pFieldUrl);
if (!pFieldUrl)
AfxMessageBox(L"No such url field");
CComPtr<IMFStringObject> urlString;
if(FAILED(pFieldUrl->QueryInterface(IID_IMFStringObject, (void**) &urlString))){
AfxMessageBox(L"url failed");
}
VARIANT varBeforeEndUrl;
VariantInit(&varBeforeEndUrl);
varBeforeEndUrl.vt = VT_ERROR;
varBeforeEndUrl.lVal = DISP_E_MEMBERNOTFOUND;
urlString->Add(imageURL, &varBeforeEndUrl);
::SysFreeString(imageURL);
Can somebody explain me what is not correct here and how can I do that.
|
|