Beispiel #1
0
static bool gl_init_extensions(struct gs_device* device)
{
	if (!ogl_IsVersionGEQ(2, 1)) {
		blog(LOG_ERROR, "obs-studio requires OpenGL version 2.1 or "
		                "higher.");
		return false;
	}

	gl_enable_debug();

	if (!ogl_IsVersionGEQ(3, 0) && !ogl_ext_ARB_framebuffer_object) {
		blog(LOG_ERROR, "OpenGL extension ARB_framebuffer_object "
		                "is required.");
		return false;
	}

	if (ogl_IsVersionGEQ(3, 2) || ogl_ext_ARB_seamless_cube_map) {
		gl_enable(GL_TEXTURE_CUBE_MAP_SEAMLESS);
	}

	if (!ogl_IsVersionGEQ(4, 1) && !ogl_ext_ARB_separate_shader_objects) {
		blog(LOG_ERROR, "OpenGL extension ARB_separate_shader_objects "
		                "is required.");
		return false;
	}

	if (ogl_IsVersionGEQ(4, 3) || ogl_ext_ARB_copy_image)
		device->copy_type = COPY_TYPE_ARB;
	else if (ogl_ext_NV_copy_image)
		device->copy_type = COPY_TYPE_NV;
	else
		device->copy_type = COPY_TYPE_FBO_BLIT; /* ?? */

	return true;
}
Beispiel #2
0
bool initWindow(int width, int height) {
    if (!glfwInit()) {
        std::cerr << "Couldn't init GLFW.\n";
        return false;
    }

    glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 1);
    glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 5);
    //glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    //glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
    glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, GL_TRUE);
    if (!glfwOpenWindow(width, height, 8, 8, 8, 0, 0, 8, GLFW_WINDOW)) {
        std::cerr << "Couldn't open window.\n";
        return false;
    }

    if (ogl_LoadFunctions() != ogl_LOAD_SUCCEEDED) {
        std::cerr << "Couldn't init OpenGL functions.\n";
        return false;
    }

    if (ogl_IsVersionGEQ(1, 5)) {
        std::cerr << "OpenGL 1.5 not supported.\n";
        return false;
    }

    glfwSwapInterval(1);
    glViewport(0, 0, width, height);

    return true;
}
Beispiel #3
0
static void gl_enable_debug()
{
	 /* Perhaps we should create GLEW contexts? */
	if (ogl_IsVersionGEQ(4, 3)) {
		glDebugMessageCallback(gl_debug_proc, NULL);
		gl_enable(GL_DEBUG_OUTPUT);
	} else if (ogl_ext_ARB_debug_output) {
		glDebugMessageCallbackARB(gl_debug_proc, NULL);
	} else {
		blog(LOG_DEBUG, "Failed to set GL debug callback as it is "
		                "not supported.");
	}
}