Agent skill

Agfx Porting From Opengl

by AmelieHeinrich in AmelieHeinrich/agfx

ALWAYS use when porting an existing OpenGL (or OpenGL ES) engine or renderer to AGFX — translating glGenTextures/glBindTexture/glBufferData/glUseProgram/FBO code to…

MITAuto-check passedGame Development

Install Agfx Porting From Opengl

skills CLI
$ npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-opengl -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install AmelieHeinrich/agfx agfx-porting-from-opengl --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/AmelieHeinrich/agfx.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/agfx-porting-from-opengl .claude/skills/agfx-porting-from-opengl && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
agfx-porting-from-opengl
GitHub stars
146
Token cost
~3.8k tokens
SKILL.md length
1,537 words
Files
1
Skills in repo
8
Repo updated
First seen
Licence
MIT

At a glance

ALWAYS use when porting an existing OpenGL (or OpenGL ES) engine or renderer to AGFX — translating glGenTextures/glBindTexture/glBufferData/glUseProgram/FBO code to…

  • Works in 8 steps: Decide raw AGFX vs. agfx::ez. GL's… → Device, queue, swap chain. Wire up… → NDC/depth-range and texture-origin… → …
  • Porting an existing OpenGL (or OpenGL ES) engine
  • SKILL.md covers Overview, Ownership, References and Concept Translation Table, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Agfx Porting From Opengl is an agent skill from AmelieHeinrich/agfx. ALWAYS use when porting an existing OpenGL (or OpenGL ES) engine or renderer to AGFX — translating glGenTextures/glBindTexture/glBufferData/glUseProgram/FBO code to agfxDevice/agfxCommandBuffer/agfxRenderPipeline calls, converting GLSL uniform/sampler-binding shaders to AGFX bindless HLSL, or mapping OpenGL concepts (the global bind-to-slot state machine, VAOs, FBOs, uniform blocks) onto their AGFX equivalents. Trigger on glGenBuffers/glBindBuffer/glTexImage2D/glUseProgram/glDrawArrays/glDrawElements, GLSL…

Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Game Development, covering Shaders and Translation. The licence is MIT.

When your agent uses it

  • Porting an existing OpenGL (or OpenGL ES) engine
  • Converting GLSL uniform/sampler-binding shaders to AGFX bindless HLSL
  • Mapping OpenGL concepts (the global bind-to-slot state machine
  • Uniform blocks) onto their AGFX equivalents

