I was trying to use the d3d12 demo but I had to adapt the code to work for C++ as our project is C++ (unfortunately 💀). I rewrote the file nuklear_d3d12.h to use the C++ version of D3D without changing any of the logic. I was getting an access violation here when trying to read d3d12.upload_buffer. I was trying to investigate and I found that both d3d12.upload_buffer and d3d12.font_upload_buffer were NULL however the other buffers were being initialized correctly.
After some digging I found this:
I then changed the parameter passed in to ID3D12Device_CreateCommittedResource from D3D12_RESOURCE_STATE_COPY_SOURCE to D3D12_RESOURCE_STATE_GENERIC_READ which seemed to solve the issue completely for me. Is this an issue with the original demo implementation or because I have adapted the code to use the C++? The lines that were causing an issue are this line:
I was trying to use the d3d12 demo but I had to adapt the code to work for C++ as our project is C++ (unfortunately 💀). I rewrote the file
nuklear_d3d12.h
to use the C++ version of D3D without changing any of the logic. I was getting an access violation here when trying to read d3d12.upload_buffer. I was trying to investigate and I found that both d3d12.upload_buffer and d3d12.font_upload_buffer were NULL however the other buffers were being initialized correctly.After some digging I found this:
I then changed the parameter passed in to
ID3D12Device_CreateCommittedResource
fromD3D12_RESOURCE_STATE_COPY_SOURCE
toD3D12_RESOURCE_STATE_GENERIC_READ
which seemed to solve the issue completely for me. Is this an issue with the original demo implementation or because I have adapted the code to use the C++? The lines that were causing an issue are this line:and this one:
I'm on Windows 10 my GPU is a GTX 1070 Ti.