title: Using projection matrix on GLKMatrixStack
body: <p>Given this setup:</p>
  
  <pre><code>GLKMatrixStackRef transformHierarchy = GLKMatrixStackCreate (kCFAllocatorDefault);
  
  float aspect = (float)self.drawableWidth / (float)self.drawableHeight;
  float fov = PI * 0.125;
  float height = 10.0f;
  float cameraOffset = -height / (2.0f * tanf (fov / 2.0f));
  
  GLKMatrix4 projectionMatrix = GLKMatrix4MakePerspective (fov, aspect, 0.01f, 1000.0f);
  GLKMatrix4 T = GLKMatrix4MakeTranslation (0.0f, 0.0f, cameraOffset);
  </code></pre>
  
  <p>I would expect these two options to create an identical matrix on the top of the stack. Option A:</p>
  
  <pre><code>GLKMatrixStackLoadMatrix4 (transformHierarchy, projectionMatrix);
  GLKMatrixStackTranslate (transformHierarchy, 0.0f, 0.0f, cameraOffset);
  </code></pre>
  
  <p>Option B:</p>
  
  <pre><code>GLKMatrixStackLoadMatrix4 (transformHierarchy, GLKMatrix4Multiply (projectionMatrix, T));
  </code></pre>
  
  <p>Option A gives me a black screen:</p>
  
  <pre><code>3.351560 0.000000 0.000000 0.000000
  0.000000 5.027339 0.000000 0.000000
  0.000000 0.000000 -1.000020 25.117201 
  0.000000 0.000000 -1.000000 0.000000
  </code></pre>
  
  <p>Option B (otherwise identical matrix but with a non-zero m44) gives me the visual result I expect:</p>
  
  <pre><code>3.351560 0.000000 0.000000 0.000000
  0.000000 5.027339 0.000000 0.000000
  0.000000 0.000000 -1.000020 25.117201
  0.000000 0.000000 -1.000000 25.136698
  </code></pre>
  
  <p>So I've found a solution to my black screen, but the result using <code>GLKMatrixStackTranslate()</code> surprises me. Am I missing something here? Is it not considered a good practice to put the projection + world matrix at the bottom of the stack (to be followed by model transforms)?</p>
  
  <p><strong>UPDATE</strong></p>
  
  <p>Corrected mistake in my cameraOffset math and updated matrix output to match, although it has no effect on the problem as described. Also for clarity I transposed the matrix values (copy/pasted from xcode, which presents them in row-major order), to column-major (as OpenGL interprets them).</p>
  
  <p>Also filed a bug with Apple to inquire if this is the expected behavior.</p>