# gfx-backend-gl
[OpenGL](https://www.khronos.org/opengl/) backend for gfx.
Can only be used on non-Apple Unix systems. The WSI is hard-coded to EGL.
Note: the `Instance`, `Surface`, `PhysicalDevice`, `Device`, and `Queue` can only
have their methods called on the thread where `Instance` was created(!).
Recording command buffers is free-threaded.
## Normalized Coordinates
![render_coordinates](../../../info/gl_render_coordinates.png) | ![depth_coordinates](../../../info/gl_depth_coordinates.png) | ![texture_coordinates](../../../info/gl_texture_coordinates.png)
## Binding Model
Dimensions of the model:
1. Register type: uniform buffers, storage buffers, and combined texture-samplers
2. Binding slot (0 .. `MAX_COMBINED_TEXTURE_IMAGE_UNITS` for textures)
## GLSL Mirroring
`D1` | *g*sampler1D, sampler1DShadow
`D1Array` | *g*sampler1DArray, sampler1DArrayShadow
`D2` | *g*sampler2D, *g*sampler2DMS, sampler2DShadow
`D2Array` | *g*sampler2DArray, *g*sampler2DMSArray, sampler2DArrayShadow
`D3` | *g*sampler3D
`Cube` | *g*samplerCube, samplerCubeShadow
`CubeArray` | *g*samplerCubeArray, samplerCubeArrayShadow
Buffer resource views are seen as *g*samplerBuffer.
i32 | int
u32 | uint
f32 | float
f64 | double