🍺 BREW Explorer

← all formulae

libepoxy

brew install libepoxy v1.5.10 MIT

C library that abstracts OpenGL function pointer management across platforms and GL versions.

Why you might care

Epoxy eliminates the tedious boilerplate of manually loading OpenGL functions via dlopen/dlsym/glXGetProcAddress, automatically resolving function pointers at first use. Essential as a build dependency for OpenGL applications that need to support multiple GL versions and contexts (core, compatibility, GLES) without platform-specific code. Widely used in graphics tooling and 3D apps.

Categories

Alternatives

GLEW GLAD glLoadGen
7.4k
30-day installs · #440
26.4k
90-day · #431
89.2k
365-day · #462
744
★ GitHub stars · updated 2mo ago

Build dependencies

Links

Blurb generated by claude-haiku-4-5 on today.

Raw metadata
{
  "aliases": [],
  "alternatives": [
    "GLEW",
    "GLAD",
    "glLoadGen"
  ],
  "build_dependencies": [
    "meson",
    "ninja",
    "pkgconf"
  ],
  "categories": [
    "library",
    "graphics"
  ],
  "caveats": null,
  "conflicts_with": [],
  "dependencies": [],
  "deprecated": 0,
  "deprecation_reason": null,
  "desc": "Library for handling OpenGL function pointer management",
  "disable_reason": null,
  "disabled": 0,
  "enrichment_fetched_at": "2026-06-20T23:40:52+00:00",
  "first_seen": "2026-06-20T23:34:18+00:00",
  "full_name": "libepoxy",
  "github_default_branch": "master",
  "github_last_commit_at": "2026-04-03T13:07:10Z",
  "github_readme_excerpt": "![Ubuntu](https://github.com/anholt/libepoxy/workflows/Ubuntu/badge.svg)\n![macOS](https://github.com/anholt/libepoxy/workflows/macOS/badge.svg)\n![MSVC Build](https://github.com/anholt/libepoxy/workflows/MSVC%20Build/badge.svg)\n![MSYS2 Build](https://github.com/anholt/libepoxy/workflows/MSYS2%20Build/badge.svg)\n[![License: MIT](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)\n\nEpoxy is a library for handling OpenGL function pointer management for\nyou.\n\nIt hides the complexity of `dlopen()`, `dlsym()`, `glXGetProcAddress()`,\n`eglGetProcAddress()`, etc. from the app developer, with very little\nknowledge needed on their part.  They get to read GL specs and write\ncode using undecorated function names like `glCompileShader()`.\n\nDon\u0027t forget to check for your extensions or versions being present\nbefore you use them, just like before!  We\u0027ll tell you what you forgot\nto check for instead of just segfaulting, though.\n\nFeatures\n--------\n\n  * Automatically initializes as new GL functions are used.\n  * GL 4.6 core and compatibility context support.\n  * GLES 1/2/3 context support.\n  * Knows about function aliases so (e.g.) `glBufferData()` can be\n    used with `GL_ARB_vertex_buffer_object` implementations, along\n    with GL 1.5+ implementations.\n  * EGL, GLX, and WGL support.\n  * Can be mixed with non-epoxy GL usage.\n\nBuilding\n--------\n\n```sh\nmkdir _build \u0026\u0026 cd _build\nmeson\nninja\nsudo ninja install\n```\n\nDependencies for Debian:\n\n  * meson\n  * libegl1-mesa-dev\n\nDependencies for macOS (using MacPorts): \n\n  * pkgconfig\n  * meson\n\nThe test suite has additional dependencies depending on the platform.\n(X11, EGL, a running X Server).\n\nSwitching your code to using epoxy\n----------------------------------\n\nIt should be as easy as replacing:\n\n```cpp\n#include \u003cGL/gl.h\u003e\n#include \u003cGL/glx.h\u003e\n#include \u003cGL/glext.h\u003e\n```\n\nwith:\n\n```cpp\n#include \u003cepoxy/gl.h\u003e\n#include \u003cepoxy/glx.h\u003e\n```\n\nAs long as epoxy\u0027s headers appear first, you should be ready to go.",
  "github_repo": "anholt/libepoxy",
  "github_stars": 744,
  "github_topics": [],
  "homepage": "https://github.com/anholt/libepoxy",
  "homepage_og_description": null,
  "homepage_og_image": null,
  "homepage_title": null,
  "installs_30d": 7416,
  "installs_365d": 89197,
  "installs_90d": 26363,
  "keg_only": 0,
  "keg_only_reason": null,
  "last_seen": "2026-06-20T23:34:18+00:00",
  "license": "MIT",
  "llm_generated_at": "2026-06-20T23:44:53+00:00",
  "llm_model": "claude-haiku-4-5",
  "name": "libepoxy",
  "oldnames": [],
  "one_liner": "C library that abstracts OpenGL function pointer management across platforms and GL versions.",
  "optional_dependencies": [],
  "rank_30d": 440,
  "rank_365d": 462,
  "rank_90d": 431,
  "raw_hash": "2d99b13e9965128b",
  "recommended_dependencies": [],
  "revision": 0,
  "ruby_source_path": "Formula/lib/libepoxy.rb",
  "tap": "homebrew/core",
  "test_dependencies": [],
  "uses_from_macos": [],
  "version_head": null,
  "version_stable": "1.5.10",
  "versioned_formulae": [],
  "why_use_this": "Epoxy eliminates the tedious boilerplate of manually loading OpenGL functions via dlopen/dlsym/glXGetProcAddress, automatically resolving function pointers at first use. Essential as a build dependency for OpenGL applications that need to support multiple GL versions and contexts (core, compatibility, GLES) without platform-specific code. Widely used in graphics tooling and 3D apps."
}