Правильный указатель на виртуальную таблицу устройства D3D11

Как мне получить указатель на vtable в этом:

ID3D11Device *dev;          //the pointer to the device interface

Это то, что у меня есть сейчас, и я не думаю, что это правильно.

uintptr_t* pInterfaceVTable = *(uintptr_t**)dev;

Если это так, то как мне получить функции-члены? Опять же, это то, что у меня есть сейчас.

uintptr_t** g_deviceFunctionAddresses = new uintptr_t*[D3D11_DEVICE_METHOD_COUNT];
if(dev != NULL && swapchain != NULL){
for(int i=0; i<D3D11_DEVICE_METHOD_COUNT; i++){
g_deviceFunctionAddresses[i] = (uintptr_t*)pInterfaceVTable[i];
}
smplvtablefunction = pInterfaceVTable[functionoffset];
}

Я застрял на некоторое время на этом.

1

Решение

Vtable определяется в заголовке как ID3D11DeviceVtbl, Вам нужно #include d3d11.h как заголовок C, в противном случае вы получите определение класса со скрытой vtable.

0

Другие решения