Example prompts

  • “port to AGFX”
  • “port from OpenGL”
  • “Use the agfx-porting-from-opengl skill to alway use when porting an existing OpenGL (or OpenGL ES) engine or renderer to AGFX — translating…”
  • “/agfx-porting-from-opengl”

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. Decide raw AGFX vs. agfx::ez. GL's implicit global-state model is the closest thing AGFX has an equivalent for in agfx::ez…
  2. Device, queue, swap chain. Wire up agfxDeviceCreate/agfxCommandQueueCreate/agfxSwapChainCreate (or agfx::ez::Context) and get a cleared…
  3. NDC/depth-range and texture-origin fixes. Before porting shaders or texture uploads, decide how the engine's projection matrices and…
  4. Frame pacing and fences (raw AGFX only — agfx::ez::Context handles this internally). Most GL engines have nothing to port here since the…
  5. Resources. Port glGenTextures/glTexImage2D and glGenBuffers/glBufferData calls to agfxTextureCreate/agfxBufferCreate (or the…
  6. One render pass end-to-end. Convert one FBO-bind-and-draw sequence to agfxRenderPassBegin/draw/End (agfx-render-targets-and-passes)…
  7. Shaders. Rewrite GLSL to HLSL per shader (not a source-level auto-translation — different language, different binding model): remove…
  8. Remaining passes, then cross-cutting: stencil-dependent logic (unsupported, flag it), MSAA (verify current AGFX support before assuming it…

What it can do on your machine

Read from SKILL.md and the folder at commit d8ad38b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are cpp).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Agfx Porting From Opengl loads about 3.8k tokens when it runs. Until then it costs about 226 tokens; SKILL.md has 1,537 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~226
When it runs · the whole SKILL.md, loaded when a task matches
~3.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from AmelieHeinrich/agfx at commit d8ad38b, republished under its MIT licence (© AmelieHeinrich). 1,537 words, ~3,800 tokens.

Download SKILL.mdSave it as .claude/skills/agfx-porting-from-opengl/SKILL.md (or your agent's skills folder).
name
agfx-porting-from-opengl
description
ALWAYS use when porting an existing OpenGL (or OpenGL ES) engine or renderer to AGFX — translating glGenTextures/glBindTexture/glBufferData/glUseProgram/FBO code to agfxDevice/agfxCommandBuffer/agfxRenderPipeline calls, converting GLSL uniform/sampler-binding shaders to AGFX bindless HLSL, or mapping OpenGL concepts (the global bind-to-slot state machine, VAOs, FBOs, uniform blocks) onto their AGFX equivalents. Trigger on glGenBuffers/glBindBuffer/glTexImage2D/glUseProgram/glDrawArrays/glDrawElements, GLSL `uniform`/`layout(binding=...)`, VAO/VBO/EBO/FBO, "port to AGFX", "port from OpenGL". Do NOT trigger for AGFX-native questions with no OpenGL source code involved — use the specific agfx-* skill for that subsystem instead (agfx-presentation-and-swapchain, agfx-render-targets-and-passes, agfx-synchronization, agfx-writing-bindless-shaders, agfx-raytracing, agfx-mdi).

Porting an OpenGL Engine to AGFX

Overview

OpenGL is a global, implicit state machine: objects are created, then made "current" by binding them to a target (glBindTexture, glBindBuffer, glBindFramebuffer), and later calls implicitly act on whatever is currently bound. There is no command buffer, no resource-state/barrier concept (outside of glMemoryBarrier for compute/image access, which most engines under-use), and shader resource binding goes through named uniforms/samplers resolved by string or explicit layout(binding=N) slots. AGFX has none of this: everything is an explicit object handle passed as a function argument, commands are recorded into an agfxCommandBuffer and submitted explicitly, resource-state transitions are the caller's job, and shaders access resources by ResourceHandle through a fully bindless model rather than named/slot-bound uniforms.

This is the widest conceptual gap of any of the porting skills — OpenGL's implicit binding and lack of GPU-driven synchronization means most of what a GL renderer does is either deleted (bind calls) or newly authored (barriers, fences, explicit render passes) rather than translated line-for-line. If the target engine's rendering style is otherwise simple (immediate draw calls, no manual multithreaded command recording), consider porting to agfx::ez (using-agfx-ez) instead of raw AGFX — its immediate-mode API and automatic-for-the-common-case barrier tracking are the closest thing AGFX has to GL's implicit model.

Ownership

Owns:

  • The OpenGL → AGFX concept translation table below
  • What gets deleted outright (bind-to-target calls, VAOs) vs. what maps onto an AGFX-shaped equivalent (FBOs → render targets/passes, uniform blocks → constant buffers)
  • Recommended porting order, and where GL engines most often hide bugs once ported (missing barriers, alpha-flipped textures, NDC/clip-space differences)
  • When to recommend agfx::ez for this kind of port

Doesn't own:

  • Subsystem-specific API detail once the AGFX call is identified — the four agfx-* subsystem skills, or using-agfx-ez if porting to the ez layer
  • D3D11/D3D12/Vulkan/Metal-specific concept mapping — the other agfx-porting-from-* skills

References

agfx/agfx.h is the entire public API surface — read it top to bottom once before starting. agfx/agfx_ez.hpp (using-agfx-ez) if recommending/using the immediate-mode path. agfx_demo/deferred_renderer.cpp and agfx_demo/agfx_demo_main.cpp are the raw-AGFX reference; agfx_ez_demo/agfx_ez_demo_main.cpp the ez-layer reference, structurally closer to a small GL app.

Concept Translation Table

OpenGLAGFXNotes
GL context (implicit, created by the windowing layer)agfxDevice*agfxDeviceCreate; no "make current" — the device/command buffer is passed explicitly everywhere
Default framebuffer / glfwSwapBuffers/SDL_GL_SwapWindowagfxSwapChain*agfxSwapChainCreate/AcquireNextTexture/Present — see agfx-presentation-and-swapchain; GL's implicit default framebuffer becomes an explicitly acquired back-buffer texture
glGenTextures/glBindTexture/glTexImage2D/glTexStorage2DagfxTexture*agfxTextureCreate; no bind-to-target — the texture object is passed directly to whatever needs it
glTexParameteri (GL_TEXTURE_MIN_FILTER etc.)agfxSampler*GL couples filtering to the texture object; AGFX splits it into a separate agfxSamplerCreate object, closer to Vulkan/D3D12/Metal — a texture can be sampled with different samplers without duplicating it
glGenBuffers/glBindBuffer/glBufferData (GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_UNIFORM_BUFFER, GL_SHADER_STORAGE_BUFFER)agfxBuffer*agfxBufferUsage bitflags replace the bind target; GL_STATIC_DRAW/GL_DYNAMIC_DRAW roughly map to agfxBufferMemoryType GPU_ONLY vs CPU_TO_GPU
glMapBuffer/glMapBufferRange/glUnmapBufferagfxBufferMap/agfxBufferUnmaponly valid on CPU_TO_GPU/GPU_TO_CPU buffers; no coherent/persistent-mapping distinction to preserve, map-write-unmap per frame
glGenVertexArrays/glBindVertexArray/glVertexAttribPointer (VAO)deleted — vertex pullingthere is no vertex-attribute binding at all; vertex shaders take SV_VertexID and manually load from an AGFXStructuredBuffer — see agfx-writing-bindless-shaders
glGenFramebuffers/glBindFramebuffer/glFramebufferTexture2D (FBO)agfxRenderTarget* + agfxRenderPassBeginGL's "bind an FBO, its attachments are already configured" becomes an explicit per-pass render target + attachment list with load/store ops — see agfx-render-targets-and-passes
glClear/glClearColor/glClearDepthagfxLoadOp = AGFX_LOAD_OPERATION_CLEAR + clearColor on the render pass attachmentclearing is declared when starting the pass, not a separate call
glUseProgram + separately linked/compiled .vert/.frag GLSLagfxShaderModule* + agfxRenderPipelineCreateInfoAGFX shaders are HLSL, compiled via agfxCompileShader (DXC → DXIL on Windows, Metal IR on macOS, SPIR-V on Linux) — GLSL source needs rewriting to HLSL, not just recompiling; see agfx-writing-bindless-shaders
uniform sampler2D/layout(binding=N) uniform texture... + glUniform1i/glBindTextureUnitdeleted — bindlessno named uniforms and no texture units; every resource access goes through a ResourceHandle passed via push constants — see agfx-writing-bindless-shaders
Uniform blocks (layout(std140) uniform) + glBindBufferBase(GL_UNIFORM_BUFFER, ...)ResourceHandle to a constant buffer, nested in push constants, loaded as AGFXStructuredBufferno separate uniform-block binding point — see the "scene/per-frame constants" pattern in agfx-writing-bindless-shaders
SSBOs (layout(std430) buffer) + glBindBufferBase(GL_SHADER_STORAGE_BUFFER, ...)AGFXStructuredBuffer<T>/AGFXRWStructuredBuffer<T> via ResourceHandlesame bindless pattern; read-only vs. read/write picks the wrapper, matching AGFX_BUFFER_USAGE_SHADER_READ/SHADER_WRITE on the host buffer
Blend state (glEnable(GL_BLEND), glBlendFunc, glBlendEquation)fields on agfxRenderPipelineCreateInfo (blendEnable[], srcColorBlendFactor[], colorBlendOp[])baked into the pipeline object at creation, not toggled per draw
Raster state (glEnable(GL_CULL_FACE), glCullFace, glFrontFace, glPolygonMode)fields on agfxRenderPipelineCreateInfo (cullMode, frontFace, fillMode)same — no global toggled state, it's part of the pipeline
Depth state (glEnable(GL_DEPTH_TEST), glDepthFunc, glDepthMask)fields on agfxRenderPipelineCreateInfo (depthTestEnable, depthCompareOp, depthWriteEnable)same; AGFX has no stencil support to map — flag stencil-dependent GL code to the user
glDrawArrays/glDrawElements/glDrawArraysInstancedagfxRenderPassDraw/agfxRenderPassDrawIndexedrecorded on the render pass object, indices/vertex counts map directly
glDispatchComputeagfxComputePassDispatchrecorded within an agfxComputePass, not a bare context call
glMemoryBarrier, or (commonly) nothing at allagfxCommandBufferTextureBarrier/agfxCommandBufferMemoryBarrier, agfxComputePassTextureUAVBarrier/BufferUAVBarrierGL engines frequently under-barrier since the driver often papers over missing glMemoryBarrier calls in practice; every render-target-write → shader-read and compute read/write ordering AGFX needs an explicit barrier for — see agfx-synchronization
No explicit CPU/GPU fence (implicit via glFinish/driver-managed, or glFenceSync if used)agfxFence + frame-in-flight command buffer rotationif the engine used glFenceSync/glClientWaitSync for CPU readback pacing, that maps onto agfxFence; if not (most GL engines rely on implicit driver pacing), this is new code — see agfx-synchronization
NDC depth range [-1, 1], texture origin bottom-leftNDC depth range [0, 1] (matches D3D12/Metal), texture origin top-leftnot a call-level translation but a math/data one — see Common Pitfalls below
Show full SKILL.md (685 more words)Show less
  1. Decide raw AGFX vs. agfx::ez. GL's implicit global-state model is the closest thing AGFX has an equivalent for in agfx::ez (using-agfx-ez): immediate SetRenderTargets/SetPipeline/Draw calls, automatic-for-the-common-case barrier tracking, one-call texture/buffer creation. Recommend it unless the engine needs multithreaded command recording or resource types the ez layer doesn't cover.
  2. Device, queue, swap chain. Wire up agfxDeviceCreate/agfxCommandQueueCreate/agfxSwapChainCreate (or agfx::ez::Context) and get a cleared back buffer presenting before porting any rendering logic — this also validates the build/link setup replacing GL context creation (GLFW/SDL/EGL/WGL) and function-pointer loading (GLAD/GLEW), which AGFX doesn't need.
  3. NDC/depth-range and texture-origin fixes. Before porting shaders or texture uploads, decide how the engine's projection matrices and UV/texture-load code will be adjusted for AGFX's [0,1] depth range and top-left texture origin (both differ from GL's [-1,1]/bottom-left convention) — get this right once, early, rather than debugging it per-shader later.
  4. Frame pacing and fences (raw AGFX only — agfx::ez::Context handles this internally). Most GL engines have nothing to port here since the driver paced frames implicitly; this is new code. See agfx-synchronization.
  5. Resources. Port glGenTextures/glTexImage2D and glGenBuffers/glBufferData calls to agfxTextureCreate/agfxBufferCreate (or the agfx::ez::Context one-call equivalents). Delete VAO setup entirely — there's nothing to port it to.
  6. One render pass end-to-end. Convert one FBO-bind-and-draw sequence to agfxRenderPassBegin/draw/End (agfx-render-targets-and-passes), adding the barriers GL never required by hand (agfx-synchronization, or agfx::ez::Context::SetRenderTargets/TransitionTexture for ez-tracked resources).
  7. Shaders. Rewrite GLSL to HLSL per shader (not a source-level auto-translation — different language, different binding model): remove uniform/layout(binding=...) declarations, replace with AGFX_PUSH_CONSTANTS + ResourceHandle fields and AGFXTexture2D/AGFXStructuredBuffer/AGFXSampler::Create(handle) calls, replace VAO-driven vertex fetch with vertex pulling from SV_VertexID (agfx-writing-bindless-shaders). Port a shader and update its host-side push-constant struct together, not as separate passes.
  8. Remaining passes, then cross-cutting: stencil-dependent logic (unsupported, flag it), MSAA (verify current AGFX support before assuming it maps), HDR/resize (agfx-presentation-and-swapchain).

Advanced features: mesh shaders, ray tracing, GPU-driven draws

All three are supported as of AGFX v1.2.0 (ray tracing landed in v1.1.0, multi-draw indirect in v1.2.0). Each is capability-gated — query once and keep the fallback path alive, since none are universal (in practice: Apple M3+, NVIDIA RTX 20+, AMD RX 6000+, or Intel Arc):

cpp
agfxDeviceInfo info = {};
agfxDeviceGetInfo(device, &info);
// info.supportsRayTracing / info.supportsMeshShaders / info.supportsMultiDrawIndirect
OpenGLAGFXNotes
glMultiDrawElementsIndirect / glDrawElementsIndirect (+ GL_DRAW_INDIRECT_BUFFER)agfxIndirectBundle + PrepareIndirectBundle/ExecuteIndirectBundleclosest existing GL analogue; AGFX adds an explicit GPU-written count buffer instead of a fixed drawcount
glMemoryBarrier(GL_COMMAND_BARRIER_BIT) before an indirect drawexplicit UNORDERED_ACCESS → AGFX_RESOURCE_STATE_INDIRECT_ARGUMENT transitionGL engines routinely omit this and get away with it; AGFX will not
GL_NV_mesh_shader / GL_EXT_mesh_shaderagfxRenderPassDrawMeshvendor extension → first-class
(no core GL equivalent)inline ray tracing (RayQuery)new capability

The one structural mismatch to flag early: AGFX supports inline ray tracing only — RayQuery/TraceRayInline from a compute shader. There is no ray-generation/any-hit/closest-hit pipeline, no hit groups, and no shader binding table. A source engine built around a ray-tracing pipeline needs those passes restructured into compute dispatches that trace inline and shade at the hit point themselves; that is a redesign, not a translation, and is worth surfacing to the user before starting.

Delegate the actual work: agfx-raytracing (acceleration structures, inline tracing), agfx-mdi (indirect bundles, GPU culling), agfx-writing-bindless-shaders (main_ms/main_as entry points, reflected group sizes) with agfx-render-targets-and-passes for agfxRenderPassDrawMesh.

Common Porting Pitfalls

  • Assuming the driver still inserts barriers. GL engines frequently have zero or near-zero glMemoryBarrier calls because drivers are lenient; porting that silence to AGFX produces missing barriers, not a compile error — every write-then-read across passes needs one explicitly (agfx-synchronization).
  • Leaving the GL depth-range/texture-origin convention baked into shader math. Projection matrices tuned for [-1,1] NDC depth and UV math assuming a bottom-left texture origin will render with inverted or squashed depth and flipped textures on AGFX until adjusted for [0,1]/top-left.
  • Trying to preserve bind-to-target calls (glBindTexture, glBindBuffer, glBindFramebuffer) as dead code alongside VAOs — delete them along with vertex attribute setup; there is nothing on the AGFX side to bind to.
  • Porting GLSL source mechanically instead of rewriting to HLSL. Uniform/sampler declarations, matrix multiply order (GLSL is column-major by convention, HLSL row-major by default), and the binding model are different enough that a shader needs to be rewritten against agfx-writing-bindless-shaders, not transliterated keyword-by-keyword.
  • Porting stencil-dependent logic. AGFX's pipeline depth state has no stencil fields — flag stencil-dependent GL code to the user rather than silently dropping it.

© AmelieHeinrich, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/agfx-porting-from-opengl of AmelieHeinrich/agfx.

Open the folder on GitHubat commit d8ad38b

Compare with similar skills

Agfx Porting From Opengl next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Agfx Porting From Opengl compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Agfx Porting From Opengl this skillAmelieHeinrich/agfx146—~3.8kAutomated safety check: PassMIT
PixijsRSamaium/CanvasEngine4012 repos~1.6kAutomated safety check: PassMIT
New ExperimentTresjs/tres3.8k—~782Automated safety check: PassMIT
Anatomywheresryan22/anatomy500—~7.7kAutomated safety check: PassMIT
Assets Shader List AllIvanMurzak/Unity-MCP4.4k—~435Automated safety check: PassApache-2.0
Handle Sdr Tonemap Lutclshortfuse/renodx4.5k—~7.3kAutomated safety check: PassMIT

Similar skills

  • Pixijs

    RSamaium/CanvasEngine

    Use this skill first for ANY PixiJS v8 task; it routes to the right specialized skill for the job.

    401 GitHub starsUsed in 2 repos~1.6k tokens
    Game DevelopmentAuto-check passed
  • New Experiment

    Tresjs/tres

    Create a new experiment in TresJS Lab with all necessary files

    3.8k GitHub stars~782 tokensUpdated 2 days ago
    Game DevelopmentAuto-check passed
  • Anatomy

    wheresryan22/anatomy

    Build crafted, highly detailed, interactive isometric SVG figures that explain a technical idea as a real physical object (a test rig, a dial gauge, a cabinet of drawers, a plotter, a lock), with…

    500 GitHub stars~7.7k tokensUpdated today
    Game DevelopmentAuto-check passed
  • Assets Shader List All

    IvanMurzak/Unity-MCP

    List all shaders available in the project assets and packages, sorted by name.

    4.4k GitHub stars~435 tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • Handle Sdr Tonemap Lut

    clshortfuse/renodx

    RenoDX HLSL/Slang shader workflow for proven shader-side SDR tonemap, hard clip, LUT, color grade, and HDR bridge changes.

    4.5k GitHub stars~7.3k tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • Unreal Material and VFX Workflow

    flopperam/unreal-engine-mcp

    Walks an Unreal Engine MCP agent through building materials, Niagara particle systems, Chaos destruction, and curve assets with inspect-then-edit steps.

    1.1k GitHub stars~927 tokensUpdated 3 mo ago
    Game DevelopmentAuto-check passed

More from AmelieHeinrich/agfx

All 8 skills in this repo
  • Agfx Porting From D3d11

    AmelieHeinrich/agfx

    ALWAYS use when porting an existing D3D11 engine or renderer to AGFX — translating ID3D11Device/DeviceContext/InputLayout/state-object code to agfxDevice/agfxCommandBuffer/agfxRenderPipeline calls…

    146 GitHub stars~3.6k tokensUpdated 13 days ago
    Auto-check passed
  • Agfx Porting From D3d12

    AmelieHeinrich/agfx

    ALWAYS use when porting an existing D3D12 engine or renderer to AGFX — translating ID3D12Device/CommandList/PipelineState/RootSignature/DescriptorHeap code to…

    146 GitHub stars~3.4k tokensUpdated 13 days ago
    Auto-check passed
  • Agfx Porting From Vulkan

    AmelieHeinrich/agfx

    ALWAYS use when porting an existing Vulkan engine or renderer to AGFX — translating VkDevice/VkCommandBuffer/VkPipeline/VkDescriptorSet/VkRenderPass code to…

    146 GitHub stars~4.4k tokensUpdated 13 days ago
    Auto-check passed
  • ALWAYS use when creating, resizing, or presenting through an agfxSwapChain in AGFX — window/layer handle setup, HDR toggling, vsync, resize handling, or back buffer acquire/present.

    146 GitHub stars~2k tokensUpdated 13 days ago
    Auto-check passed
  • ALWAYS use when creating agfxRenderTarget or agfxRenderPass objects in AGFX, or wiring up color/depth attachments, load/store ops, viewport/scissor, or draw calls within a render pass.

    146 GitHub stars~2.1k tokensUpdated 13 days ago
    Auto-check passed
  • Agfx Synchronization

    AmelieHeinrich/agfx

    ALWAYS use when working with AGFX fences, frames-in-flight pacing, queue signal/wait, resource-state barriers, or the barrier "agglomerate" flag.

    146 GitHub stars~3.6k tokensUpdated 13 days ago
    Auto-check passed

Questions about Agfx Porting From Opengl

What does Agfx Porting From Opengl do?

ALWAYS use when porting an existing OpenGL (or OpenGL ES) engine or renderer to AGFX — translating glGenTextures/glBindTexture/glBufferData/glUseProgram/FBO code to…. Agfx Porting From Opengl is an agent skill from AmelieHeinrich/agfx. ALWAYS use when porting an existing OpenGL (or OpenGL ES) engine or renderer to AGFX — translating glGenTextures/glBindTexture/glBufferData/glUseProgram/FBO code to agfxDevice/agfxCommandBuffer/agfxRenderPipeline calls, converting GLSL uniform/sampler-binding shaders to AGFX bindless HLSL, or mapping OpenGL concepts (the global bind-to-slot state machine, VAOs, FBOs, uniform blocks) onto their AGFX equivalents.

When should I use Agfx Porting From Opengl?

Agfx Porting From Opengl fits situations like: porting an existing OpenGL (or OpenGL ES) engine; converting GLSL uniform/sampler-binding shaders to AGFX bindless HLSL; mapping OpenGL concepts (the global bind-to-slot state machine; uniform blocks) onto their AGFX equivalents.

How do I install Agfx Porting From Opengl in Claude Code?

Run `npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-opengl -a claude-code`. Or copy the skill folder (.claude/skills/agfx-porting-from-opengl in AmelieHeinrich/agfx) into .claude/skills/agfx-porting-from-opengl in your project. Claude Code loads it when a task matches its description.

How do I install Agfx Porting From Opengl in Codex?

Run `npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-opengl -a codex`. Or copy the skill folder (.claude/skills/agfx-porting-from-opengl in AmelieHeinrich/agfx) into .agents/skills/agfx-porting-from-opengl in your project. Codex loads it when a task matches its description.

Can I use Agfx Porting From Opengl in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-opengl -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/agfx-porting-from-opengl, .gemini/skills/agfx-porting-from-opengl, .github/skills/agfx-porting-from-opengl and .opencode/skills/agfx-porting-from-opengl in your project.

What does Agfx Porting From Opengl need to run?

SKILL.md names no scripts, command-line tools or credentials: Agfx Porting From Opengl is instructions for the agent only.

Does Agfx Porting From Opengl access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Agfx Porting From Opengl safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Agfx Porting From Opengl use?

Agfx Porting From Opengl is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Agfx Porting From Opengl use?

About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Agfx Porting From Opengl?

Skills that share tags, products or a category with Agfx Porting From Opengl: Pixijs (RSamaium/CanvasEngine, 401 stars), New Experiment (Tresjs/tres, 3.8k stars), Anatomy (wheresryan22/anatomy, 500 stars) and Assets Shader List All (IvanMurzak/Unity-MCP, 4.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Agfx Porting From Opengl?

AmelieHeinrich (a GitHub user) maintains it in AmelieHeinrich/agfx, which has 146 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on September 27, 2026.

Source: AmelieHeinrich/agfx on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.