Hmm, I am starting to suspect the matrices. There is some confusion here because my camera class began with XNA, changed to SlimDX under DX9 and then to SharpDX under DX11, and I'm not sure if the methods with the same name are doing the same thing anymore. Here is the code to my update method in the camera.
public override void Update()
{
Quaternion rot = Quaternion.RotationYawPitchRoll(input.Yaw,input.Pitch,input.Roll);
avatarRotation = rot * avatarRotation;
avatarPosition += Vector3.TransformCoordinate(new Vector3(0.0f, 0.0f, input.Velocity), Matrix.RotationQuaternion(avatarRotation));
Matrix rotMatrix = Matrix.RotationQuaternion(avatarRotation);
Vector3 transformedRef = Vector3.TransformCoordinate(thirdPersonRef, rotMatrix);
cameraPosition = transformedRef + avatarPosition;
// Vector4 upVector4 = rotMatrix.get_Rows(1);
Vector4 upVector4 = rotMatrix.Row1;
Vector3 upVector3 = new Vector3(upVector4.X, upVector4.Y, upVector4.Z);
view = Matrix.LookAtRH(cameraPosition, avatarPosition, upVector3);
projection = Matrix.PerspectiveFovRH(UsefulFunctions.ToRadians(45.0f),
aspectRatio, 0.1f, 500.0f);
Matrix frustumMatrix = view * Matrix.PerspectiveFovRH(UsefulFunctions.ToRadians(50.0f),
aspectRatio, 0.1f, 500.0f);
frustum.BuildViewFrustum(frustumMatrix);
base.Update();
}
Hmm, when I debug this code, I am getting a different View matrix from my DX9 version than with my DX11 version. The Projection matrix is the same in both versions. I'm not sure what's going on here.
EDIT: I have another clue, when I move the camera at all with my controls, PIX showed no draw calls. I realized that my frustum checker was rejecting everything as being outside the frustum. That doesn't actually solve the problem, but it definately indicates that the matrices are wrong. I just need to know why I'm getting different matrices with the same code.