I’ve made progress. If you look at this function of code in both GearVR and SimpleHMD:
void FGearVR::AdjustViewRect(EStereoscopicPass StereoPass, int32& X, int32& Y, uint32& SizeX, uint32& SizeY) const
{
SizeX = SizeX / 2;
if( StereoPass == eSSP_RIGHT_EYE )
{
X += SizeX;
}
}
You actually seem to want the the offset to just be SizeX so you can comment out the line: SizeX = SizeX / 2;. Not sure why this is on my Galaxy S5, but this fixed the rendering error from the previous image I posted. This gives the following result on GearVR:
Since the GearVR has it’s own sensors, the head tracking does not work.
This is the display I get from SimpleHMD on Android:
As you can see though it does not take up the proper range (so it only kind of works) when I looked at the values, it is only rendering at 720p. I can not figure out why it starts rendering there (probably something deeper in the rendering I did not look at). The cool thing about SimpleHMD is that it picks up on the sensors of my S5 and does the tracking calculations. I am going to try and combine the SimpleHMD code for head tracking with the rendering code for GearVR and that should give a good enough UE4 Cardboard setup (without the ability to do the button which, for my purposes, I am not concerned with).

