void hmd_ortho() { hmd_persp(0.5f, 2.0f); int w = video.device_w; int h = video.device_h; glScalef ( 1.25f / h, 1.25f / h, 1.0f); glTranslatef(-0.50f * w, -0.50f * h, -1.0f); }
void video_push_persp(float fov, float n, float f) { if (hmd_stat()) hmd_persp(n, f); else { GLfloat m[4][4]; GLfloat r = fov / 2 * V_PI / 180; GLfloat s = fsinf(r); GLfloat c = fcosf(r) / s; GLfloat a = ((GLfloat) video.device_w / (GLfloat) video.device_h); glMatrixMode(GL_PROJECTION); { glLoadIdentity(); m[0][0] = c / a; m[0][1] = 0.0f; m[0][2] = 0.0f; m[0][3] = 0.0f; m[1][0] = 0.0f; m[1][1] = c; m[1][2] = 0.0f; m[1][3] = 0.0f; m[2][0] = 0.0f; m[2][1] = 0.0f; m[2][2] = -(f + n) / (f - n); m[2][3] = -1.0f; m[3][0] = 0.0f; m[3][1] = 0.0f; m[3][2] = -2.0f * n * f / (f - n); m[3][3] = 0.0f; glMultMatrixf(&m[0][0]); } glMatrixMode(GL_MODELVIEW); { glLoadIdentity(); } } }
void video_push_persp(float fov, float n, float f) { if (hmd_stat()) hmd_persp(n, f); else { GLfloat m[4][4]; GLfloat r = fov / 2 * V_PI / 180; GLfloat s = sin(r); GLfloat c = cos(r) / s; GLfloat a = ((GLfloat) config_get_d(CONFIG_WIDTH) / (GLfloat) config_get_d(CONFIG_HEIGHT)); glMatrixMode(GL_PROJECTION); { glLoadIdentity(); m[0][0] = c / a; m[0][1] = 0.0f; m[0][2] = 0.0f; m[0][3] = 0.0f; m[1][0] = 0.0f; m[1][1] = c; m[1][2] = 0.0f; m[1][3] = 0.0f; m[2][0] = 0.0f; m[2][1] = 0.0f; m[2][2] = -(f + n) / (f - n); m[2][3] = -1.0f; m[3][0] = 0.0f; m[3][1] = 0.0f; m[3][2] = -2.0f * n * f / (f - n); m[3][3] = 0.0f; glMultMatrixf(&m[0][0]); } glMatrixMode(GL_MODELVIEW); { glLoadIdentity(); } } }