Ejemplo n.º 1
0
int32_t OVR_Enable(void)
{
	int i;
	eyeScaleOffset_t camera;

	if (!glConfig.arb_texture_float)
		return 0;

	if (hmd && !(hmd->HmdCaps & ovrHmdCap_ExtendDesktop))
	{
#ifdef WIN32
		ovrHmd_AttachToWindow(hmd,mainWindowInfo.info.win.window,NULL,NULL);
#endif
	}

	for (i = 0; i < 2; i++)
	{
		if (renderInfo[i].eyeFBO.valid)
			R_DelFBO(&renderInfo[i].eyeFBO);
		if (offscreen[i].valid)
			R_DelFBO(&offscreen[i]);
	}

	camera.x.offset = 0.0;
	camera.x.scale = 1.0 / tanf(hmd->CameraFrustumHFovInRadians * 0.5);
	camera.y.offset = 0.0;
	camera.y.scale = 1.0 / tanf(hmd->CameraFrustumVFovInRadians * 0.5);
	R_MakePerspectiveFromScale(camera,hmd->CameraFrustumNearZInMeters, hmd->CameraFrustumFarZInMeters, cameraFrustum);


	R_CreateIVBO(&renderInfo[0].eye,GL_STATIC_DRAW);
	R_CreateIVBO(&renderInfo[1].eye,GL_STATIC_DRAW);

	//VR_FrameStart(1);

	VR_OVR_InitShader(&ovr_distortion_shaders[0],&ovr_shader_norm);
	VR_OVR_InitShader(&ovr_distortion_shaders[1],&ovr_shader_chrm);

	VR_OVR_InitShader(&ovr_timewarp_shaders[0],&ovr_shader_warp);
	VR_OVR_InitShader(&ovr_timewarp_shaders[1],&ovr_shader_chrm_warp);
	//OVR_FrameStart(true);
	Cvar_ForceSet("vr_hmdstring",(char *)hmd->ProductName);
	return true;
}
Ejemplo n.º 2
0
// enables renderer support for the Rift
void R_VR_Enable()
{
	qboolean success = false;
	screen.width = 0;
	screen.height = 0;

	leftStale = 1;
	rightStale = 1;
	hudStale = 1;


	if (glConfig.ext_framebuffer_object && glConfig.ext_packed_depth_stencil)
	{
		Com_Printf("VR: Initializing renderer:");

		// TODO: conditional this shit up
		if (hud.valid)
			R_DelFBO(&hud);

		hmd = &available_hmds[(int32_t) vr_enabled->value];

		success = R_GenFBO(640,480,1,GL_RGBA8,&hud);
		success = success && hmd->enable && hmd->enable();

		// shader init
		R_VR_InitDistortionShader(&vr_distort_shaders[0], &vr_shader_distort_norm);
		R_VR_InitDistortionShader(&vr_distort_shaders[1], &vr_shader_distort_chrm);

		if (!success)
		{
			Com_Printf(" failed!\n");
			Cmd_ExecuteString("vr_disable");
		}
		else {
			char string[6];
			Com_Printf(" ok!\n");

			hmd->getState(&vrState);

			//strncpy(string, va("%.2f", vrState.ipd * 1000), sizeof(string));
			vr_ipd = Cvar_Get("vr_ipd", string, CVAR_ARCHIVE);

			if (vr_ipd->value < 0)
				Cvar_SetToDefault("vr_ipd");

		}

		R_CreateIVBO(&hudVBO, GL_STATIC_DRAW);
		R_VR_GenerateHud();

	}
	else {
		Com_Printf("VR: Cannot initialize renderer due to missing OpenGL extensions\n");
		if (vr_enabled->value)
		{
			Cmd_ExecuteString("vr_disable");
		}
	}

	R_VR_StartFrame();
}