Пример #1
0
bool hasGLSLSupport(void)
{  bGeometryShader = hasGeometryShaderSupport();
    bGPUShader4     = hasShaderModel4();

    if (useGLSL) return true;  // already initialized and GLSL is available
    useGLSL = true;

    if (!extensions_init) InitOpenGLExtensions();  // extensions were not yet initialized!!

    /*
       if (GLEW_VERSION_2_0)
       {
           cerr << "OpenGL 2.0 (or higher) is available!" << endl;
       }
       else if (GLEW_VERSION_1_5)
       {
           cerr << "OpenGL 1.5 core functions are available" << endl;
       }
       else if (GLEW_VERSION_1_4)
       {
           cerr << "OpenGL 1.4 core functions are available" << endl;
       }
       else if (GLEW_VERSION_1_3)
       {
           cerr << "OpenGL 1.3 core functions are available" << endl;
       }
       else if (GLEW_VERSION_1_2)
       {
           cerr << "OpenGL 1.2 core functions are available" << endl;
       }
   */
    if (GL_TRUE != glewGetExtension("GL_ARB_fragment_shader"))
    {  cerr << "[WARNING] GL_ARB_fragment_shader extension is not available!\n";
        useGLSL = false;
    }

    if (GL_TRUE != glewGetExtension("GL_ARB_vertex_shader"))
    {  cerr << "[WARNING] GL_ARB_vertex_shader extension is not available!\n";
        useGLSL = false;
    }

    if (GL_TRUE != glewGetExtension("GL_ARB_shader_objects"))
    {  cerr << "[WARNING] GL_ARB_shader_objects extension is not available!\n";
        useGLSL = false;
    }

    if (!useGLSL)
    {  cerr << "[FAILED] OpenGL Shading Language is not available...\n\n";
    }

    return useGLSL;
}
Пример #2
0
qboolean VR_Enable()
{
	int i;
	if( ovr_Initialize(NULL) != ovrSuccess ) {
		Con_Printf("Failed to Initialize Oculus SDK");
		return false;
	}

	if( ovrHmd_Create(0, &hmd) != ovrSuccess ) {
		Con_Printf("Failed to get HMD");
		return false;
	}

	if( !InitOpenGLExtensions() ) {
		Con_Printf("Failed to initialize OpenGL extensions");
		return false;
	}

	ovrHmd_CreateMirrorTextureGL(hmd, GL_RGBA, glwidth, glheight, (ovrTexture**)&mirror_texture);
	glGenFramebuffersEXT(1, &mirror_fbo);
	glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, mirror_fbo);
	glFramebufferTexture2DEXT(GL_READ_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, mirror_texture->OGL.TexId, 0);
	glFramebufferRenderbufferEXT(GL_READ_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, 0);
	glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, 0);

	for( i = 0; i < 2; i++ ) {
		ovrSizei size = ovrHmd_GetFovTextureSize(hmd, (ovrEyeType)i, hmd->DefaultEyeFov[i], 1);

		eyes[i].index = i;
		eyes[i].fbo = CreateFBO(size.w, size.h);
		eyes[i].render_desc = ovrHmd_GetRenderDesc(hmd, (ovrEyeType)i, hmd->DefaultEyeFov[i]);
		eyes[i].fov_x = (atan(hmd->DefaultEyeFov[i].LeftTan) + atan(hmd->DefaultEyeFov[i].RightTan)) / M_PI_DIV_180;
		eyes[i].fov_y = (atan(hmd->DefaultEyeFov[i].UpTan) + atan(hmd->DefaultEyeFov[i].DownTan)) / M_PI_DIV_180;
	}

	ovrHmd_SetEnabledCaps(hmd, ovrHmdCap_LowPersistence|ovrHmdCap_DynamicPrediction);
	ovrHmd_ConfigureTracking(hmd, ovrTrackingCap_Orientation|ovrTrackingCap_MagYawCorrection|ovrTrackingCap_Position, 0);
	
	wglSwapIntervalEXT(0); // Disable V-Sync

	vr_initialized = true;
	return true;
}
Пример #3
0
/**
**  Initialize OpenGL
*/
static void InitOpenGL(void)
{
	InitOpenGLExtensions();

	glViewport(0, 0, (GLsizei)Video.Width, (GLsizei)Video.Height);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrthof(0, Video.Width, Video.Height, 0, -1, 1);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glTranslatef(0.375, 0.375, 0.);

	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
	glClearDepthf(1.0f);
	glShadeModel(GL_FLAT);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glEnable(GL_BLEND);
	glEnable(GL_TEXTURE_2D);
	glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glEnable(GL_LINE_SMOOTH);
	glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);

	glGetIntegerv(GL_MAX_TEXTURE_SIZE, &GLMaxTextureSize);
	if (GLMaxTextureSize == 0) {
		// FIXME: try to use GL_PROXY_TEXTURE_2D to get a valid size
#if 0
		glTexImage2D(GL_PROXY_TEXTURE_2D, 0, GL_RGBA, size, size, 0,
			GL_RGBA, GL_UNSIGNED_BYTE, NULL);
		glGetTexLevelParameterfv(GL_PROXY_TEXTURE_2D, 0,
			GL_TEXTURE_INTERNAL_FORMAT, &internalFormat);
#endif
		fprintf(stderr, "GL_MAX_TEXTURE_SIZE is 0, using 256 by default\n");
		GLMaxTextureSize = 256;
	}
	if (GLMaxTextureSize > GLMaxTextureSizeOverride
	    && GLMaxTextureSizeOverride > 0) {
		GLMaxTextureSize = GLMaxTextureSizeOverride;
	}
}
Пример #4
0
void C_API Program::Initialize(int window_width, int window_height, int argc, char * argv[])
{
	// Init Glut:
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
	glutInitWindowSize(window_width, window_height);
	glutInitWindowPosition(0,0);
	m_WinId = glutCreateWindow("Wavefront Object Viewer");

	// Set Glut Function Pointers:
	glutReshapeFunc(Program::ResizeWindow);
	glutDisplayFunc(Program::Render);
	glutIdleFunc(Program::Render);
	glutKeyboardFunc(Program::KeyboardCallback);
	glutMouseFunc(Program::MouseCallback);
	glutMotionFunc(Program::MouseMotionCallback);
	atexit(Program::Shutdown);

	ResizeWindow(window_width, window_height);

	glCullFace(GL_NONE);
	glShadeModel(GL_SMOOTH);
	glEnable(GL_DEPTH_TEST);

	memset(&m_LoadedObj, 0, sizeof(Program::UserObjectInfo));

	m_MenuIds[0] = -1; // Set To An Invalid Menu Id.
	m_MenuIds[1] = -1;

	SetUpMenus(NULL);

	if (InitOpenGLExtensions() == 0)
		MessageBox(0, "Warning! Some OpenGL Extensions Are Not Available! The Program May Not Work Properly.", "Warning!", (MB_OK | MB_ICONWARNING));

	glClearColor(0.3f, 0.3f, 0.3f, 1.0f);
}
Пример #5
0
   bool HasOpenGL2Support(void)
   {
      if (!extensions_init) InitOpenGLExtensions();

      return (GLEW_VERSION_2_0 == GL_TRUE);
   }