I don't really think of C++ as being "cross-platform" because you have to compile a different version for each platform. Sure, there's a compiler for every platform, but that doesn't mean it's as simple as "port code then hit the compile button". It's not remotely that simple.
If you want to do indie game programming, you probably don't want to reinvent the wheel: there are already free licence physics engines built upon game engines built upon graphics renderers. Why try to build all that on your own?
I recommend JMonkeyEngine. I don't think you need C++ or DirectX to make fast graphics games anymore unless you are trying for cutting-edge games like Skyrim; and even then you could still do most of the work in Java and add patches from other languages.
EDIT: Also, if you understand "basics and syntax of C++" this is not an indication that you understand C++ as well as you understand Java. C++ has a large number of nuances to it. Like, if you declare and assign a variable on one line vs. two lines this may change whether an overloaded assignment operator vs. a copy constructor gets called. For this reason, C++ programmers usually need to know a lot more about the language than Java programmers in order to program safely in the language.
None of this is dissing C++, but you need to know what to expect if you want to use it. Also, if you use DirectX rather than OpenGL, and if you want to do it on your own without using an open-license rendering engine, then god help you.