in the loading part of the program may be considered a bit unsafe. Typically you call those function (just) before the draw command. Since your data may be in different vertex buffers and have different topologies, you can't assume that they will stay the same during the whole program run.

thanks for the reply. To your question, yeah I have declared the Vertex in my header file. But everything was working fine before with the previous .fx file. Here is what my .fx file looked like BEFORE and it worked, with no warnings or errors.

Saying your program is "crashing" isn't particularly helpful. If it crashes in the debugger, you will have access to plenty of useful information about the crash. For instance the current stack trace, or the exception code, or the address of memory that it was attempting to access. For debugging D3D, you should also ensure that you create the device with the D3D11_CREATE_DEVICE_DEBUG flag specified for debug builds. This will cause the runtime to output messages when you screw something up.

Anyway your problem is that you're also specifying an additional input (color) for your vertex shader and not just an output. Your input layout only has a position element, and when you attempt to draw with a vertex shader that expects position + color it will fail. I was able to figure this out just by looking at your code, but in general it always helps to give more information. And enabling the debug device is just good practice, you will catch a lot of errors with that in the future.