Example #1
0
//]
//[eglplus_example_hello_world_2
int main(void)
{
	if(eglplus::__LibEGL::HasClientExtensions())
	{
		std::cout << "Client extensions:" << std::endl;
		for(auto r=eglplus::__LibEGL::ClientExtensions(); !r.Empty(); r.Next())
			std::cout << '\t' << r.Front() << std::endl;
	}
	else std::cout << "No client extensions." << std::endl;

	eglplus::__Display display;

	eglplus::__LibEGL egl(display);

	std::cout << "Vendor: " << egl.Vendor() << std::endl;
	std::cout << "Version: " << egl.Version() << std::endl;

	std::cout << "Client APIs:" << std::endl;
	for(auto r=egl.ClientAPIs(); !r.Empty(); r.Next())
		std::cout << '\t' << r.Front() << std::endl;

	std::cout << "Extensions:" << std::endl;
	for(auto r=egl.Extensions(); !r.Empty(); r.Next())
		std::cout << '\t' << r.Front() << std::endl;

	return 0;
}//]
Example #2
0
// static
std::unique_ptr<EGLDRMGlue> EGLDRMGlue::Create(
    std::unique_ptr<DRMModesetter> drm,
    const SwapBuffersCallback& callback) {
  std::unique_ptr<EGLDRMGlue> egl(new EGLDRMGlue());
  if (egl->Initialize(std::move(drm), callback))
    return egl;
  return nullptr;
}
Example #3
0
TEST(test_windowx11, initialization) {
    WindowX11 w(200, 300);
    w.show();

    EGLWrapper egl(w.getDisplay(), w.getWindow());
    int i = 120;
    while (i-- && w.processEvents()) {
        glClearColor(0.0f, 0.2f, 0.4f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);
        egl.swap();
    }
}
Example #4
0
int egl_example_main(int argc, char ** argv)
{
	oglplus::ExampleOptions opts;


	opts.screenshot_path = nullptr;
	opts.framedump_prefix = nullptr;
	opts.width = 800;
	opts.height = 600;
	opts.samples = 0;

	int a=1;
	while(a<argc)
	{
		short parsed = 0;

		if((std::strcmp(argv[a], "--screenshot")) == 0 && (a+1<argc))
		{
			opts.screenshot_path = argv[a+1];
			parsed = 2;
		}
		else if((std::strcmp(argv[a], "--frame-dump")) == 0 && (a+1<argc))
		{
			opts.framedump_prefix = argv[a+1];
			parsed = 2;
		}
		else if((std::strcmp(argv[a], "--width")) == 0 && (a+1<argc))
		{
			opts.width = GLuint(std::atoi(argv[a+1]));
			parsed = 2;
		}
		else if((std::strcmp(argv[a], "--height")) == 0 && (a+1<argc))
		{
			opts.height = GLuint(std::atoi(argv[a+1]));
			parsed = 2;
		}
		else if((std::strcmp(argv[a], "--samples")) == 0 && (a+1<argc))
		{
			opts.samples = GLint(std::atoi(argv[a+1]));
			parsed = 2;
		}

		if(parsed == 2)
		{
			for(int b=a+1; b<argc; ++b)
			{
				argv[b-2] = argv[b];
			}
			argc -= 2;
		}
		else if(parsed == 0)
		{	
			++a;
		}
	}

	if(!(opts.screenshot_path || opts.framedump_prefix))
	{
		std::cout <<
			"--screenshot or --framedump option "
			"must be specified" <<
			std::endl;
		return 1;
	}

 
	eglplus::Display display;
	eglplus::LibEGL egl(display);
	// run the main loop
	oglplus::run_example(display, opts, argc, argv);
	return 0;
}
Example #5
0
int egl_example_main(int argc, char ** argv)
{
	const char* screenshot_path = nullptr;
	const char* framedump_prefix = nullptr;
	if((argc >= 3) && (std::strcmp(argv[1], "--screenshot") == 0))
		screenshot_path = argv[2];
	if((argc >= 3) && (std::strcmp(argv[1], "--frame-dump") == 0))
		framedump_prefix = argv[2];

	GLuint width = 0, height = 0;

	if(screenshot_path || framedump_prefix)
	{
		for(int a=3; a<argc; ++a)
			argv[a-2] = argv[a];
		argc -= 2;

		int a=1;
		while(a<argc)
		{
			if(std::strcmp(argv[a], "--width") == 0 && (a+1<argc))
			{
				width = std::atoi(argv[a+1]);
				for(int b=a+1; b<argc; ++b)
					argv[b-2] = argv[b];
				argc -= 2;
			}
			else if(std::strcmp(argv[a], "--height") == 0 && (a+1<argc))
			{
				height = std::atoi(argv[a+1]);
				for(int b=a+1; b<argc; ++b)
					argv[b-2] = argv[b];
				argc -= 2;
			}
			else ++a;
		}
	}
	else
	{
		std::cout <<
			"--screenshot or --framedump option "
			"must be specified" <<
			std::endl;
		return 1;
	}

	if(!width) width = 800;
	if(!height) height = 600;
	//
	eglplus::Display display;
	eglplus::LibEGL egl(display);
	// run the main loop
	oglplus::run_example(
		display,
		screenshot_path,
		framedump_prefix,
		width,
		height,
		argc,
		argv
	);
	return 0;
}
int main() {
    // open the default display
    eglplus::Display display;
    // initialize the library
    eglplus::LibEGL egl(display);
    // get the list of all available configurations
    eglplus::Configs configs(display);
    //
    int w = 20;
    for(auto cr = configs.All(); !cr.Empty(); cr.Next()) {
        auto cfg = cr.Front();
        std::cout << "Config ID = " << cfg.ConfigId() << std::endl;
        std::cout << "\tRed size:          " << std::setw(w) << cfg.RedSize()
                  << std::endl;
        std::cout << "\tGreen size:        " << std::setw(w) << cfg.GreenSize()
                  << std::endl;
        std::cout << "\tBlue size:         " << std::setw(w) << cfg.BlueSize()
                  << std::endl;
        std::cout << "\tAlpha size:        " << std::setw(w) << cfg.AlphaSize()
                  << std::endl;
        std::cout << "\tDepth size:        " << std::setw(w) << cfg.DepthSize()
                  << std::endl;
        std::cout << "\tStencil size:      " << std::setw(w)
                  << cfg.StencilSize() << std::endl;
        std::cout << "\tMax Pbuffer width: " << std::setw(w)
                  << cfg.MaxPbufferWidth() << std::endl;
        std::cout << "\tMax Pbuffer height:" << std::setw(w)
                  << cfg.MaxPbufferHeight() << std::endl;
        std::cout << "\tMax Pbuffer pixels:" << std::setw(w)
                  << cfg.MaxPbufferPixels() << std::endl;

        std::cout << "\tConfig caveat:     " << std::setw(w)
                  << eglplus::EnumValueName(cfg.ConfigCaveat()).c_str()
                  << std::endl;
        std::cout << "\tColor buffer type: " << std::setw(w)
                  << eglplus::EnumValueName(cfg.ColorBufferType()).c_str()
                  << std::endl;
        std::cout << "\tTransparent type:  " << std::setw(w)
                  << eglplus::EnumValueName(cfg.TransparentType()).c_str()
                  << std::endl;

        std::cout << "\tRenderable types:  " << std::setw(w);
        auto rtr = eglplus::EnumValueRange<eglplus::RenderableTypeBit>();
        while(!rtr.Empty()) {
            if(cfg.HasRenderableType(rtr.Front())) {
                std::cout << eglplus::EnumValueName(rtr.Front()).c_str();
                std::cout << '|';
            }
            rtr.Next();
        }
        std::cout << std::endl;

        std::cout << "\tSurface types:     " << std::setw(w);
        auto str = eglplus::EnumValueRange<eglplus::SurfaceTypeBit>();
        while(!str.Empty()) {
            if(cfg.HasSurfaceType(str.Front())) {
                std::cout << eglplus::EnumValueName(str.Front()).c_str();
                std::cout << '|';
            }
            str.Next();
        }
        std::cout << std::endl;

        std::cout << "\tConformant to:     " << std::setw(w);
        auto ctr = eglplus::EnumValueRange<eglplus::RenderableTypeBit>();
        while(!ctr.Empty()) {
            if(cfg.IsConformantTo(ctr.Front())) {
                std::cout << eglplus::EnumValueName(ctr.Front()).c_str();
                std::cout << '|';
            }
            ctr.Next();
        }
        std::cout << std::endl;

        std::cout << "-----------------------------------------------"
                  << std::endl;
    }
    //
    return 0;
}
Example #7
0
int main(int argc, char **argv)
{
	std::string native_display_name;
	typedef std::auto_ptr < eglinfo::writer > writer_ptr;
	writer_ptr writer;

	int opt;
	std::string writer_type = "text";
	bool json_raw_print = false;
	while ((opt = getopt(argc, argv, "w:d:rh")) != -1)
	{
		switch (opt)
		{
			case 'w':
			{
				if (optarg == 0)
				{
					print_usage(argv[0]);
					return -1;
				}
				writer_type = optarg;
				break;
			}
			case 'd':
			{
				if (optarg == 0)
				{
					print_usage(argv[0]);
					return -1;
				}
				native_display_name = optarg;
				break;
			}
			case 'r':
				json_raw_print = true;
				break;
			case 'h':
				print_usage(argv[0]);
				return 0;
			default:
				print_usage(argv[0]);
				return -1;
		}
	}

	if (writer_type == "json")
		writer = writer_ptr(new eglinfo::json_writer(std::cout, json_raw_print));
	else if (writer_type == "text")
		writer = writer_ptr(new eglinfo::text_writer(std::cout));
	else
	{
		std::cerr << "unknown writer '" << writer_type << "'\n";
		std::cerr << "\n";
		print_usage(argv[0]);
		return -1;
	}

	eglinfo::native_display d(native_display_name.empty() ? reinterpret_cast < char const* > (0) : native_display_name.c_str());
	if (!d.is_ok())
	{
		std::cerr << "could not initialize with native display " << native_display_name << "\n";
		return -1;
	}

	eglinfo::egl_scope egl(d);

	if (egl)
		write_info(*writer, egl);

	return 0;
}