├── .gitignore ├── .travis.yml ├── .travis_build.sh ├── CMakeLists.txt ├── LICENSE.md ├── README.md ├── build.bat ├── build.sh ├── defs ├── dds │ ├── caps_1_flags.def │ ├── caps_2_flags.def │ ├── d3d_formats.def │ ├── dds_flags.def │ ├── dxgi_format.def │ ├── pixel_format_flags.def │ ├── texture_dimension.def │ ├── texture_misc_flags.def │ └── texture_misc_flags_2.def ├── ktx │ ├── def_from_gl_h.sh │ └── gl.def ├── pvrLegacy │ ├── api.def │ ├── flags.def │ └── pixel_format.def └── pvrV3 │ ├── colour_spaces.def │ ├── compressed_formats.def │ └── variable_types.def ├── main.cpp └── textureinfo.h /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | *.swp 3 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: cpp 2 | sudo: required 3 | script: 4 | - cmake --version 5 | - bash .travis_build.sh "$TRAVIS_OS_NAME" 6 | matrix: 7 | include: 8 | # Linux GCC 9 | - os: linux 10 | compiler: gcc 11 | addons: &gcc48 12 | apt: 13 | sources: ['ubuntu-toolchain-r-test'] 14 | packages: ['g++-4.8'] 15 | # OS X 16 | - os: osx 17 | osx_image: xcode7.3 18 | compiler: clang 19 | -------------------------------------------------------------------------------- /.travis_build.sh: -------------------------------------------------------------------------------- 1 | set -e 2 | # Do some setup 3 | CMAKE_BIN= 4 | echo "DEBUG: TravisCI host OS = $1" 5 | if [ "$1" == "linux" ]; then 6 | sudo apt-get update 7 | bash -c "cd ~/ 8 | wget --no-check-certificate https://cmake.org/files/v3.5/cmake-3.5.2-Linux-x86_64.tar.gz 9 | tar -xf cmake-3.5.2-Linux-x86_64.tar.gz" 10 | CMAKE_BIN=~/cmake-3.5.2-Linux-x86_64/bin/./cmake 11 | sudo apt-get install g++-4.8 12 | sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 90 13 | sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 90 14 | sudo apt-get install libstdc++-4.8-dev 15 | fi 16 | # Run the CMake build commands 17 | bash build.sh $CMAKE_BIN 18 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 3.0) 2 | 3 | set(EXE_NAME textureinfo) 4 | project(${EXE_NAME}) 5 | 6 | set (INC_FILES 7 | textureinfo.h 8 | ) 9 | set (SRC_FILES 10 | main.cpp 11 | ) 12 | add_executable(${EXE_NAME} ${SRC_FILES} ${INC_FILES}) 13 | set_property(TARGET ${EXE_NAME} PROPERTY CXX_STANDARD 11) 14 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) Joe Davis 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 5 | 6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 7 | 8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # textureinfo 2 | 3 | A simple command-line utility for inspecting texture file header data. Currently supports the following container formats: 4 | 5 | * DDS 6 | * KTX 7 | * PVR 8 | * v1 & v2 (a.k.a. legacy) 9 | * v3 10 | 11 | # Build health 12 | 13 | | Branch | Status | 14 | | ------: | ------:| 15 | | master | [![Build Status: master]](https://travis-ci.org/joedavisdev/textureinfo) | 16 | | develop | [![Build Status: develop]](https://travis-ci.org/joedavisdev/textureinfo) | 17 | 18 | [Build Status: master]:https://travis-ci.org/joedavisdev/textureinfo.svg?branch=master 19 | [Build Status: develop]:https://travis-ci.org/joedavisdev/textureinfo.svg?branch=develop 20 | 21 | # Building 22 | 23 | ## Dependencies 24 | 25 | * Cmake 3.0 or better 26 | 27 | ## Linux & OS X script build 28 | ```` 29 | ./build.sh 30 | ```` 31 | 32 | ## Windows script build 33 | ```` 34 | ./build.bat 35 | ```` 36 | 37 | ## Manual build 38 | 39 | ```` 40 | mkdir -p build 41 | cd build 42 | cmake .. 43 | cmake --build . 44 | cd .. 45 | 46 | ```` 47 | 48 | # Usage 49 | 50 | ```` 51 | $ ./textureinfo --help 52 | version: 1.2 53 | usage: textureinfo [--csv] ... 54 | 55 | Print a texture container's header information to stdout. Supported containers: 56 | * PVR (v3) 57 | * PVR (legacy) 58 | * KTX 59 | * DDS 60 | 61 | options: 62 | --csv: Write header information to a CSV file (calling directory). Disables stdout print 63 | ```` 64 | 65 | # Examples 66 | 67 | ## Printing to stdout 68 | 69 | ```` 70 | $ ./textureinfo ~/Downloads/Textures/* 71 | ======================================== 72 | /Users/joe/Downloads/Textures/GnomeWood.pvr 73 | ======================================== 74 | Container: PVR (v3) 75 | Compressed format: PVRTCI_4bpp_RGBA 76 | Channel name [0]: - 77 | Channel name [1]: - 78 | Channel name [2]: - 79 | Channel name [3]: - 80 | Bits per-pixel [0]: - 81 | Bits per-pixel [1]: - 82 | Bits per-pixel [2]: - 83 | Bits per-pixel [3]: - 84 | Color space: lRGB 85 | Channel type: UnsignedByteNorm 86 | Width: 1024 87 | Height: 1024 88 | Depth: 1 89 | Array size: 1 90 | Number of faces: 1 91 | Number of MIP maps: 11 92 | Flags: 0 93 | Meta data size: 15 94 | 95 | ======================================== 96 | /Users/joe/Downloads/Textures/GnomeWood_legacy.pvr 97 | ======================================== 98 | Container: PVR (legacy) 99 | Format: GL_PVRTC4 100 | Number of bits: 4 101 | Width: 1024 102 | Height: 1024 103 | Array size: 1 104 | Number of MIP maps: 11 105 | Red mask?: False 106 | Green mask?: False 107 | Blue mask?: False 108 | Alpha mask?: True 109 | Magic number: 559044176 110 | Flags: MIP_MAP|HAS_ALPHA|VERTICAL_FLIP 111 | Data size: 699136 112 | 113 | ======================================== 114 | /Users/joe/Downloads/Textures/arial_36.pvr 115 | ======================================== 116 | Container: PVR (v3) 117 | Compressed format: - 118 | Channel name [0]: l 119 | Channel name [1]: a 120 | Channel name [2]: - 121 | Channel name [3]: - 122 | Bits per-pixel [0]: 8 123 | Bits per-pixel [1]: 8 124 | Bits per-pixel [2]: - 125 | Bits per-pixel [3]: - 126 | Color space: lRGB 127 | Channel type: UnsignedByteNorm 128 | Width: 256 129 | Height: 512 130 | Depth: 1 131 | Array size: 1 132 | Number of faces: 1 133 | Number of MIP maps: 10 134 | Flags: 0 135 | Meta data size: 4035 136 | 137 | ======================================== 138 | /Users/joe/Downloads/Textures/GnomeWood.ktx 139 | ======================================== 140 | Container: KTX 141 | glFormat: 0 (compressed format) 142 | glInternalFormat: COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 143 | glBaseInternalFormat: GL_RGBA 144 | glType: 0 (compressed format) 145 | glType size: 1 146 | Width: 1024 147 | Height: 1024 148 | Depth: 0 149 | Array size: 0 150 | Number of faces: 1 151 | Number of MIP maps: 11 152 | Bytes of key value data: 32 153 | Endianness: 67305985 154 | 155 | ======================================== 156 | /Users/joe/Downloads/Textures/GnomeWoodRGBA5551.ktx 157 | ======================================== 158 | Container: KTX 159 | glFormat: GL_RGBA 160 | glInternalFormat: GL_RGB5_A1 161 | glBaseInternalFormat: GL_RGBA 162 | glType: GL_UNSIGNED_SHORT_5_5_5_1 163 | glType size: 2 164 | Width: 1024 165 | Height: 1024 166 | Depth: 0 167 | Array size: 0 168 | Number of faces: 1 169 | Number of MIP maps: 11 170 | Bytes of key value data: 32 171 | Endianness: 67305985 172 | 173 | ======================================== 174 | /Users/joe/Downloads/Textures/GnomeWood.dds 175 | ======================================== 176 | Container: DDS 177 | Pixel format (size): 32 178 | Pixel format (flags): e_fourCC 179 | Pixel format (fourcc): PTC4 180 | Pixel format (bit count): 0 181 | Pixel format (red mask): False 182 | Pixel format (blue mask): False 183 | Pixel format (green mask): False 184 | Pixel format (alpha mask): False 185 | Size: 124 186 | Flags: e_Capabilities|e_height|e_width|e_pixelFormat|e_mipMapCount|e_linearSize 187 | Width: 1024 188 | Height: 1024 189 | Depth: 1 190 | Number of MIP maps: 11 191 | Pitch or linear size: 699136 192 | Capabilities (1): e_complex|e_texture|e_mipMaps 193 | Capabilities (2): 194 | Capabilities (3): 0 195 | Capabilities (4): 0 196 | Reserved: 0:0:0:0:0:0:0:0:0:0:0 197 | Reserved (2): 0 198 | DX10: Format: 199 | DX10: Dimension: 200 | DX10: Array size: 0 201 | DX10: Flags (1): 202 | DX10: Flags (2): 203 | ```` 204 | 205 | ## Printing to CSV 206 | 207 | ```` 208 | $ ./textureinfo ~/Downloads/Textures/* --csv 209 | ```` 210 | 211 | ```` 212 | $ cat dds.csv 213 | File name,Pixel format (size),Pixel format (flags),Pixel format (fourcc),Pixel format (bit count),Pixel format (red mask),Pixel format (blue mask),Pixel format (green mask),Pixel format (alpha mask),Size,Flags,Width,Height,Depth,Number of MIP maps,Pitch or linear size,Capabilities (1),Capabilities (2),Capabilities (3),Capabilities (4),Reserved,Reserved (2),DX10: Format,DX10: Dimension,DX10: Array size,DX10: Flags (1),DX10: Flags (2), 214 | /Users/joe/Downloads/Textures/GnomeWood.dds,32,e_fourCC,PTC4,0,False,False,False,False,124,e_Capabilities|e_height|e_width|e_pixelFormat|e_mipMapCount|e_linearSize,1024,1024,1,11,699136,e_complex|e_texture|e_mipMaps,,0,0,0:0:0:0:0:0:0:0:0:0:0,0,,,0,,, 215 | ```` 216 | 217 | ```` 218 | $ cat ktx.csv 219 | File name,glFormat,glInternalFormat,glBaseInternalFormat,glType,glType size,Width,Height,Depth,Array size,Number of faces,Number of MIP maps,Bytes of key value data,Endianness, 220 | /Users/joe/Downloads/Textures/GnomeWood.ktx,0 (compressed format),COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,GL_RGBA,0 (compressed format),1,1024,1024,0,0,1,11,32,67305985, 221 | /Users/joe/Downloads/Textures/GnomeWoodRGBA5551.ktx,GL_RGBA,GL_RGB5_A1,GL_RGBA,GL_UNSIGNED_SHORT_5_5_5_1,2,1024,1024,0,0,1,11,32,67305985, 222 | ```` 223 | 224 | ```` 225 | $ cat pvrV3.csv 226 | File name,Compressed format,Channel name [0],Channel name [1],Channel name [2],Channel name [3],Bits per-pixel [0],Bits per-pixel [1],Bits per-pixel [2],Bits per-pixel [3],Color space,Channel type,Width,Height,Depth,Array size,Number of faces,Number of MIP maps,Flags,Meta data size, 227 | /Users/joe/Downloads/Textures/GnomeWood.pvr,PVRTCI_4bpp_RGBA,-,-,-,-,-,-,-,-,lRGB,UnsignedByteNorm,1024,1024,1,1,1,11,0,15, 228 | /Users/joe/Downloads/Textures/arial_36.pvr,-,l,a,-,-,8,8,-,-,lRGB,UnsignedByteNorm,256,512,1,1,1,10,0,4035, 229 | ```` 230 | 231 | ```` 232 | $ cat pvrLegacy.csv 233 | File name,Format,Number of bits,Width,Height,Array size,Number of MIP maps,Red mask?,Green mask?,Blue mask?,Alpha mask?,Magic number,Flags,Data size, 234 | /Users/joe/Downloads/Textures/GnomeWood_legacy.pvr,GL_PVRTC4,4,1024,1024,1,11,False,False,False,True,559044176,MIP_MAP|HAS_ALPHA|VERTICAL_FLIP,699136, 235 | ```` 236 | -------------------------------------------------------------------------------- /build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | set ORIG_DIR= %CD% 3 | set CMAKE_BIN=cmake 4 | 5 | set BUILD_DIR=build\default 6 | mkdir %BUILD_DIR% 7 | cd %BUILD_DIR% 8 | %CMAKE_BIN% %ORIG_DIR% 9 | %CMAKE_BIN% --build . 10 | cd %ORIG_DIR% -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | set -e 2 | ORIG_DIR=$PWD 3 | CMAKE_BIN=cmake 4 | if [ -n "$1" ]; then 5 | CMAKE_BIN=$1 6 | fi 7 | BUILD_DIR=build/default 8 | mkdir -p $BUILD_DIR 9 | cd $BUILD_DIR 10 | $CMAKE_BIN $ORIG_DIR 11 | $CMAKE_BIN --build . 12 | cd $ORIG_DIR 13 | 14 | -------------------------------------------------------------------------------- /defs/dds/caps_1_flags.def: -------------------------------------------------------------------------------- 1 | X(e_complex,=0x00000008) 2 | X(e_texture,=0x00001000) 3 | X(e_mipMaps,=0x00400000) 4 | -------------------------------------------------------------------------------- /defs/dds/caps_2_flags.def: -------------------------------------------------------------------------------- 1 | X(e_cubeMap,=0x00000200) 2 | X(e_cubeMapPositiveX,=0x00000400) 3 | X(e_cubeMapNegativeX,=0x00000800) 4 | X(e_cubeMapPositiveY,=0x00001000) 5 | X(e_cubeMapNegativeY,=0x00002000) 6 | X(e_cubeMapPositiveZ,=0x00004000) 7 | X(e_cubeMapNegativeZ,=0x00008000) 8 | X(e_volume,=0x00200000) 9 | -------------------------------------------------------------------------------- /defs/dds/d3d_formats.def: -------------------------------------------------------------------------------- 1 | X(D3DFMT_UNKNOWN,=0) 2 | 3 | X(D3DFMT_R8G8B8,=20) 4 | X(D3DFMT_A8R8G8B8,=21) 5 | X(D3DFMT_X8R8G8B8,=22) 6 | X(D3DFMT_R5G6B5,=23) 7 | X(D3DFMT_X1R5G5B5,=24) 8 | X(D3DFMT_A1R5G5B5,=25) 9 | X(D3DFMT_A4R4G4B4,=26) 10 | X(D3DFMT_R3G3B2,=27) 11 | X(D3DFMT_A8,=28) 12 | X(D3DFMT_A8R3G3B2,=29) 13 | X(D3DFMT_X4R4G4B4,=30) 14 | X(D3DFMT_A2B10G10R10,=31) 15 | X(D3DFMT_A8B8G8R8,=32) 16 | X(D3DFMT_X8B8G8R8,=33) 17 | X(D3DFMT_G16R16,=34) 18 | X(D3DFMT_A2R10G10B10,=35) 19 | X(D3DFMT_A16B16G16R16,=36) 20 | 21 | X(D3DFMT_A8P8,=40) 22 | X(D3DFMT_P8,=41) 23 | 24 | X(D3DFMT_L8,=50) 25 | X(D3DFMT_A8L8,=51) 26 | X(D3DFMT_A4L4,=52) 27 | 28 | X(D3DFMT_V8U8,=60) 29 | X(D3DFMT_L6V5U5,=61) 30 | X(D3DFMT_X8L8V8U8,=62) 31 | X(D3DFMT_Q8W8V8U8,=63) 32 | X(D3DFMT_V16U16,=64) 33 | X(D3DFMT_A2W10V10U10,=67) 34 | 35 | X(D3DFMT_L16,=81) 36 | 37 | X(D3DFMT_Q16W16V16U16,=110) 38 | 39 | X(D3DFMT_R16F,=111) 40 | X(D3DFMT_G16R16F,=112) 41 | X(D3DFMT_A16B16G16R16F,=113) 42 | 43 | X(D3DFMT_R32F,=114) 44 | X(D3DFMT_G32R32F,=115) 45 | X(D3DFMT_A32B32G32R32F,=116) 46 | 47 | 48 | X(D3DFMT_UYVY,=MakeFourCC('U','Y','V','Y')) 49 | X(D3DFMT_R8G8_B8G8,=MakeFourCC('R','G','B','G')) 50 | X(D3DFMT_YUY2,=MakeFourCC('Y','U','Y','2')) 51 | X(D3DFMT_G8R8_G8B8,=MakeFourCC('G','R','G','B')) 52 | X(D3DFMT_DXT1,=MakeFourCC('D','X','T','1')) 53 | X(D3DFMT_DXT2,=MakeFourCC('D','X','T','2')) 54 | X(D3DFMT_DXT3,=MakeFourCC('D','X','T','3')) 55 | X(D3DFMT_DXT4,=MakeFourCC('D','X','T','4')) 56 | X(D3DFMT_DXT5,=MakeFourCC('D','X','T','5')) 57 | X(D3DFMT_PVRTC2 ,=MakeFourCC('P','T','C','2')) 58 | X(D3DFMT_PVRTC4 ,=MakeFourCC('P','T','C','4')) 59 | X(D3DFMT_FORCE_DWORD,=0x7fffffff) 60 | -------------------------------------------------------------------------------- /defs/dds/dds_flags.def: -------------------------------------------------------------------------------- 1 | X(e_Capabilities,=0x00000001) 2 | X(e_height,=0x00000002) 3 | X(e_width,=0x00000004) 4 | X(e_pitch,=0x00000008) 5 | X(e_pixelFormat,=0x00001000) 6 | X(e_mipMapCount,=0x00020000) 7 | X(e_linearSize,=0x00080000) 8 | X(e_depth,=0x00800000) 9 | -------------------------------------------------------------------------------- /defs/dds/dxgi_format.def: -------------------------------------------------------------------------------- 1 | X(DXGI_FORMAT_UNKNOWN,=0) 2 | X(DXGI_FORMAT_R32G32B32A32_FLOAT,=2) 3 | X(DXGI_FORMAT_R32G32B32A32_UINT,=3) 4 | X(DXGI_FORMAT_R32G32B32A32_SINT,=4) 5 | X(DXGI_FORMAT_R32G32B32_FLOAT,=6) 6 | X(DXGI_FORMAT_R32G32B32_UINT,=7) 7 | X(DXGI_FORMAT_R32G32B32_SINT,=8) 8 | X(DXGI_FORMAT_R16G16B16A16_FLOAT,=10) 9 | X(DXGI_FORMAT_R16G16B16A16_UNORM,=11) 10 | X(DXGI_FORMAT_R16G16B16A16_UINT,=12) 11 | X(DXGI_FORMAT_R16G16B16A16_SNORM,=13) 12 | X(DXGI_FORMAT_R16G16B16A16_SINT,=14) 13 | X(DXGI_FORMAT_R32G32_FLOAT,=16) 14 | X(DXGI_FORMAT_R32G32_UINT,=17) 15 | X(DXGI_FORMAT_R32G32_SINT,=18) 16 | X(DXGI_FORMAT_R10G10B10A2_UNORM,=24) 17 | X(DXGI_FORMAT_R10G10B10A2_UINT,=25) 18 | X(DXGI_FORMAT_R11G11B10_FLOAT,=26) 19 | X(DXGI_FORMAT_R8G8B8A8_UNORM,=28) 20 | X(DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,=29) 21 | X(DXGI_FORMAT_R8G8B8A8_UINT,=30) 22 | X(DXGI_FORMAT_R8G8B8A8_SNORM,=31) 23 | X(DXGI_FORMAT_R8G8B8A8_SINT,=32) 24 | X(DXGI_FORMAT_R16G16_FLOAT,=34) 25 | X(DXGI_FORMAT_R16G16_UNORM,=35) 26 | X(DXGI_FORMAT_R16G16_UINT,=36) 27 | X(DXGI_FORMAT_R16G16_SNORM,=37) 28 | X(DXGI_FORMAT_R16G16_SINT,=38) 29 | X(DXGI_FORMAT_R32_FLOAT,=41) 30 | X(DXGI_FORMAT_R32_UINT,=42) 31 | X(DXGI_FORMAT_R32_SINT,=43) 32 | X(DXGI_FORMAT_R8G8_UNORM,=49) 33 | X(DXGI_FORMAT_R8G8_UINT,=50) 34 | X(DXGI_FORMAT_R8G8_SNORM,=51) 35 | X(DXGI_FORMAT_R8G8_SINT,=52) 36 | X(DXGI_FORMAT_R16_FLOAT,=54) 37 | X(DXGI_FORMAT_R16_UNORM,=56) 38 | X(DXGI_FORMAT_R16_UINT,=57) 39 | X(DXGI_FORMAT_R16_SNORM,=58) 40 | X(DXGI_FORMAT_R16_SINT,=59) 41 | X(DXGI_FORMAT_R8_TYPELESS,=60) 42 | X(DXGI_FORMAT_R8_UNORM,=61) 43 | X(DXGI_FORMAT_R8_UINT,=62) 44 | X(DXGI_FORMAT_R8_SNORM,=63) 45 | X(DXGI_FORMAT_R8_SINT,=64) 46 | X(DXGI_FORMAT_A8_UNORM,=65) 47 | X(DXGI_FORMAT_R1_UNORM,=66) 48 | X(DXGI_FORMAT_R9G9B9E5_SHAREDEXP,=67) 49 | X(DXGI_FORMAT_R8G8_B8G8_UNORM,=68) 50 | X(DXGI_FORMAT_G8R8_G8B8_UNORM,=69) 51 | X(DXGI_FORMAT_BC1_UNORM,=71) 52 | X(DXGI_FORMAT_BC1_UNORM_SRGB,=72) 53 | X(DXGI_FORMAT_BC2_UNORM,=74) 54 | X(DXGI_FORMAT_BC2_UNORM_SRGB,=75) 55 | X(DXGI_FORMAT_BC3_UNORM,=77) 56 | X(DXGI_FORMAT_BC3_UNORM_SRGB,=78) 57 | X(DXGI_FORMAT_BC4_UNORM,=80) 58 | X(DXGI_FORMAT_BC4_SNORM,=81) 59 | X(DXGI_FORMAT_BC5_UNORM,=83) 60 | X(DXGI_FORMAT_BC5_SNORM,=84) 61 | X(DXGI_FORMAT_B5G6R5_UNORM,=85) 62 | X(DXGI_FORMAT_B5G5R5A1_UNORM,=86) 63 | X(DXGI_FORMAT_B8G8R8A8_UNORM,=87) 64 | X(DXGI_FORMAT_B8G8R8X8_UNORM,=88) 65 | X(DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM,=89) 66 | X(DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,=91) 67 | X(DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,=93) 68 | X(DXGI_FORMAT_BC6H_UF16,=95) 69 | X(DXGI_FORMAT_BC6H_SF16,=96) 70 | X(DXGI_FORMAT_BC7_UNORM,=98) 71 | X(DXGI_FORMAT_BC7_UNORM_SRGB,=99) 72 | X(DXGI_FORMAT_YUY2,=107) 73 | X(DXGI_FORMAT_AI44,=111) 74 | X(DXGI_FORMAT_IA44,=112) 75 | X(DXGI_FORMAT_B4G4R4A4_UNORM,=115) 76 | X(DXGI_FORMAT_FORCE_UINT,=0xffffffffUL) 77 | -------------------------------------------------------------------------------- /defs/dds/pixel_format_flags.def: -------------------------------------------------------------------------------- 1 | X(e_alphaPixels,=0x00000001) 2 | X(e_alpha,=0x00000002) 3 | X(e_fourCC,=0x00000004) 4 | X(e_rgb,=0x00000040) 5 | X(e_yuv,=0x00000200) 6 | X(e_luminance,=0x00020000) 7 | X(e_unknownBump1,=0x00040000) 8 | X(e_unknownBump2,=0x00080000) 9 | -------------------------------------------------------------------------------- /defs/dds/texture_dimension.def: -------------------------------------------------------------------------------- 1 | X(e_texture1D ,=2) 2 | X(e_texture2D ,=3) 3 | X(e_texture3D ,=4) 4 | -------------------------------------------------------------------------------- /defs/dds/texture_misc_flags.def: -------------------------------------------------------------------------------- 1 | X(e_textureCube,=0x4L) 2 | -------------------------------------------------------------------------------- /defs/dds/texture_misc_flags_2.def: -------------------------------------------------------------------------------- 1 | X(Unknown,) 2 | X(e_straight,) 3 | X(e_premultiplied,) 4 | X(e_opaque,) 5 | X(e_custom,) 6 | -------------------------------------------------------------------------------- /defs/ktx/def_from_gl_h.sh: -------------------------------------------------------------------------------- 1 | grep -e "#define.*0x.*" *.h | sed 's/#define \(.*\)/X\(\1\)/' | sed 's/ 0x/,=0x/' > gl.def 2 | -------------------------------------------------------------------------------- /defs/ktx/gl.def: -------------------------------------------------------------------------------- 1 | X(GL_DEPTH_BUFFER_BIT ,=0x00000100) 2 | X(GL_STENCIL_BUFFER_BIT ,=0x00000400) 3 | X(GL_COLOR_BUFFER_BIT ,=0x00004000) 4 | X(GL_POINTS ,=0x0000) 5 | X(GL_LINES ,=0x0001) 6 | X(GL_LINE_LOOP ,=0x0002) 7 | X(GL_LINE_STRIP ,=0x0003) 8 | X(GL_TRIANGLES ,=0x0004) 9 | X(GL_TRIANGLE_STRIP ,=0x0005) 10 | X(GL_TRIANGLE_FAN ,=0x0006) 11 | X(GL_QUADS ,=0x0007) 12 | X(GL_NEVER ,=0x0200) 13 | X(GL_LESS ,=0x0201) 14 | X(GL_EQUAL ,=0x0202) 15 | X(GL_LEQUAL ,=0x0203) 16 | X(GL_GREATER ,=0x0204) 17 | X(GL_NOTEQUAL ,=0x0205) 18 | X(GL_GEQUAL ,=0x0206) 19 | X(GL_ALWAYS ,=0x0207) 20 | X(GL_SRC_COLOR ,=0x0300) 21 | X(GL_ONE_MINUS_SRC_COLOR ,=0x0301) 22 | X(GL_SRC_ALPHA ,=0x0302) 23 | X(GL_ONE_MINUS_SRC_ALPHA ,=0x0303) 24 | X(GL_DST_ALPHA ,=0x0304) 25 | X(GL_ONE_MINUS_DST_ALPHA ,=0x0305) 26 | X(GL_DST_COLOR ,=0x0306) 27 | X(GL_ONE_MINUS_DST_COLOR ,=0x0307) 28 | X(GL_SRC_ALPHA_SATURATE ,=0x0308) 29 | X(GL_FRONT_LEFT ,=0x0400) 30 | X(GL_FRONT_RIGHT ,=0x0401) 31 | X(GL_BACK_LEFT ,=0x0402) 32 | X(GL_BACK_RIGHT ,=0x0403) 33 | X(GL_FRONT ,=0x0404) 34 | X(GL_BACK ,=0x0405) 35 | X(GL_LEFT ,=0x0406) 36 | X(GL_RIGHT ,=0x0407) 37 | X(GL_FRONT_AND_BACK ,=0x0408) 38 | X(GL_INVALID_ENUM ,=0x0500) 39 | X(GL_INVALID_VALUE ,=0x0501) 40 | X(GL_INVALID_OPERATION ,=0x0502) 41 | X(GL_OUT_OF_MEMORY ,=0x0505) 42 | X(GL_CW ,=0x0900) 43 | X(GL_CCW ,=0x0901) 44 | X(GL_POINT_SIZE ,=0x0B11) 45 | X(GL_POINT_SIZE_RANGE ,=0x0B12) 46 | X(GL_POINT_SIZE_GRANULARITY ,=0x0B13) 47 | X(GL_LINE_SMOOTH ,=0x0B20) 48 | X(GL_LINE_WIDTH ,=0x0B21) 49 | X(GL_LINE_WIDTH_RANGE ,=0x0B22) 50 | X(GL_LINE_WIDTH_GRANULARITY ,=0x0B23) 51 | X(GL_POLYGON_MODE ,=0x0B40) 52 | X(GL_POLYGON_SMOOTH ,=0x0B41) 53 | X(GL_CULL_FACE ,=0x0B44) 54 | X(GL_CULL_FACE_MODE ,=0x0B45) 55 | X(GL_FRONT_FACE ,=0x0B46) 56 | X(GL_DEPTH_RANGE ,=0x0B70) 57 | X(GL_DEPTH_TEST ,=0x0B71) 58 | X(GL_DEPTH_WRITEMASK ,=0x0B72) 59 | X(GL_DEPTH_CLEAR_VALUE ,=0x0B73) 60 | X(GL_DEPTH_FUNC ,=0x0B74) 61 | X(GL_STENCIL_TEST ,=0x0B90) 62 | X(GL_STENCIL_CLEAR_VALUE ,=0x0B91) 63 | X(GL_STENCIL_FUNC ,=0x0B92) 64 | X(GL_STENCIL_VALUE_MASK ,=0x0B93) 65 | X(GL_STENCIL_FAIL ,=0x0B94) 66 | X(GL_STENCIL_PASS_DEPTH_FAIL ,=0x0B95) 67 | X(GL_STENCIL_PASS_DEPTH_PASS ,=0x0B96) 68 | X(GL_STENCIL_REF ,=0x0B97) 69 | X(GL_STENCIL_WRITEMASK ,=0x0B98) 70 | X(GL_VIEWPORT ,=0x0BA2) 71 | X(GL_DITHER ,=0x0BD0) 72 | X(GL_BLEND_DST ,=0x0BE0) 73 | X(GL_BLEND_SRC ,=0x0BE1) 74 | X(GL_BLEND ,=0x0BE2) 75 | X(GL_LOGIC_OP_MODE ,=0x0BF0) 76 | X(GL_COLOR_LOGIC_OP ,=0x0BF2) 77 | X(GL_DRAW_BUFFER ,=0x0C01) 78 | X(GL_READ_BUFFER ,=0x0C02) 79 | X(GL_SCISSOR_BOX ,=0x0C10) 80 | X(GL_SCISSOR_TEST ,=0x0C11) 81 | X(GL_COLOR_CLEAR_VALUE ,=0x0C22) 82 | X(GL_COLOR_WRITEMASK ,=0x0C23) 83 | X(GL_DOUBLEBUFFER ,=0x0C32) 84 | X(GL_STEREO ,=0x0C33) 85 | X(GL_LINE_SMOOTH_HINT ,=0x0C52) 86 | X(GL_POLYGON_SMOOTH_HINT ,=0x0C53) 87 | X(GL_UNPACK_SWAP_BYTES ,=0x0CF0) 88 | X(GL_UNPACK_LSB_FIRST ,=0x0CF1) 89 | X(GL_UNPACK_ROW_LENGTH ,=0x0CF2) 90 | X(GL_UNPACK_SKIP_ROWS ,=0x0CF3) 91 | X(GL_UNPACK_SKIP_PIXELS ,=0x0CF4) 92 | X(GL_UNPACK_ALIGNMENT ,=0x0CF5) 93 | X(GL_PACK_SWAP_BYTES ,=0x0D00) 94 | X(GL_PACK_LSB_FIRST ,=0x0D01) 95 | X(GL_PACK_ROW_LENGTH ,=0x0D02) 96 | X(GL_PACK_SKIP_ROWS ,=0x0D03) 97 | X(GL_PACK_SKIP_PIXELS ,=0x0D04) 98 | X(GL_PACK_ALIGNMENT ,=0x0D05) 99 | X(GL_MAX_TEXTURE_SIZE ,=0x0D33) 100 | X(GL_MAX_VIEWPORT_DIMS ,=0x0D3A) 101 | X(GL_SUBPIXEL_BITS ,=0x0D50) 102 | X(GL_TEXTURE_1D ,=0x0DE0) 103 | X(GL_TEXTURE_2D ,=0x0DE1) 104 | X(GL_POLYGON_OFFSET_UNITS ,=0x2A00) 105 | X(GL_POLYGON_OFFSET_POINT ,=0x2A01) 106 | X(GL_POLYGON_OFFSET_LINE ,=0x2A02) 107 | X(GL_POLYGON_OFFSET_FILL ,=0x8037) 108 | X(GL_POLYGON_OFFSET_FACTOR ,=0x8038) 109 | X(GL_TEXTURE_BINDING_1D ,=0x8068) 110 | X(GL_TEXTURE_BINDING_2D ,=0x8069) 111 | X(GL_TEXTURE_WIDTH ,=0x1000) 112 | X(GL_TEXTURE_HEIGHT ,=0x1001) 113 | X(GL_TEXTURE_INTERNAL_FORMAT ,=0x1003) 114 | X(GL_TEXTURE_BORDER_COLOR ,=0x1004) 115 | X(GL_TEXTURE_RED_SIZE ,=0x805C) 116 | X(GL_TEXTURE_GREEN_SIZE ,=0x805D) 117 | X(GL_TEXTURE_BLUE_SIZE ,=0x805E) 118 | X(GL_TEXTURE_ALPHA_SIZE ,=0x805F) 119 | X(GL_DONT_CARE ,=0x1100) 120 | X(GL_FASTEST ,=0x1101) 121 | X(GL_NICEST ,=0x1102) 122 | X(GL_BYTE ,=0x1400) 123 | X(GL_UNSIGNED_BYTE ,=0x1401) 124 | X(GL_SHORT ,=0x1402) 125 | X(GL_UNSIGNED_SHORT ,=0x1403) 126 | X(GL_INT ,=0x1404) 127 | X(GL_UNSIGNED_INT ,=0x1405) 128 | X(GL_FLOAT ,=0x1406) 129 | X(GL_DOUBLE ,=0x140A) 130 | X(GL_STACK_OVERFLOW ,=0x0503) 131 | X(GL_STACK_UNDERFLOW ,=0x0504) 132 | X(GL_CLEAR ,=0x1500) 133 | X(GL_AND ,=0x1501) 134 | X(GL_AND_REVERSE ,=0x1502) 135 | X(GL_COPY ,=0x1503) 136 | X(GL_AND_INVERTED ,=0x1504) 137 | X(GL_NOOP ,=0x1505) 138 | X(GL_XOR ,=0x1506) 139 | X(GL_OR ,=0x1507) 140 | X(GL_NOR ,=0x1508) 141 | X(GL_EQUIV ,=0x1509) 142 | X(GL_INVERT ,=0x150A) 143 | X(GL_OR_REVERSE ,=0x150B) 144 | X(GL_COPY_INVERTED ,=0x150C) 145 | X(GL_OR_INVERTED ,=0x150D) 146 | X(GL_NAND ,=0x150E) 147 | X(GL_SET ,=0x150F) 148 | X(GL_TEXTURE ,=0x1702) 149 | X(GL_COLOR ,=0x1800) 150 | X(GL_DEPTH ,=0x1801) 151 | X(GL_STENCIL ,=0x1802) 152 | X(GL_STENCIL_INDEX ,=0x1901) 153 | X(GL_DEPTH_COMPONENT ,=0x1902) 154 | X(GL_RED ,=0x1903) 155 | X(GL_GREEN ,=0x1904) 156 | X(GL_BLUE ,=0x1905) 157 | X(GL_ALPHA ,=0x1906) 158 | X(GL_RGB ,=0x1907) 159 | X(GL_RGBA ,=0x1908) 160 | X(GL_POINT ,=0x1B00) 161 | X(GL_LINE ,=0x1B01) 162 | X(GL_FILL ,=0x1B02) 163 | X(GL_KEEP ,=0x1E00) 164 | X(GL_REPLACE ,=0x1E01) 165 | X(GL_INCR ,=0x1E02) 166 | X(GL_DECR ,=0x1E03) 167 | X(GL_VENDOR ,=0x1F00) 168 | X(GL_RENDERER ,=0x1F01) 169 | X(GL_VERSION ,=0x1F02) 170 | X(GL_EXTENSIONS ,=0x1F03) 171 | X(GL_NEAREST ,=0x2600) 172 | X(GL_LINEAR ,=0x2601) 173 | X(GL_NEAREST_MIPMAP_NEAREST ,=0x2700) 174 | X(GL_LINEAR_MIPMAP_NEAREST ,=0x2701) 175 | X(GL_NEAREST_MIPMAP_LINEAR ,=0x2702) 176 | X(GL_LINEAR_MIPMAP_LINEAR ,=0x2703) 177 | X(GL_TEXTURE_MAG_FILTER ,=0x2800) 178 | X(GL_TEXTURE_MIN_FILTER ,=0x2801) 179 | X(GL_TEXTURE_WRAP_S ,=0x2802) 180 | X(GL_TEXTURE_WRAP_T ,=0x2803) 181 | X(GL_PROXY_TEXTURE_1D ,=0x8063) 182 | X(GL_PROXY_TEXTURE_2D ,=0x8064) 183 | X(GL_REPEAT ,=0x2901) 184 | X(GL_R3_G3_B2 ,=0x2A10) 185 | X(GL_RGB4 ,=0x804F) 186 | X(GL_RGB5 ,=0x8050) 187 | X(GL_RGB8 ,=0x8051) 188 | X(GL_RGB10 ,=0x8052) 189 | X(GL_RGB12 ,=0x8053) 190 | X(GL_RGB16 ,=0x8054) 191 | X(GL_RGBA2 ,=0x8055) 192 | X(GL_RGBA4 ,=0x8056) 193 | X(GL_RGB5_A1 ,=0x8057) 194 | X(GL_RGBA8 ,=0x8058) 195 | X(GL_RGB10_A2 ,=0x8059) 196 | X(GL_RGBA12 ,=0x805A) 197 | X(GL_RGBA16 ,=0x805B) 198 | X(GL_VERTEX_ARRAY ,=0x8074) 199 | X(GL_UNSIGNED_BYTE_3_3_2 ,=0x8032) 200 | X(GL_UNSIGNED_SHORT_4_4_4_4 ,=0x8033) 201 | X(GL_UNSIGNED_SHORT_5_5_5_1 ,=0x8034) 202 | X(GL_UNSIGNED_INT_8_8_8_8 ,=0x8035) 203 | X(GL_UNSIGNED_INT_10_10_10_2 ,=0x8036) 204 | X(GL_TEXTURE_BINDING_3D ,=0x806A) 205 | X(GL_PACK_SKIP_IMAGES ,=0x806B) 206 | X(GL_PACK_IMAGE_HEIGHT ,=0x806C) 207 | X(GL_UNPACK_SKIP_IMAGES ,=0x806D) 208 | X(GL_UNPACK_IMAGE_HEIGHT ,=0x806E) 209 | X(GL_TEXTURE_3D ,=0x806F) 210 | X(GL_PROXY_TEXTURE_3D ,=0x8070) 211 | X(GL_TEXTURE_DEPTH ,=0x8071) 212 | X(GL_TEXTURE_WRAP_R ,=0x8072) 213 | X(GL_MAX_3D_TEXTURE_SIZE ,=0x8073) 214 | X(GL_UNSIGNED_BYTE_2_3_3_REV ,=0x8362) 215 | X(GL_UNSIGNED_SHORT_5_6_5 ,=0x8363) 216 | X(GL_UNSIGNED_SHORT_5_6_5_REV ,=0x8364) 217 | X(GL_UNSIGNED_SHORT_4_4_4_4_REV ,=0x8365) 218 | X(GL_UNSIGNED_SHORT_1_5_5_5_REV ,=0x8366) 219 | X(GL_UNSIGNED_INT_8_8_8_8_REV ,=0x8367) 220 | X(GL_UNSIGNED_INT_2_10_10_10_REV ,=0x8368) 221 | X(GL_BGR ,=0x80E0) 222 | X(GL_BGRA ,=0x80E1) 223 | X(GL_MAX_ELEMENTS_VERTICES ,=0x80E8) 224 | X(GL_MAX_ELEMENTS_INDICES ,=0x80E9) 225 | X(GL_CLAMP_TO_EDGE ,=0x812F) 226 | X(GL_TEXTURE_MIN_LOD ,=0x813A) 227 | X(GL_TEXTURE_MAX_LOD ,=0x813B) 228 | X(GL_TEXTURE_BASE_LEVEL ,=0x813C) 229 | X(GL_TEXTURE_MAX_LEVEL ,=0x813D) 230 | X(GL_SMOOTH_POINT_SIZE_RANGE ,=0x0B12) 231 | X(GL_SMOOTH_POINT_SIZE_GRANULARITY ,=0x0B13) 232 | X(GL_SMOOTH_LINE_WIDTH_RANGE ,=0x0B22) 233 | X(GL_SMOOTH_LINE_WIDTH_GRANULARITY ,=0x0B23) 234 | X(GL_ALIASED_LINE_WIDTH_RANGE ,=0x846E) 235 | X(GL_TEXTURE0 ,=0x84C0) 236 | X(GL_TEXTURE1 ,=0x84C1) 237 | X(GL_TEXTURE2 ,=0x84C2) 238 | X(GL_TEXTURE3 ,=0x84C3) 239 | X(GL_TEXTURE4 ,=0x84C4) 240 | X(GL_TEXTURE5 ,=0x84C5) 241 | X(GL_TEXTURE6 ,=0x84C6) 242 | X(GL_TEXTURE7 ,=0x84C7) 243 | X(GL_TEXTURE8 ,=0x84C8) 244 | X(GL_TEXTURE9 ,=0x84C9) 245 | X(GL_TEXTURE10 ,=0x84CA) 246 | X(GL_TEXTURE11 ,=0x84CB) 247 | X(GL_TEXTURE12 ,=0x84CC) 248 | X(GL_TEXTURE13 ,=0x84CD) 249 | X(GL_TEXTURE14 ,=0x84CE) 250 | X(GL_TEXTURE15 ,=0x84CF) 251 | X(GL_TEXTURE16 ,=0x84D0) 252 | X(GL_TEXTURE17 ,=0x84D1) 253 | X(GL_TEXTURE18 ,=0x84D2) 254 | X(GL_TEXTURE19 ,=0x84D3) 255 | X(GL_TEXTURE20 ,=0x84D4) 256 | X(GL_TEXTURE21 ,=0x84D5) 257 | X(GL_TEXTURE22 ,=0x84D6) 258 | X(GL_TEXTURE23 ,=0x84D7) 259 | X(GL_TEXTURE24 ,=0x84D8) 260 | X(GL_TEXTURE25 ,=0x84D9) 261 | X(GL_TEXTURE26 ,=0x84DA) 262 | X(GL_TEXTURE27 ,=0x84DB) 263 | X(GL_TEXTURE28 ,=0x84DC) 264 | X(GL_TEXTURE29 ,=0x84DD) 265 | X(GL_TEXTURE30 ,=0x84DE) 266 | X(GL_TEXTURE31 ,=0x84DF) 267 | X(GL_ACTIVE_TEXTURE ,=0x84E0) 268 | X(GL_MULTISAMPLE ,=0x809D) 269 | X(GL_SAMPLE_ALPHA_TO_COVERAGE ,=0x809E) 270 | X(GL_SAMPLE_ALPHA_TO_ONE ,=0x809F) 271 | X(GL_SAMPLE_COVERAGE ,=0x80A0) 272 | X(GL_SAMPLE_BUFFERS ,=0x80A8) 273 | X(GL_SAMPLES ,=0x80A9) 274 | X(GL_SAMPLE_COVERAGE_VALUE ,=0x80AA) 275 | X(GL_SAMPLE_COVERAGE_INVERT ,=0x80AB) 276 | X(GL_TEXTURE_CUBE_MAP ,=0x8513) 277 | X(GL_TEXTURE_BINDING_CUBE_MAP ,=0x8514) 278 | X(GL_TEXTURE_CUBE_MAP_POSITIVE_X ,=0x8515) 279 | X(GL_TEXTURE_CUBE_MAP_NEGATIVE_X ,=0x8516) 280 | X(GL_TEXTURE_CUBE_MAP_POSITIVE_Y ,=0x8517) 281 | X(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y ,=0x8518) 282 | X(GL_TEXTURE_CUBE_MAP_POSITIVE_Z ,=0x8519) 283 | X(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z ,=0x851A) 284 | X(GL_PROXY_TEXTURE_CUBE_MAP ,=0x851B) 285 | X(GL_MAX_CUBE_MAP_TEXTURE_SIZE ,=0x851C) 286 | X(GL_COMPRESSED_RGB ,=0x84ED) 287 | X(GL_COMPRESSED_RGBA ,=0x84EE) 288 | X(GL_TEXTURE_COMPRESSION_HINT ,=0x84EF) 289 | X(GL_TEXTURE_COMPRESSED_IMAGE_SIZE ,=0x86A0) 290 | X(GL_TEXTURE_COMPRESSED ,=0x86A1) 291 | X(GL_NUM_COMPRESSED_TEXTURE_FORMATS,=0x86A2) 292 | X(GL_COMPRESSED_TEXTURE_FORMATS ,=0x86A3) 293 | X(GL_CLAMP_TO_BORDER ,=0x812D) 294 | X(GL_BLEND_DST_RGB ,=0x80C8) 295 | X(GL_BLEND_SRC_RGB ,=0x80C9) 296 | X(GL_BLEND_DST_ALPHA ,=0x80CA) 297 | X(GL_BLEND_SRC_ALPHA ,=0x80CB) 298 | X(GL_POINT_FADE_THRESHOLD_SIZE ,=0x8128) 299 | X(GL_DEPTH_COMPONENT16 ,=0x81A5) 300 | X(GL_DEPTH_COMPONENT24 ,=0x81A6) 301 | X(GL_DEPTH_COMPONENT32 ,=0x81A7) 302 | X(GL_MIRRORED_REPEAT ,=0x8370) 303 | X(GL_MAX_TEXTURE_LOD_BIAS ,=0x84FD) 304 | X(GL_TEXTURE_LOD_BIAS ,=0x8501) 305 | X(GL_INCR_WRAP ,=0x8507) 306 | X(GL_DECR_WRAP ,=0x8508) 307 | X(GL_TEXTURE_DEPTH_SIZE ,=0x884A) 308 | X(GL_TEXTURE_COMPARE_MODE ,=0x884C) 309 | X(GL_TEXTURE_COMPARE_FUNC ,=0x884D) 310 | X(GL_FUNC_ADD ,=0x8006) 311 | X(GL_FUNC_SUBTRACT ,=0x800A) 312 | X(GL_FUNC_REVERSE_SUBTRACT ,=0x800B) 313 | X(GL_MIN ,=0x8007) 314 | X(GL_MAX ,=0x8008) 315 | X(GL_CONSTANT_COLOR ,=0x8001) 316 | X(GL_ONE_MINUS_CONSTANT_COLOR ,=0x8002) 317 | X(GL_CONSTANT_ALPHA ,=0x8003) 318 | X(GL_ONE_MINUS_CONSTANT_ALPHA ,=0x8004) 319 | X(GL_BUFFER_SIZE ,=0x8764) 320 | X(GL_BUFFER_USAGE ,=0x8765) 321 | X(GL_QUERY_COUNTER_BITS ,=0x8864) 322 | X(GL_CURRENT_QUERY ,=0x8865) 323 | X(GL_QUERY_RESULT ,=0x8866) 324 | X(GL_QUERY_RESULT_AVAILABLE ,=0x8867) 325 | X(GL_ARRAY_BUFFER ,=0x8892) 326 | X(GL_ELEMENT_ARRAY_BUFFER ,=0x8893) 327 | X(GL_ARRAY_BUFFER_BINDING ,=0x8894) 328 | X(GL_ELEMENT_ARRAY_BUFFER_BINDING ,=0x8895) 329 | X(GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING,=0x889F) 330 | X(GL_READ_ONLY ,=0x88B8) 331 | X(GL_WRITE_ONLY ,=0x88B9) 332 | X(GL_READ_WRITE ,=0x88BA) 333 | X(GL_BUFFER_ACCESS ,=0x88BB) 334 | X(GL_BUFFER_MAPPED ,=0x88BC) 335 | X(GL_BUFFER_MAP_POINTER ,=0x88BD) 336 | X(GL_STREAM_DRAW ,=0x88E0) 337 | X(GL_STREAM_READ ,=0x88E1) 338 | X(GL_STREAM_COPY ,=0x88E2) 339 | X(GL_STATIC_DRAW ,=0x88E4) 340 | X(GL_STATIC_READ ,=0x88E5) 341 | X(GL_STATIC_COPY ,=0x88E6) 342 | X(GL_DYNAMIC_DRAW ,=0x88E8) 343 | X(GL_DYNAMIC_READ ,=0x88E9) 344 | X(GL_DYNAMIC_COPY ,=0x88EA) 345 | X(GL_SAMPLES_PASSED ,=0x8914) 346 | X(GL_SRC1_ALPHA ,=0x8589) 347 | X(GL_BLEND_EQUATION_RGB ,=0x8009) 348 | X(GL_VERTEX_ATTRIB_ARRAY_ENABLED ,=0x8622) 349 | X(GL_VERTEX_ATTRIB_ARRAY_SIZE ,=0x8623) 350 | X(GL_VERTEX_ATTRIB_ARRAY_STRIDE ,=0x8624) 351 | X(GL_VERTEX_ATTRIB_ARRAY_TYPE ,=0x8625) 352 | X(GL_CURRENT_VERTEX_ATTRIB ,=0x8626) 353 | X(GL_VERTEX_PROGRAM_POINT_SIZE ,=0x8642) 354 | X(GL_VERTEX_ATTRIB_ARRAY_POINTER ,=0x8645) 355 | X(GL_STENCIL_BACK_FUNC ,=0x8800) 356 | X(GL_STENCIL_BACK_FAIL ,=0x8801) 357 | X(GL_STENCIL_BACK_PASS_DEPTH_FAIL ,=0x8802) 358 | X(GL_STENCIL_BACK_PASS_DEPTH_PASS ,=0x8803) 359 | X(GL_MAX_DRAW_BUFFERS ,=0x8824) 360 | X(GL_DRAW_BUFFER0 ,=0x8825) 361 | X(GL_DRAW_BUFFER1 ,=0x8826) 362 | X(GL_DRAW_BUFFER2 ,=0x8827) 363 | X(GL_DRAW_BUFFER3 ,=0x8828) 364 | X(GL_DRAW_BUFFER4 ,=0x8829) 365 | X(GL_DRAW_BUFFER5 ,=0x882A) 366 | X(GL_DRAW_BUFFER6 ,=0x882B) 367 | X(GL_DRAW_BUFFER7 ,=0x882C) 368 | X(GL_DRAW_BUFFER8 ,=0x882D) 369 | X(GL_DRAW_BUFFER9 ,=0x882E) 370 | X(GL_DRAW_BUFFER10 ,=0x882F) 371 | X(GL_DRAW_BUFFER11 ,=0x8830) 372 | X(GL_DRAW_BUFFER12 ,=0x8831) 373 | X(GL_DRAW_BUFFER13 ,=0x8832) 374 | X(GL_DRAW_BUFFER14 ,=0x8833) 375 | X(GL_DRAW_BUFFER15 ,=0x8834) 376 | X(GL_BLEND_EQUATION_ALPHA ,=0x883D) 377 | X(GL_MAX_VERTEX_ATTRIBS ,=0x8869) 378 | X(GL_VERTEX_ATTRIB_ARRAY_NORMALIZED,=0x886A) 379 | X(GL_MAX_TEXTURE_IMAGE_UNITS ,=0x8872) 380 | X(GL_FRAGMENT_SHADER ,=0x8B30) 381 | X(GL_VERTEX_SHADER ,=0x8B31) 382 | X(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS,=0x8B49) 383 | X(GL_MAX_VERTEX_UNIFORM_COMPONENTS ,=0x8B4A) 384 | X(GL_MAX_VARYING_FLOATS ,=0x8B4B) 385 | X(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS,=0x8B4C) 386 | X(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,=0x8B4D) 387 | X(GL_SHADER_TYPE ,=0x8B4F) 388 | X(GL_FLOAT_VEC2 ,=0x8B50) 389 | X(GL_FLOAT_VEC3 ,=0x8B51) 390 | X(GL_FLOAT_VEC4 ,=0x8B52) 391 | X(GL_INT_VEC2 ,=0x8B53) 392 | X(GL_INT_VEC3 ,=0x8B54) 393 | X(GL_INT_VEC4 ,=0x8B55) 394 | X(GL_BOOL ,=0x8B56) 395 | X(GL_BOOL_VEC2 ,=0x8B57) 396 | X(GL_BOOL_VEC3 ,=0x8B58) 397 | X(GL_BOOL_VEC4 ,=0x8B59) 398 | X(GL_FLOAT_MAT2 ,=0x8B5A) 399 | X(GL_FLOAT_MAT3 ,=0x8B5B) 400 | X(GL_FLOAT_MAT4 ,=0x8B5C) 401 | X(GL_SAMPLER_1D ,=0x8B5D) 402 | X(GL_SAMPLER_2D ,=0x8B5E) 403 | X(GL_SAMPLER_3D ,=0x8B5F) 404 | X(GL_SAMPLER_CUBE ,=0x8B60) 405 | X(GL_SAMPLER_1D_SHADOW ,=0x8B61) 406 | X(GL_SAMPLER_2D_SHADOW ,=0x8B62) 407 | X(GL_DELETE_STATUS ,=0x8B80) 408 | X(GL_COMPILE_STATUS ,=0x8B81) 409 | X(GL_LINK_STATUS ,=0x8B82) 410 | X(GL_VALIDATE_STATUS ,=0x8B83) 411 | X(GL_INFO_LOG_LENGTH ,=0x8B84) 412 | X(GL_ATTACHED_SHADERS ,=0x8B85) 413 | X(GL_ACTIVE_UNIFORMS ,=0x8B86) 414 | X(GL_ACTIVE_UNIFORM_MAX_LENGTH ,=0x8B87) 415 | X(GL_SHADER_SOURCE_LENGTH ,=0x8B88) 416 | X(GL_ACTIVE_ATTRIBUTES ,=0x8B89) 417 | X(GL_ACTIVE_ATTRIBUTE_MAX_LENGTH ,=0x8B8A) 418 | X(GL_FRAGMENT_SHADER_DERIVATIVE_HINT,=0x8B8B) 419 | X(GL_SHADING_LANGUAGE_VERSION ,=0x8B8C) 420 | X(GL_CURRENT_PROGRAM ,=0x8B8D) 421 | X(GL_POINT_SPRITE_COORD_ORIGIN ,=0x8CA0) 422 | X(GL_LOWER_LEFT ,=0x8CA1) 423 | X(GL_UPPER_LEFT ,=0x8CA2) 424 | X(GL_STENCIL_BACK_REF ,=0x8CA3) 425 | X(GL_STENCIL_BACK_VALUE_MASK ,=0x8CA4) 426 | X(GL_STENCIL_BACK_WRITEMASK ,=0x8CA5) 427 | X(GL_PIXEL_PACK_BUFFER ,=0x88EB) 428 | X(GL_PIXEL_UNPACK_BUFFER ,=0x88EC) 429 | X(GL_PIXEL_PACK_BUFFER_BINDING ,=0x88ED) 430 | X(GL_PIXEL_UNPACK_BUFFER_BINDING ,=0x88EF) 431 | X(GL_FLOAT_MAT2x3 ,=0x8B65) 432 | X(GL_FLOAT_MAT2x4 ,=0x8B66) 433 | X(GL_FLOAT_MAT3x2 ,=0x8B67) 434 | X(GL_FLOAT_MAT3x4 ,=0x8B68) 435 | X(GL_FLOAT_MAT4x2 ,=0x8B69) 436 | X(GL_FLOAT_MAT4x3 ,=0x8B6A) 437 | X(GL_SRGB ,=0x8C40) 438 | X(GL_SRGB8 ,=0x8C41) 439 | X(GL_SRGB_ALPHA ,=0x8C42) 440 | X(GL_SRGB8_ALPHA8 ,=0x8C43) 441 | X(GL_COMPRESSED_SRGB ,=0x8C48) 442 | X(GL_COMPRESSED_SRGB_ALPHA ,=0x8C49) 443 | X(GL_COMPARE_REF_TO_TEXTURE ,=0x884E) 444 | X(GL_CLIP_DISTANCE0 ,=0x3000) 445 | X(GL_CLIP_DISTANCE1 ,=0x3001) 446 | X(GL_CLIP_DISTANCE2 ,=0x3002) 447 | X(GL_CLIP_DISTANCE3 ,=0x3003) 448 | X(GL_CLIP_DISTANCE4 ,=0x3004) 449 | X(GL_CLIP_DISTANCE5 ,=0x3005) 450 | X(GL_CLIP_DISTANCE6 ,=0x3006) 451 | X(GL_CLIP_DISTANCE7 ,=0x3007) 452 | X(GL_MAX_CLIP_DISTANCES ,=0x0D32) 453 | X(GL_MAJOR_VERSION ,=0x821B) 454 | X(GL_MINOR_VERSION ,=0x821C) 455 | X(GL_NUM_EXTENSIONS ,=0x821D) 456 | X(GL_CONTEXT_FLAGS ,=0x821E) 457 | X(GL_COMPRESSED_RED ,=0x8225) 458 | X(GL_COMPRESSED_RG ,=0x8226) 459 | X(GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT,=0x00000001) 460 | X(GL_RGBA32F ,=0x8814) 461 | X(GL_RGB32F ,=0x8815) 462 | X(GL_RGBA16F ,=0x881A) 463 | X(GL_RGB16F ,=0x881B) 464 | X(GL_VERTEX_ATTRIB_ARRAY_INTEGER ,=0x88FD) 465 | X(GL_MAX_ARRAY_TEXTURE_LAYERS ,=0x88FF) 466 | X(GL_MIN_PROGRAM_TEXEL_OFFSET ,=0x8904) 467 | X(GL_MAX_PROGRAM_TEXEL_OFFSET ,=0x8905) 468 | X(GL_CLAMP_READ_COLOR ,=0x891C) 469 | X(GL_FIXED_ONLY ,=0x891D) 470 | X(GL_MAX_VARYING_COMPONENTS ,=0x8B4B) 471 | X(GL_TEXTURE_1D_ARRAY ,=0x8C18) 472 | X(GL_PROXY_TEXTURE_1D_ARRAY ,=0x8C19) 473 | X(GL_TEXTURE_2D_ARRAY ,=0x8C1A) 474 | X(GL_PROXY_TEXTURE_2D_ARRAY ,=0x8C1B) 475 | X(GL_TEXTURE_BINDING_1D_ARRAY ,=0x8C1C) 476 | X(GL_TEXTURE_BINDING_2D_ARRAY ,=0x8C1D) 477 | X(GL_R11F_G11F_B10F ,=0x8C3A) 478 | X(GL_UNSIGNED_INT_10F_11F_11F_REV ,=0x8C3B) 479 | X(GL_RGB9_E5 ,=0x8C3D) 480 | X(GL_UNSIGNED_INT_5_9_9_9_REV ,=0x8C3E) 481 | X(GL_TEXTURE_SHARED_SIZE ,=0x8C3F) 482 | X(GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH,=0x8C76) 483 | X(GL_TRANSFORM_FEEDBACK_BUFFER_MODE,=0x8C7F) 484 | X(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,=0x8C80) 485 | X(GL_TRANSFORM_FEEDBACK_VARYINGS ,=0x8C83) 486 | X(GL_TRANSFORM_FEEDBACK_BUFFER_START,=0x8C84) 487 | X(GL_TRANSFORM_FEEDBACK_BUFFER_SIZE,=0x8C85) 488 | X(GL_PRIMITIVES_GENERATED ,=0x8C87) 489 | X(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN,=0x8C88) 490 | X(GL_RASTERIZER_DISCARD ,=0x8C89) 491 | X(GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,=0x8C8A) 492 | X(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,=0x8C8B) 493 | X(GL_INTERLEAVED_ATTRIBS ,=0x8C8C) 494 | X(GL_SEPARATE_ATTRIBS ,=0x8C8D) 495 | X(GL_TRANSFORM_FEEDBACK_BUFFER ,=0x8C8E) 496 | X(GL_TRANSFORM_FEEDBACK_BUFFER_BINDING,=0x8C8F) 497 | X(GL_RGBA32UI ,=0x8D70) 498 | X(GL_RGB32UI ,=0x8D71) 499 | X(GL_RGBA16UI ,=0x8D76) 500 | X(GL_RGB16UI ,=0x8D77) 501 | X(GL_RGBA8UI ,=0x8D7C) 502 | X(GL_RGB8UI ,=0x8D7D) 503 | X(GL_RGBA32I ,=0x8D82) 504 | X(GL_RGB32I ,=0x8D83) 505 | X(GL_RGBA16I ,=0x8D88) 506 | X(GL_RGB16I ,=0x8D89) 507 | X(GL_RGBA8I ,=0x8D8E) 508 | X(GL_RGB8I ,=0x8D8F) 509 | X(GL_RED_INTEGER ,=0x8D94) 510 | X(GL_GREEN_INTEGER ,=0x8D95) 511 | X(GL_BLUE_INTEGER ,=0x8D96) 512 | X(GL_RGB_INTEGER ,=0x8D98) 513 | X(GL_RGBA_INTEGER ,=0x8D99) 514 | X(GL_BGR_INTEGER ,=0x8D9A) 515 | X(GL_BGRA_INTEGER ,=0x8D9B) 516 | X(GL_SAMPLER_1D_ARRAY ,=0x8DC0) 517 | X(GL_SAMPLER_2D_ARRAY ,=0x8DC1) 518 | X(GL_SAMPLER_1D_ARRAY_SHADOW ,=0x8DC3) 519 | X(GL_SAMPLER_2D_ARRAY_SHADOW ,=0x8DC4) 520 | X(GL_SAMPLER_CUBE_SHADOW ,=0x8DC5) 521 | X(GL_UNSIGNED_INT_VEC2 ,=0x8DC6) 522 | X(GL_UNSIGNED_INT_VEC3 ,=0x8DC7) 523 | X(GL_UNSIGNED_INT_VEC4 ,=0x8DC8) 524 | X(GL_INT_SAMPLER_1D ,=0x8DC9) 525 | X(GL_INT_SAMPLER_2D ,=0x8DCA) 526 | X(GL_INT_SAMPLER_3D ,=0x8DCB) 527 | X(GL_INT_SAMPLER_CUBE ,=0x8DCC) 528 | X(GL_INT_SAMPLER_1D_ARRAY ,=0x8DCE) 529 | X(GL_INT_SAMPLER_2D_ARRAY ,=0x8DCF) 530 | X(GL_UNSIGNED_INT_SAMPLER_1D ,=0x8DD1) 531 | X(GL_UNSIGNED_INT_SAMPLER_2D ,=0x8DD2) 532 | X(GL_UNSIGNED_INT_SAMPLER_3D ,=0x8DD3) 533 | X(GL_UNSIGNED_INT_SAMPLER_CUBE ,=0x8DD4) 534 | X(GL_UNSIGNED_INT_SAMPLER_1D_ARRAY ,=0x8DD6) 535 | X(GL_UNSIGNED_INT_SAMPLER_2D_ARRAY ,=0x8DD7) 536 | X(GL_QUERY_WAIT ,=0x8E13) 537 | X(GL_QUERY_NO_WAIT ,=0x8E14) 538 | X(GL_QUERY_BY_REGION_WAIT ,=0x8E15) 539 | X(GL_QUERY_BY_REGION_NO_WAIT ,=0x8E16) 540 | X(GL_BUFFER_ACCESS_FLAGS ,=0x911F) 541 | X(GL_BUFFER_MAP_LENGTH ,=0x9120) 542 | X(GL_BUFFER_MAP_OFFSET ,=0x9121) 543 | X(GL_DEPTH_COMPONENT32F ,=0x8CAC) 544 | X(GL_DEPTH32F_STENCIL8 ,=0x8CAD) 545 | X(GL_FLOAT_32_UNSIGNED_INT_24_8_REV,=0x8DAD) 546 | X(GL_INVALID_FRAMEBUFFER_OPERATION ,=0x0506) 547 | X(GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING,=0x8210) 548 | X(GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE,=0x8211) 549 | X(GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE,=0x8212) 550 | X(GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,=0x8213) 551 | X(GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,=0x8214) 552 | X(GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,=0x8215) 553 | X(GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,=0x8216) 554 | X(GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,=0x8217) 555 | X(GL_FRAMEBUFFER_DEFAULT ,=0x8218) 556 | X(GL_FRAMEBUFFER_UNDEFINED ,=0x8219) 557 | X(GL_DEPTH_STENCIL_ATTACHMENT ,=0x821A) 558 | X(GL_MAX_RENDERBUFFER_SIZE ,=0x84E8) 559 | X(GL_DEPTH_STENCIL ,=0x84F9) 560 | X(GL_UNSIGNED_INT_24_8 ,=0x84FA) 561 | X(GL_DEPTH24_STENCIL8 ,=0x88F0) 562 | X(GL_TEXTURE_STENCIL_SIZE ,=0x88F1) 563 | X(GL_TEXTURE_RED_TYPE ,=0x8C10) 564 | X(GL_TEXTURE_GREEN_TYPE ,=0x8C11) 565 | X(GL_TEXTURE_BLUE_TYPE ,=0x8C12) 566 | X(GL_TEXTURE_ALPHA_TYPE ,=0x8C13) 567 | X(GL_TEXTURE_DEPTH_TYPE ,=0x8C16) 568 | X(GL_UNSIGNED_NORMALIZED ,=0x8C17) 569 | X(GL_FRAMEBUFFER_BINDING ,=0x8CA6) 570 | X(GL_DRAW_FRAMEBUFFER_BINDING ,=0x8CA6) 571 | X(GL_RENDERBUFFER_BINDING ,=0x8CA7) 572 | X(GL_READ_FRAMEBUFFER ,=0x8CA8) 573 | X(GL_DRAW_FRAMEBUFFER ,=0x8CA9) 574 | X(GL_READ_FRAMEBUFFER_BINDING ,=0x8CAA) 575 | X(GL_RENDERBUFFER_SAMPLES ,=0x8CAB) 576 | X(GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,=0x8CD0) 577 | X(GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME,=0x8CD1) 578 | X(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL,=0x8CD2) 579 | X(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE,=0x8CD3) 580 | X(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER,=0x8CD4) 581 | X(GL_FRAMEBUFFER_COMPLETE ,=0x8CD5) 582 | X(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT,=0x8CD6) 583 | X(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT,=0x8CD7) 584 | X(GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER,=0x8CDB) 585 | X(GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER,=0x8CDC) 586 | X(GL_FRAMEBUFFER_UNSUPPORTED ,=0x8CDD) 587 | X(GL_MAX_COLOR_ATTACHMENTS ,=0x8CDF) 588 | X(GL_COLOR_ATTACHMENT0 ,=0x8CE0) 589 | X(GL_COLOR_ATTACHMENT1 ,=0x8CE1) 590 | X(GL_COLOR_ATTACHMENT2 ,=0x8CE2) 591 | X(GL_COLOR_ATTACHMENT3 ,=0x8CE3) 592 | X(GL_COLOR_ATTACHMENT4 ,=0x8CE4) 593 | X(GL_COLOR_ATTACHMENT5 ,=0x8CE5) 594 | X(GL_COLOR_ATTACHMENT6 ,=0x8CE6) 595 | X(GL_COLOR_ATTACHMENT7 ,=0x8CE7) 596 | X(GL_COLOR_ATTACHMENT8 ,=0x8CE8) 597 | X(GL_COLOR_ATTACHMENT9 ,=0x8CE9) 598 | X(GL_COLOR_ATTACHMENT10 ,=0x8CEA) 599 | X(GL_COLOR_ATTACHMENT11 ,=0x8CEB) 600 | X(GL_COLOR_ATTACHMENT12 ,=0x8CEC) 601 | X(GL_COLOR_ATTACHMENT13 ,=0x8CED) 602 | X(GL_COLOR_ATTACHMENT14 ,=0x8CEE) 603 | X(GL_COLOR_ATTACHMENT15 ,=0x8CEF) 604 | X(GL_COLOR_ATTACHMENT16 ,=0x8CF0) 605 | X(GL_COLOR_ATTACHMENT17 ,=0x8CF1) 606 | X(GL_COLOR_ATTACHMENT18 ,=0x8CF2) 607 | X(GL_COLOR_ATTACHMENT19 ,=0x8CF3) 608 | X(GL_COLOR_ATTACHMENT20 ,=0x8CF4) 609 | X(GL_COLOR_ATTACHMENT21 ,=0x8CF5) 610 | X(GL_COLOR_ATTACHMENT22 ,=0x8CF6) 611 | X(GL_COLOR_ATTACHMENT23 ,=0x8CF7) 612 | X(GL_COLOR_ATTACHMENT24 ,=0x8CF8) 613 | X(GL_COLOR_ATTACHMENT25 ,=0x8CF9) 614 | X(GL_COLOR_ATTACHMENT26 ,=0x8CFA) 615 | X(GL_COLOR_ATTACHMENT27 ,=0x8CFB) 616 | X(GL_COLOR_ATTACHMENT28 ,=0x8CFC) 617 | X(GL_COLOR_ATTACHMENT29 ,=0x8CFD) 618 | X(GL_COLOR_ATTACHMENT30 ,=0x8CFE) 619 | X(GL_COLOR_ATTACHMENT31 ,=0x8CFF) 620 | X(GL_DEPTH_ATTACHMENT ,=0x8D00) 621 | X(GL_STENCIL_ATTACHMENT ,=0x8D20) 622 | X(GL_FRAMEBUFFER ,=0x8D40) 623 | X(GL_RENDERBUFFER ,=0x8D41) 624 | X(GL_RENDERBUFFER_WIDTH ,=0x8D42) 625 | X(GL_RENDERBUFFER_HEIGHT ,=0x8D43) 626 | X(GL_RENDERBUFFER_INTERNAL_FORMAT ,=0x8D44) 627 | X(GL_STENCIL_INDEX1 ,=0x8D46) 628 | X(GL_STENCIL_INDEX4 ,=0x8D47) 629 | X(GL_STENCIL_INDEX8 ,=0x8D48) 630 | X(GL_STENCIL_INDEX16 ,=0x8D49) 631 | X(GL_RENDERBUFFER_RED_SIZE ,=0x8D50) 632 | X(GL_RENDERBUFFER_GREEN_SIZE ,=0x8D51) 633 | X(GL_RENDERBUFFER_BLUE_SIZE ,=0x8D52) 634 | X(GL_RENDERBUFFER_ALPHA_SIZE ,=0x8D53) 635 | X(GL_RENDERBUFFER_DEPTH_SIZE ,=0x8D54) 636 | X(GL_RENDERBUFFER_STENCIL_SIZE ,=0x8D55) 637 | X(GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE,=0x8D56) 638 | X(GL_MAX_SAMPLES ,=0x8D57) 639 | X(GL_FRAMEBUFFER_SRGB ,=0x8DB9) 640 | X(GL_HALF_FLOAT ,=0x140B) 641 | X(GL_MAP_READ_BIT ,=0x0001) 642 | X(GL_MAP_WRITE_BIT ,=0x0002) 643 | X(GL_MAP_INVALIDATE_RANGE_BIT ,=0x0004) 644 | X(GL_MAP_INVALIDATE_BUFFER_BIT ,=0x0008) 645 | X(GL_MAP_FLUSH_EXPLICIT_BIT ,=0x0010) 646 | X(GL_MAP_UNSYNCHRONIZED_BIT ,=0x0020) 647 | X(GL_COMPRESSED_RED_RGTC1 ,=0x8DBB) 648 | X(GL_COMPRESSED_SIGNED_RED_RGTC1 ,=0x8DBC) 649 | X(GL_COMPRESSED_RG_RGTC2 ,=0x8DBD) 650 | X(GL_COMPRESSED_SIGNED_RG_RGTC2 ,=0x8DBE) 651 | X(GL_RG ,=0x8227) 652 | X(GL_RG_INTEGER ,=0x8228) 653 | X(GL_R8 ,=0x8229) 654 | X(GL_R16 ,=0x822A) 655 | X(GL_RG8 ,=0x822B) 656 | X(GL_RG16 ,=0x822C) 657 | X(GL_R16F ,=0x822D) 658 | X(GL_R32F ,=0x822E) 659 | X(GL_RG16F ,=0x822F) 660 | X(GL_RG32F ,=0x8230) 661 | X(GL_R8I ,=0x8231) 662 | X(GL_R8UI ,=0x8232) 663 | X(GL_R16I ,=0x8233) 664 | X(GL_R16UI ,=0x8234) 665 | X(GL_R32I ,=0x8235) 666 | X(GL_R32UI ,=0x8236) 667 | X(GL_RG8I ,=0x8237) 668 | X(GL_RG8UI ,=0x8238) 669 | X(GL_RG16I ,=0x8239) 670 | X(GL_RG16UI ,=0x823A) 671 | X(GL_RG32I ,=0x823B) 672 | X(GL_RG32UI ,=0x823C) 673 | X(GL_VERTEX_ARRAY_BINDING ,=0x85B5) 674 | X(GL_SAMPLER_2D_RECT ,=0x8B63) 675 | X(GL_SAMPLER_2D_RECT_SHADOW ,=0x8B64) 676 | X(GL_SAMPLER_BUFFER ,=0x8DC2) 677 | X(GL_INT_SAMPLER_2D_RECT ,=0x8DCD) 678 | X(GL_INT_SAMPLER_BUFFER ,=0x8DD0) 679 | X(GL_UNSIGNED_INT_SAMPLER_2D_RECT ,=0x8DD5) 680 | X(GL_UNSIGNED_INT_SAMPLER_BUFFER ,=0x8DD8) 681 | X(GL_TEXTURE_BUFFER ,=0x8C2A) 682 | X(GL_MAX_TEXTURE_BUFFER_SIZE ,=0x8C2B) 683 | X(GL_TEXTURE_BINDING_BUFFER ,=0x8C2C) 684 | X(GL_TEXTURE_BUFFER_DATA_STORE_BINDING,=0x8C2D) 685 | X(GL_TEXTURE_RECTANGLE ,=0x84F5) 686 | X(GL_TEXTURE_BINDING_RECTANGLE ,=0x84F6) 687 | X(GL_PROXY_TEXTURE_RECTANGLE ,=0x84F7) 688 | X(GL_MAX_RECTANGLE_TEXTURE_SIZE ,=0x84F8) 689 | X(GL_R8_SNORM ,=0x8F94) 690 | X(GL_RG8_SNORM ,=0x8F95) 691 | X(GL_RGB8_SNORM ,=0x8F96) 692 | X(GL_RGBA8_SNORM ,=0x8F97) 693 | X(GL_R16_SNORM ,=0x8F98) 694 | X(GL_RG16_SNORM ,=0x8F99) 695 | X(GL_RGB16_SNORM ,=0x8F9A) 696 | X(GL_RGBA16_SNORM ,=0x8F9B) 697 | X(GL_SIGNED_NORMALIZED ,=0x8F9C) 698 | X(GL_PRIMITIVE_RESTART ,=0x8F9D) 699 | X(GL_PRIMITIVE_RESTART_INDEX ,=0x8F9E) 700 | X(GL_COPY_READ_BUFFER ,=0x8F36) 701 | X(GL_COPY_WRITE_BUFFER ,=0x8F37) 702 | X(GL_UNIFORM_BUFFER ,=0x8A11) 703 | X(GL_UNIFORM_BUFFER_BINDING ,=0x8A28) 704 | X(GL_UNIFORM_BUFFER_START ,=0x8A29) 705 | X(GL_UNIFORM_BUFFER_SIZE ,=0x8A2A) 706 | X(GL_MAX_VERTEX_UNIFORM_BLOCKS ,=0x8A2B) 707 | X(GL_MAX_GEOMETRY_UNIFORM_BLOCKS ,=0x8A2C) 708 | X(GL_MAX_FRAGMENT_UNIFORM_BLOCKS ,=0x8A2D) 709 | X(GL_MAX_COMBINED_UNIFORM_BLOCKS ,=0x8A2E) 710 | X(GL_MAX_UNIFORM_BUFFER_BINDINGS ,=0x8A2F) 711 | X(GL_MAX_UNIFORM_BLOCK_SIZE ,=0x8A30) 712 | X(GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS,=0x8A31) 713 | X(GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS,=0x8A32) 714 | X(GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,=0x8A33) 715 | X(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT,=0x8A34) 716 | X(GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH,=0x8A35) 717 | X(GL_ACTIVE_UNIFORM_BLOCKS ,=0x8A36) 718 | X(GL_UNIFORM_TYPE ,=0x8A37) 719 | X(GL_UNIFORM_SIZE ,=0x8A38) 720 | X(GL_UNIFORM_NAME_LENGTH ,=0x8A39) 721 | X(GL_UNIFORM_BLOCK_INDEX ,=0x8A3A) 722 | X(GL_UNIFORM_OFFSET ,=0x8A3B) 723 | X(GL_UNIFORM_ARRAY_STRIDE ,=0x8A3C) 724 | X(GL_UNIFORM_MATRIX_STRIDE ,=0x8A3D) 725 | X(GL_UNIFORM_IS_ROW_MAJOR ,=0x8A3E) 726 | X(GL_UNIFORM_BLOCK_BINDING ,=0x8A3F) 727 | X(GL_UNIFORM_BLOCK_DATA_SIZE ,=0x8A40) 728 | X(GL_UNIFORM_BLOCK_NAME_LENGTH ,=0x8A41) 729 | X(GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS ,=0x8A42) 730 | X(GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES,=0x8A43) 731 | X(GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER,=0x8A44) 732 | X(GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER,=0x8A45) 733 | X(GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER,=0x8A46) 734 | X(GL_INVALID_INDEX ,=0xFFFFFFFFu) 735 | X(GL_CONTEXT_CORE_PROFILE_BIT ,=0x00000001) 736 | X(GL_CONTEXT_COMPATIBILITY_PROFILE_BIT,=0x00000002) 737 | X(GL_LINES_ADJACENCY ,=0x000A) 738 | X(GL_LINE_STRIP_ADJACENCY ,=0x000B) 739 | X(GL_TRIANGLES_ADJACENCY ,=0x000C) 740 | X(GL_TRIANGLE_STRIP_ADJACENCY ,=0x000D) 741 | X(GL_PROGRAM_POINT_SIZE ,=0x8642) 742 | X(GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS,=0x8C29) 743 | X(GL_FRAMEBUFFER_ATTACHMENT_LAYERED,=0x8DA7) 744 | X(GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS,=0x8DA8) 745 | X(GL_GEOMETRY_SHADER ,=0x8DD9) 746 | X(GL_GEOMETRY_VERTICES_OUT ,=0x8916) 747 | X(GL_GEOMETRY_INPUT_TYPE ,=0x8917) 748 | X(GL_GEOMETRY_OUTPUT_TYPE ,=0x8918) 749 | X(GL_MAX_GEOMETRY_UNIFORM_COMPONENTS,=0x8DDF) 750 | X(GL_MAX_GEOMETRY_OUTPUT_VERTICES ,=0x8DE0) 751 | X(GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS,=0x8DE1) 752 | X(GL_MAX_VERTEX_OUTPUT_COMPONENTS ,=0x9122) 753 | X(GL_MAX_GEOMETRY_INPUT_COMPONENTS ,=0x9123) 754 | X(GL_MAX_GEOMETRY_OUTPUT_COMPONENTS,=0x9124) 755 | X(GL_MAX_FRAGMENT_INPUT_COMPONENTS ,=0x9125) 756 | X(GL_CONTEXT_PROFILE_MASK ,=0x9126) 757 | X(GL_DEPTH_CLAMP ,=0x864F) 758 | X(GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION,=0x8E4C) 759 | X(GL_FIRST_VERTEX_CONVENTION ,=0x8E4D) 760 | X(GL_LAST_VERTEX_CONVENTION ,=0x8E4E) 761 | X(GL_PROVOKING_VERTEX ,=0x8E4F) 762 | X(GL_TEXTURE_CUBE_MAP_SEAMLESS ,=0x884F) 763 | X(GL_MAX_SERVER_WAIT_TIMEOUT ,=0x9111) 764 | X(GL_OBJECT_TYPE ,=0x9112) 765 | X(GL_SYNC_CONDITION ,=0x9113) 766 | X(GL_SYNC_STATUS ,=0x9114) 767 | X(GL_SYNC_FLAGS ,=0x9115) 768 | X(GL_SYNC_FENCE ,=0x9116) 769 | X(GL_SYNC_GPU_COMMANDS_COMPLETE ,=0x9117) 770 | X(GL_UNSIGNALED ,=0x9118) 771 | X(GL_SIGNALED ,=0x9119) 772 | X(GL_ALREADY_SIGNALED ,=0x911A) 773 | X(GL_TIMEOUT_EXPIRED ,=0x911B) 774 | X(GL_CONDITION_SATISFIED ,=0x911C) 775 | X(GL_WAIT_FAILED ,=0x911D) 776 | X(GL_TIMEOUT_IGNORED ,=0xFFFFFFFFFFFFFFFFull) 777 | X(GL_SYNC_FLUSH_COMMANDS_BIT ,=0x00000001) 778 | X(GL_SAMPLE_POSITION ,=0x8E50) 779 | X(GL_SAMPLE_MASK ,=0x8E51) 780 | X(GL_SAMPLE_MASK_VALUE ,=0x8E52) 781 | X(GL_MAX_SAMPLE_MASK_WORDS ,=0x8E59) 782 | X(GL_TEXTURE_2D_MULTISAMPLE ,=0x9100) 783 | X(GL_PROXY_TEXTURE_2D_MULTISAMPLE ,=0x9101) 784 | X(GL_TEXTURE_2D_MULTISAMPLE_ARRAY ,=0x9102) 785 | X(GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY,=0x9103) 786 | X(GL_TEXTURE_BINDING_2D_MULTISAMPLE,=0x9104) 787 | X(GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY,=0x9105) 788 | X(GL_TEXTURE_SAMPLES ,=0x9106) 789 | X(GL_TEXTURE_FIXED_SAMPLE_LOCATIONS,=0x9107) 790 | X(GL_SAMPLER_2D_MULTISAMPLE ,=0x9108) 791 | X(GL_INT_SAMPLER_2D_MULTISAMPLE ,=0x9109) 792 | X(GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE,=0x910A) 793 | X(GL_SAMPLER_2D_MULTISAMPLE_ARRAY ,=0x910B) 794 | X(GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY,=0x910C) 795 | X(GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY,=0x910D) 796 | X(GL_MAX_COLOR_TEXTURE_SAMPLES ,=0x910E) 797 | X(GL_MAX_DEPTH_TEXTURE_SAMPLES ,=0x910F) 798 | X(GL_MAX_INTEGER_SAMPLES ,=0x9110) 799 | X(GL_VERTEX_ATTRIB_ARRAY_DIVISOR ,=0x88FE) 800 | X(GL_SRC1_COLOR ,=0x88F9) 801 | X(GL_ONE_MINUS_SRC1_COLOR ,=0x88FA) 802 | X(GL_ONE_MINUS_SRC1_ALPHA ,=0x88FB) 803 | X(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS ,=0x88FC) 804 | X(GL_ANY_SAMPLES_PASSED ,=0x8C2F) 805 | X(GL_SAMPLER_BINDING ,=0x8919) 806 | X(GL_RGB10_A2UI ,=0x906F) 807 | X(GL_TEXTURE_SWIZZLE_R ,=0x8E42) 808 | X(GL_TEXTURE_SWIZZLE_G ,=0x8E43) 809 | X(GL_TEXTURE_SWIZZLE_B ,=0x8E44) 810 | X(GL_TEXTURE_SWIZZLE_A ,=0x8E45) 811 | X(GL_TEXTURE_SWIZZLE_RGBA ,=0x8E46) 812 | X(GL_TIME_ELAPSED ,=0x88BF) 813 | X(GL_TIMESTAMP ,=0x8E28) 814 | X(GL_INT_2_10_10_10_REV ,=0x8D9F) 815 | X(GL_SAMPLE_SHADING ,=0x8C36) 816 | X(GL_MIN_SAMPLE_SHADING_VALUE ,=0x8C37) 817 | X(GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET,=0x8E5E) 818 | X(GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET,=0x8E5F) 819 | X(GL_TEXTURE_CUBE_MAP_ARRAY ,=0x9009) 820 | X(GL_TEXTURE_BINDING_CUBE_MAP_ARRAY,=0x900A) 821 | X(GL_PROXY_TEXTURE_CUBE_MAP_ARRAY ,=0x900B) 822 | X(GL_SAMPLER_CUBE_MAP_ARRAY ,=0x900C) 823 | X(GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW ,=0x900D) 824 | X(GL_INT_SAMPLER_CUBE_MAP_ARRAY ,=0x900E) 825 | X(GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY,=0x900F) 826 | X(GL_DRAW_INDIRECT_BUFFER ,=0x8F3F) 827 | X(GL_DRAW_INDIRECT_BUFFER_BINDING ,=0x8F43) 828 | X(GL_GEOMETRY_SHADER_INVOCATIONS ,=0x887F) 829 | X(GL_MAX_GEOMETRY_SHADER_INVOCATIONS,=0x8E5A) 830 | X(GL_MIN_FRAGMENT_INTERPOLATION_OFFSET,=0x8E5B) 831 | X(GL_MAX_FRAGMENT_INTERPOLATION_OFFSET,=0x8E5C) 832 | X(GL_FRAGMENT_INTERPOLATION_OFFSET_BITS,=0x8E5D) 833 | X(GL_MAX_VERTEX_STREAMS ,=0x8E71) 834 | X(GL_DOUBLE_VEC2 ,=0x8FFC) 835 | X(GL_DOUBLE_VEC3 ,=0x8FFD) 836 | X(GL_DOUBLE_VEC4 ,=0x8FFE) 837 | X(GL_DOUBLE_MAT2 ,=0x8F46) 838 | X(GL_DOUBLE_MAT3 ,=0x8F47) 839 | X(GL_DOUBLE_MAT4 ,=0x8F48) 840 | X(GL_DOUBLE_MAT2x3 ,=0x8F49) 841 | X(GL_DOUBLE_MAT2x4 ,=0x8F4A) 842 | X(GL_DOUBLE_MAT3x2 ,=0x8F4B) 843 | X(GL_DOUBLE_MAT3x4 ,=0x8F4C) 844 | X(GL_DOUBLE_MAT4x2 ,=0x8F4D) 845 | X(GL_DOUBLE_MAT4x3 ,=0x8F4E) 846 | X(GL_ACTIVE_SUBROUTINES ,=0x8DE5) 847 | X(GL_ACTIVE_SUBROUTINE_UNIFORMS ,=0x8DE6) 848 | X(GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS,=0x8E47) 849 | X(GL_ACTIVE_SUBROUTINE_MAX_LENGTH ,=0x8E48) 850 | X(GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH,=0x8E49) 851 | X(GL_MAX_SUBROUTINES ,=0x8DE7) 852 | X(GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS,=0x8DE8) 853 | X(GL_NUM_COMPATIBLE_SUBROUTINES ,=0x8E4A) 854 | X(GL_COMPATIBLE_SUBROUTINES ,=0x8E4B) 855 | X(GL_PATCHES ,=0x000E) 856 | X(GL_PATCH_VERTICES ,=0x8E72) 857 | X(GL_PATCH_DEFAULT_INNER_LEVEL ,=0x8E73) 858 | X(GL_PATCH_DEFAULT_OUTER_LEVEL ,=0x8E74) 859 | X(GL_TESS_CONTROL_OUTPUT_VERTICES ,=0x8E75) 860 | X(GL_TESS_GEN_MODE ,=0x8E76) 861 | X(GL_TESS_GEN_SPACING ,=0x8E77) 862 | X(GL_TESS_GEN_VERTEX_ORDER ,=0x8E78) 863 | X(GL_TESS_GEN_POINT_MODE ,=0x8E79) 864 | X(GL_ISOLINES ,=0x8E7A) 865 | X(GL_FRACTIONAL_ODD ,=0x8E7B) 866 | X(GL_FRACTIONAL_EVEN ,=0x8E7C) 867 | X(GL_MAX_PATCH_VERTICES ,=0x8E7D) 868 | X(GL_MAX_TESS_GEN_LEVEL ,=0x8E7E) 869 | X(GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS,=0x8E7F) 870 | X(GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS,=0x8E80) 871 | X(GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS,=0x8E81) 872 | X(GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS,=0x8E82) 873 | X(GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS,=0x8E83) 874 | X(GL_MAX_TESS_PATCH_COMPONENTS ,=0x8E84) 875 | X(GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS,=0x8E85) 876 | X(GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS,=0x8E86) 877 | X(GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS,=0x8E89) 878 | X(GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS,=0x8E8A) 879 | X(GL_MAX_TESS_CONTROL_INPUT_COMPONENTS,=0x886C) 880 | X(GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS,=0x886D) 881 | X(GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS,=0x8E1E) 882 | X(GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS,=0x8E1F) 883 | X(GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER,=0x84F0) 884 | X(GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER,=0x84F1) 885 | X(GL_TESS_EVALUATION_SHADER ,=0x8E87) 886 | X(GL_TESS_CONTROL_SHADER ,=0x8E88) 887 | X(GL_TRANSFORM_FEEDBACK ,=0x8E22) 888 | X(GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED,=0x8E23) 889 | X(GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE,=0x8E24) 890 | X(GL_TRANSFORM_FEEDBACK_BINDING ,=0x8E25) 891 | X(GL_MAX_TRANSFORM_FEEDBACK_BUFFERS,=0x8E70) 892 | X(GL_FIXED ,=0x140C) 893 | X(GL_IMPLEMENTATION_COLOR_READ_TYPE,=0x8B9A) 894 | X(GL_IMPLEMENTATION_COLOR_READ_FORMAT,=0x8B9B) 895 | X(GL_LOW_FLOAT ,=0x8DF0) 896 | X(GL_MEDIUM_FLOAT ,=0x8DF1) 897 | X(GL_HIGH_FLOAT ,=0x8DF2) 898 | X(GL_LOW_INT ,=0x8DF3) 899 | X(GL_MEDIUM_INT ,=0x8DF4) 900 | X(GL_HIGH_INT ,=0x8DF5) 901 | X(GL_SHADER_COMPILER ,=0x8DFA) 902 | X(GL_SHADER_BINARY_FORMATS ,=0x8DF8) 903 | X(GL_NUM_SHADER_BINARY_FORMATS ,=0x8DF9) 904 | X(GL_MAX_VERTEX_UNIFORM_VECTORS ,=0x8DFB) 905 | X(GL_MAX_VARYING_VECTORS ,=0x8DFC) 906 | X(GL_MAX_FRAGMENT_UNIFORM_VECTORS ,=0x8DFD) 907 | X(GL_RGB565 ,=0x8D62) 908 | X(GL_PROGRAM_BINARY_RETRIEVABLE_HINT,=0x8257) 909 | X(GL_PROGRAM_BINARY_LENGTH ,=0x8741) 910 | X(GL_NUM_PROGRAM_BINARY_FORMATS ,=0x87FE) 911 | X(GL_PROGRAM_BINARY_FORMATS ,=0x87FF) 912 | X(GL_VERTEX_SHADER_BIT ,=0x00000001) 913 | X(GL_FRAGMENT_SHADER_BIT ,=0x00000002) 914 | X(GL_GEOMETRY_SHADER_BIT ,=0x00000004) 915 | X(GL_TESS_CONTROL_SHADER_BIT ,=0x00000008) 916 | X(GL_TESS_EVALUATION_SHADER_BIT ,=0x00000010) 917 | X(GL_ALL_SHADER_BITS ,=0xFFFFFFFF) 918 | X(GL_PROGRAM_SEPARABLE ,=0x8258) 919 | X(GL_ACTIVE_PROGRAM ,=0x8259) 920 | X(GL_PROGRAM_PIPELINE_BINDING ,=0x825A) 921 | X(GL_MAX_VIEWPORTS ,=0x825B) 922 | X(GL_VIEWPORT_SUBPIXEL_BITS ,=0x825C) 923 | X(GL_VIEWPORT_BOUNDS_RANGE ,=0x825D) 924 | X(GL_LAYER_PROVOKING_VERTEX ,=0x825E) 925 | X(GL_VIEWPORT_INDEX_PROVOKING_VERTEX,=0x825F) 926 | X(GL_UNDEFINED_VERTEX ,=0x8260) 927 | X(GL_COPY_READ_BUFFER_BINDING ,=0x8F36) 928 | X(GL_COPY_WRITE_BUFFER_BINDING ,=0x8F37) 929 | X(GL_TRANSFORM_FEEDBACK_ACTIVE ,=0x8E24) 930 | X(GL_TRANSFORM_FEEDBACK_PAUSED ,=0x8E23) 931 | X(GL_UNPACK_COMPRESSED_BLOCK_WIDTH ,=0x9127) 932 | X(GL_UNPACK_COMPRESSED_BLOCK_HEIGHT,=0x9128) 933 | X(GL_UNPACK_COMPRESSED_BLOCK_DEPTH ,=0x9129) 934 | X(GL_UNPACK_COMPRESSED_BLOCK_SIZE ,=0x912A) 935 | X(GL_PACK_COMPRESSED_BLOCK_WIDTH ,=0x912B) 936 | X(GL_PACK_COMPRESSED_BLOCK_HEIGHT ,=0x912C) 937 | X(GL_PACK_COMPRESSED_BLOCK_DEPTH ,=0x912D) 938 | X(GL_PACK_COMPRESSED_BLOCK_SIZE ,=0x912E) 939 | X(GL_NUM_SAMPLE_COUNTS ,=0x9380) 940 | X(GL_MIN_MAP_BUFFER_ALIGNMENT ,=0x90BC) 941 | X(GL_ATOMIC_COUNTER_BUFFER ,=0x92C0) 942 | X(GL_ATOMIC_COUNTER_BUFFER_BINDING ,=0x92C1) 943 | X(GL_ATOMIC_COUNTER_BUFFER_START ,=0x92C2) 944 | X(GL_ATOMIC_COUNTER_BUFFER_SIZE ,=0x92C3) 945 | X(GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE,=0x92C4) 946 | X(GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS,=0x92C5) 947 | X(GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES,=0x92C6) 948 | X(GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER,=0x92C7) 949 | X(GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER,=0x92C8) 950 | X(GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER,=0x92C9) 951 | X(GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER,=0x92CA) 952 | X(GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER,=0x92CB) 953 | X(GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS,=0x92CC) 954 | X(GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS,=0x92CD) 955 | X(GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS,=0x92CE) 956 | X(GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS,=0x92CF) 957 | X(GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS,=0x92D0) 958 | X(GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS,=0x92D1) 959 | X(GL_MAX_VERTEX_ATOMIC_COUNTERS ,=0x92D2) 960 | X(GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS,=0x92D3) 961 | X(GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS,=0x92D4) 962 | X(GL_MAX_GEOMETRY_ATOMIC_COUNTERS ,=0x92D5) 963 | X(GL_MAX_FRAGMENT_ATOMIC_COUNTERS ,=0x92D6) 964 | X(GL_MAX_COMBINED_ATOMIC_COUNTERS ,=0x92D7) 965 | X(GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE,=0x92D8) 966 | X(GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS,=0x92DC) 967 | X(GL_ACTIVE_ATOMIC_COUNTER_BUFFERS ,=0x92D9) 968 | X(GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX,=0x92DA) 969 | X(GL_UNSIGNED_INT_ATOMIC_COUNTER ,=0x92DB) 970 | X(GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT,=0x00000001) 971 | X(GL_ELEMENT_ARRAY_BARRIER_BIT ,=0x00000002) 972 | X(GL_UNIFORM_BARRIER_BIT ,=0x00000004) 973 | X(GL_TEXTURE_FETCH_BARRIER_BIT ,=0x00000008) 974 | X(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT,=0x00000020) 975 | X(GL_COMMAND_BARRIER_BIT ,=0x00000040) 976 | X(GL_PIXEL_BUFFER_BARRIER_BIT ,=0x00000080) 977 | X(GL_TEXTURE_UPDATE_BARRIER_BIT ,=0x00000100) 978 | X(GL_BUFFER_UPDATE_BARRIER_BIT ,=0x00000200) 979 | X(GL_FRAMEBUFFER_BARRIER_BIT ,=0x00000400) 980 | X(GL_TRANSFORM_FEEDBACK_BARRIER_BIT,=0x00000800) 981 | X(GL_ATOMIC_COUNTER_BARRIER_BIT ,=0x00001000) 982 | X(GL_ALL_BARRIER_BITS ,=0xFFFFFFFF) 983 | X(GL_MAX_IMAGE_UNITS ,=0x8F38) 984 | X(GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS,=0x8F39) 985 | X(GL_IMAGE_BINDING_NAME ,=0x8F3A) 986 | X(GL_IMAGE_BINDING_LEVEL ,=0x8F3B) 987 | X(GL_IMAGE_BINDING_LAYERED ,=0x8F3C) 988 | X(GL_IMAGE_BINDING_LAYER ,=0x8F3D) 989 | X(GL_IMAGE_BINDING_ACCESS ,=0x8F3E) 990 | X(GL_IMAGE_1D ,=0x904C) 991 | X(GL_IMAGE_2D ,=0x904D) 992 | X(GL_IMAGE_3D ,=0x904E) 993 | X(GL_IMAGE_2D_RECT ,=0x904F) 994 | X(GL_IMAGE_CUBE ,=0x9050) 995 | X(GL_IMAGE_BUFFER ,=0x9051) 996 | X(GL_IMAGE_1D_ARRAY ,=0x9052) 997 | X(GL_IMAGE_2D_ARRAY ,=0x9053) 998 | X(GL_IMAGE_CUBE_MAP_ARRAY ,=0x9054) 999 | X(GL_IMAGE_2D_MULTISAMPLE ,=0x9055) 1000 | X(GL_IMAGE_2D_MULTISAMPLE_ARRAY ,=0x9056) 1001 | X(GL_INT_IMAGE_1D ,=0x9057) 1002 | X(GL_INT_IMAGE_2D ,=0x9058) 1003 | X(GL_INT_IMAGE_3D ,=0x9059) 1004 | X(GL_INT_IMAGE_2D_RECT ,=0x905A) 1005 | X(GL_INT_IMAGE_CUBE ,=0x905B) 1006 | X(GL_INT_IMAGE_BUFFER ,=0x905C) 1007 | X(GL_INT_IMAGE_1D_ARRAY ,=0x905D) 1008 | X(GL_INT_IMAGE_2D_ARRAY ,=0x905E) 1009 | X(GL_INT_IMAGE_CUBE_MAP_ARRAY ,=0x905F) 1010 | X(GL_INT_IMAGE_2D_MULTISAMPLE ,=0x9060) 1011 | X(GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY,=0x9061) 1012 | X(GL_UNSIGNED_INT_IMAGE_1D ,=0x9062) 1013 | X(GL_UNSIGNED_INT_IMAGE_2D ,=0x9063) 1014 | X(GL_UNSIGNED_INT_IMAGE_3D ,=0x9064) 1015 | X(GL_UNSIGNED_INT_IMAGE_2D_RECT ,=0x9065) 1016 | X(GL_UNSIGNED_INT_IMAGE_CUBE ,=0x9066) 1017 | X(GL_UNSIGNED_INT_IMAGE_BUFFER ,=0x9067) 1018 | X(GL_UNSIGNED_INT_IMAGE_1D_ARRAY ,=0x9068) 1019 | X(GL_UNSIGNED_INT_IMAGE_2D_ARRAY ,=0x9069) 1020 | X(GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY,=0x906A) 1021 | X(GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE,=0x906B) 1022 | X(GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY,=0x906C) 1023 | X(GL_MAX_IMAGE_SAMPLES ,=0x906D) 1024 | X(GL_IMAGE_BINDING_FORMAT ,=0x906E) 1025 | X(GL_IMAGE_FORMAT_COMPATIBILITY_TYPE,=0x90C7) 1026 | X(GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE,=0x90C8) 1027 | X(GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS,=0x90C9) 1028 | X(GL_MAX_VERTEX_IMAGE_UNIFORMS ,=0x90CA) 1029 | X(GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS,=0x90CB) 1030 | X(GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS,=0x90CC) 1031 | X(GL_MAX_GEOMETRY_IMAGE_UNIFORMS ,=0x90CD) 1032 | X(GL_MAX_FRAGMENT_IMAGE_UNIFORMS ,=0x90CE) 1033 | X(GL_MAX_COMBINED_IMAGE_UNIFORMS ,=0x90CF) 1034 | X(GL_COMPRESSED_RGBA_BPTC_UNORM ,=0x8E8C) 1035 | X(GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM,=0x8E8D) 1036 | X(GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT,=0x8E8E) 1037 | X(GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT,=0x8E8F) 1038 | X(GL_TEXTURE_IMMUTABLE_FORMAT ,=0x912F) 1039 | X(GL_NUM_SHADING_LANGUAGE_VERSIONS ,=0x82E9) 1040 | X(GL_VERTEX_ATTRIB_ARRAY_LONG ,=0x874E) 1041 | X(GL_COMPRESSED_RGB8_ETC2 ,=0x9274) 1042 | X(GL_COMPRESSED_SRGB8_ETC2 ,=0x9275) 1043 | X(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,=0x9276) 1044 | X(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,=0x9277) 1045 | X(GL_COMPRESSED_RGBA8_ETC2_EAC ,=0x9278) 1046 | X(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,=0x9279) 1047 | X(GL_COMPRESSED_R11_EAC ,=0x9270) 1048 | X(GL_COMPRESSED_SIGNED_R11_EAC ,=0x9271) 1049 | X(GL_COMPRESSED_RG11_EAC ,=0x9272) 1050 | X(GL_COMPRESSED_SIGNED_RG11_EAC ,=0x9273) 1051 | X(GL_PRIMITIVE_RESTART_FIXED_INDEX ,=0x8D69) 1052 | X(GL_ANY_SAMPLES_PASSED_CONSERVATIVE,=0x8D6A) 1053 | X(GL_MAX_ELEMENT_INDEX ,=0x8D6B) 1054 | X(GL_COMPUTE_SHADER ,=0x91B9) 1055 | X(GL_MAX_COMPUTE_UNIFORM_BLOCKS ,=0x91BB) 1056 | X(GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS,=0x91BC) 1057 | X(GL_MAX_COMPUTE_IMAGE_UNIFORMS ,=0x91BD) 1058 | X(GL_MAX_COMPUTE_SHARED_MEMORY_SIZE,=0x8262) 1059 | X(GL_MAX_COMPUTE_UNIFORM_COMPONENTS,=0x8263) 1060 | X(GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS,=0x8264) 1061 | X(GL_MAX_COMPUTE_ATOMIC_COUNTERS ,=0x8265) 1062 | X(GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS,=0x8266) 1063 | X(GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS,=0x90EB) 1064 | X(GL_MAX_COMPUTE_WORK_GROUP_COUNT ,=0x91BE) 1065 | X(GL_MAX_COMPUTE_WORK_GROUP_SIZE ,=0x91BF) 1066 | X(GL_COMPUTE_WORK_GROUP_SIZE ,=0x8267) 1067 | X(GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER,=0x90EC) 1068 | X(GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER,=0x90ED) 1069 | X(GL_DISPATCH_INDIRECT_BUFFER ,=0x90EE) 1070 | X(GL_DISPATCH_INDIRECT_BUFFER_BINDING,=0x90EF) 1071 | X(GL_COMPUTE_SHADER_BIT ,=0x00000020) 1072 | X(GL_DEBUG_OUTPUT_SYNCHRONOUS ,=0x8242) 1073 | X(GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH,=0x8243) 1074 | X(GL_DEBUG_CALLBACK_FUNCTION ,=0x8244) 1075 | X(GL_DEBUG_CALLBACK_USER_PARAM ,=0x8245) 1076 | X(GL_DEBUG_SOURCE_API ,=0x8246) 1077 | X(GL_DEBUG_SOURCE_WINDOW_SYSTEM ,=0x8247) 1078 | X(GL_DEBUG_SOURCE_SHADER_COMPILER ,=0x8248) 1079 | X(GL_DEBUG_SOURCE_THIRD_PARTY ,=0x8249) 1080 | X(GL_DEBUG_SOURCE_APPLICATION ,=0x824A) 1081 | X(GL_DEBUG_SOURCE_OTHER ,=0x824B) 1082 | X(GL_DEBUG_TYPE_ERROR ,=0x824C) 1083 | X(GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR,=0x824D) 1084 | X(GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR ,=0x824E) 1085 | X(GL_DEBUG_TYPE_PORTABILITY ,=0x824F) 1086 | X(GL_DEBUG_TYPE_PERFORMANCE ,=0x8250) 1087 | X(GL_DEBUG_TYPE_OTHER ,=0x8251) 1088 | X(GL_MAX_DEBUG_MESSAGE_LENGTH ,=0x9143) 1089 | X(GL_MAX_DEBUG_LOGGED_MESSAGES ,=0x9144) 1090 | X(GL_DEBUG_LOGGED_MESSAGES ,=0x9145) 1091 | X(GL_DEBUG_SEVERITY_HIGH ,=0x9146) 1092 | X(GL_DEBUG_SEVERITY_MEDIUM ,=0x9147) 1093 | X(GL_DEBUG_SEVERITY_LOW ,=0x9148) 1094 | X(GL_DEBUG_TYPE_MARKER ,=0x8268) 1095 | X(GL_DEBUG_TYPE_PUSH_GROUP ,=0x8269) 1096 | X(GL_DEBUG_TYPE_POP_GROUP ,=0x826A) 1097 | X(GL_DEBUG_SEVERITY_NOTIFICATION ,=0x826B) 1098 | X(GL_MAX_DEBUG_GROUP_STACK_DEPTH ,=0x826C) 1099 | X(GL_DEBUG_GROUP_STACK_DEPTH ,=0x826D) 1100 | X(GL_BUFFER ,=0x82E0) 1101 | X(GL_SHADER ,=0x82E1) 1102 | X(GL_PROGRAM ,=0x82E2) 1103 | X(GL_QUERY ,=0x82E3) 1104 | X(GL_PROGRAM_PIPELINE ,=0x82E4) 1105 | X(GL_SAMPLER ,=0x82E6) 1106 | X(GL_MAX_LABEL_LENGTH ,=0x82E8) 1107 | X(GL_DEBUG_OUTPUT ,=0x92E0) 1108 | X(GL_CONTEXT_FLAG_DEBUG_BIT ,=0x00000002) 1109 | X(GL_MAX_UNIFORM_LOCATIONS ,=0x826E) 1110 | X(GL_FRAMEBUFFER_DEFAULT_WIDTH ,=0x9310) 1111 | X(GL_FRAMEBUFFER_DEFAULT_HEIGHT ,=0x9311) 1112 | X(GL_FRAMEBUFFER_DEFAULT_LAYERS ,=0x9312) 1113 | X(GL_FRAMEBUFFER_DEFAULT_SAMPLES ,=0x9313) 1114 | X(GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS,=0x9314) 1115 | X(GL_MAX_FRAMEBUFFER_WIDTH ,=0x9315) 1116 | X(GL_MAX_FRAMEBUFFER_HEIGHT ,=0x9316) 1117 | X(GL_MAX_FRAMEBUFFER_LAYERS ,=0x9317) 1118 | X(GL_MAX_FRAMEBUFFER_SAMPLES ,=0x9318) 1119 | X(GL_INTERNALFORMAT_SUPPORTED ,=0x826F) 1120 | X(GL_INTERNALFORMAT_PREFERRED ,=0x8270) 1121 | X(GL_INTERNALFORMAT_RED_SIZE ,=0x8271) 1122 | X(GL_INTERNALFORMAT_GREEN_SIZE ,=0x8272) 1123 | X(GL_INTERNALFORMAT_BLUE_SIZE ,=0x8273) 1124 | X(GL_INTERNALFORMAT_ALPHA_SIZE ,=0x8274) 1125 | X(GL_INTERNALFORMAT_DEPTH_SIZE ,=0x8275) 1126 | X(GL_INTERNALFORMAT_STENCIL_SIZE ,=0x8276) 1127 | X(GL_INTERNALFORMAT_SHARED_SIZE ,=0x8277) 1128 | X(GL_INTERNALFORMAT_RED_TYPE ,=0x8278) 1129 | X(GL_INTERNALFORMAT_GREEN_TYPE ,=0x8279) 1130 | X(GL_INTERNALFORMAT_BLUE_TYPE ,=0x827A) 1131 | X(GL_INTERNALFORMAT_ALPHA_TYPE ,=0x827B) 1132 | X(GL_INTERNALFORMAT_DEPTH_TYPE ,=0x827C) 1133 | X(GL_INTERNALFORMAT_STENCIL_TYPE ,=0x827D) 1134 | X(GL_MAX_WIDTH ,=0x827E) 1135 | X(GL_MAX_HEIGHT ,=0x827F) 1136 | X(GL_MAX_DEPTH ,=0x8280) 1137 | X(GL_MAX_LAYERS ,=0x8281) 1138 | X(GL_MAX_COMBINED_DIMENSIONS ,=0x8282) 1139 | X(GL_COLOR_COMPONENTS ,=0x8283) 1140 | X(GL_DEPTH_COMPONENTS ,=0x8284) 1141 | X(GL_STENCIL_COMPONENTS ,=0x8285) 1142 | X(GL_COLOR_RENDERABLE ,=0x8286) 1143 | X(GL_DEPTH_RENDERABLE ,=0x8287) 1144 | X(GL_STENCIL_RENDERABLE ,=0x8288) 1145 | X(GL_FRAMEBUFFER_RENDERABLE ,=0x8289) 1146 | X(GL_FRAMEBUFFER_RENDERABLE_LAYERED,=0x828A) 1147 | X(GL_FRAMEBUFFER_BLEND ,=0x828B) 1148 | X(GL_READ_PIXELS ,=0x828C) 1149 | X(GL_READ_PIXELS_FORMAT ,=0x828D) 1150 | X(GL_READ_PIXELS_TYPE ,=0x828E) 1151 | X(GL_TEXTURE_IMAGE_FORMAT ,=0x828F) 1152 | X(GL_TEXTURE_IMAGE_TYPE ,=0x8290) 1153 | X(GL_GET_TEXTURE_IMAGE_FORMAT ,=0x8291) 1154 | X(GL_GET_TEXTURE_IMAGE_TYPE ,=0x8292) 1155 | X(GL_MIPMAP ,=0x8293) 1156 | X(GL_MANUAL_GENERATE_MIPMAP ,=0x8294) 1157 | X(GL_AUTO_GENERATE_MIPMAP ,=0x8295) 1158 | X(GL_COLOR_ENCODING ,=0x8296) 1159 | X(GL_SRGB_READ ,=0x8297) 1160 | X(GL_SRGB_WRITE ,=0x8298) 1161 | X(GL_FILTER ,=0x829A) 1162 | X(GL_VERTEX_TEXTURE ,=0x829B) 1163 | X(GL_TESS_CONTROL_TEXTURE ,=0x829C) 1164 | X(GL_TESS_EVALUATION_TEXTURE ,=0x829D) 1165 | X(GL_GEOMETRY_TEXTURE ,=0x829E) 1166 | X(GL_FRAGMENT_TEXTURE ,=0x829F) 1167 | X(GL_COMPUTE_TEXTURE ,=0x82A0) 1168 | X(GL_TEXTURE_SHADOW ,=0x82A1) 1169 | X(GL_TEXTURE_GATHER ,=0x82A2) 1170 | X(GL_TEXTURE_GATHER_SHADOW ,=0x82A3) 1171 | X(GL_SHADER_IMAGE_LOAD ,=0x82A4) 1172 | X(GL_SHADER_IMAGE_STORE ,=0x82A5) 1173 | X(GL_SHADER_IMAGE_ATOMIC ,=0x82A6) 1174 | X(GL_IMAGE_TEXEL_SIZE ,=0x82A7) 1175 | X(GL_IMAGE_COMPATIBILITY_CLASS ,=0x82A8) 1176 | X(GL_IMAGE_PIXEL_FORMAT ,=0x82A9) 1177 | X(GL_IMAGE_PIXEL_TYPE ,=0x82AA) 1178 | X(GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST,=0x82AC) 1179 | X(GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST,=0x82AD) 1180 | X(GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE,=0x82AE) 1181 | X(GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE,=0x82AF) 1182 | X(GL_TEXTURE_COMPRESSED_BLOCK_WIDTH,=0x82B1) 1183 | X(GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT,=0x82B2) 1184 | X(GL_TEXTURE_COMPRESSED_BLOCK_SIZE ,=0x82B3) 1185 | X(GL_CLEAR_BUFFER ,=0x82B4) 1186 | X(GL_TEXTURE_VIEW ,=0x82B5) 1187 | X(GL_VIEW_COMPATIBILITY_CLASS ,=0x82B6) 1188 | X(GL_FULL_SUPPORT ,=0x82B7) 1189 | X(GL_CAVEAT_SUPPORT ,=0x82B8) 1190 | X(GL_IMAGE_CLASS_4_X_32 ,=0x82B9) 1191 | X(GL_IMAGE_CLASS_2_X_32 ,=0x82BA) 1192 | X(GL_IMAGE_CLASS_1_X_32 ,=0x82BB) 1193 | X(GL_IMAGE_CLASS_4_X_16 ,=0x82BC) 1194 | X(GL_IMAGE_CLASS_2_X_16 ,=0x82BD) 1195 | X(GL_IMAGE_CLASS_1_X_16 ,=0x82BE) 1196 | X(GL_IMAGE_CLASS_4_X_8 ,=0x82BF) 1197 | X(GL_IMAGE_CLASS_2_X_8 ,=0x82C0) 1198 | X(GL_IMAGE_CLASS_1_X_8 ,=0x82C1) 1199 | X(GL_IMAGE_CLASS_11_11_10 ,=0x82C2) 1200 | X(GL_IMAGE_CLASS_10_10_10_2 ,=0x82C3) 1201 | X(GL_VIEW_CLASS_128_BITS ,=0x82C4) 1202 | X(GL_VIEW_CLASS_96_BITS ,=0x82C5) 1203 | X(GL_VIEW_CLASS_64_BITS ,=0x82C6) 1204 | X(GL_VIEW_CLASS_48_BITS ,=0x82C7) 1205 | X(GL_VIEW_CLASS_32_BITS ,=0x82C8) 1206 | X(GL_VIEW_CLASS_24_BITS ,=0x82C9) 1207 | X(GL_VIEW_CLASS_16_BITS ,=0x82CA) 1208 | X(GL_VIEW_CLASS_8_BITS ,=0x82CB) 1209 | X(GL_VIEW_CLASS_S3TC_DXT1_RGB ,=0x82CC) 1210 | X(GL_VIEW_CLASS_S3TC_DXT1_RGBA ,=0x82CD) 1211 | X(GL_VIEW_CLASS_S3TC_DXT3_RGBA ,=0x82CE) 1212 | X(GL_VIEW_CLASS_S3TC_DXT5_RGBA ,=0x82CF) 1213 | X(GL_VIEW_CLASS_RGTC1_RED ,=0x82D0) 1214 | X(GL_VIEW_CLASS_RGTC2_RG ,=0x82D1) 1215 | X(GL_VIEW_CLASS_BPTC_UNORM ,=0x82D2) 1216 | X(GL_VIEW_CLASS_BPTC_FLOAT ,=0x82D3) 1217 | X(GL_UNIFORM ,=0x92E1) 1218 | X(GL_UNIFORM_BLOCK ,=0x92E2) 1219 | X(GL_PROGRAM_INPUT ,=0x92E3) 1220 | X(GL_PROGRAM_OUTPUT ,=0x92E4) 1221 | X(GL_BUFFER_VARIABLE ,=0x92E5) 1222 | X(GL_SHADER_STORAGE_BLOCK ,=0x92E6) 1223 | X(GL_VERTEX_SUBROUTINE ,=0x92E8) 1224 | X(GL_TESS_CONTROL_SUBROUTINE ,=0x92E9) 1225 | X(GL_TESS_EVALUATION_SUBROUTINE ,=0x92EA) 1226 | X(GL_GEOMETRY_SUBROUTINE ,=0x92EB) 1227 | X(GL_FRAGMENT_SUBROUTINE ,=0x92EC) 1228 | X(GL_COMPUTE_SUBROUTINE ,=0x92ED) 1229 | X(GL_VERTEX_SUBROUTINE_UNIFORM ,=0x92EE) 1230 | X(GL_TESS_CONTROL_SUBROUTINE_UNIFORM,=0x92EF) 1231 | X(GL_TESS_EVALUATION_SUBROUTINE_UNIFORM,=0x92F0) 1232 | X(GL_GEOMETRY_SUBROUTINE_UNIFORM ,=0x92F1) 1233 | X(GL_FRAGMENT_SUBROUTINE_UNIFORM ,=0x92F2) 1234 | X(GL_COMPUTE_SUBROUTINE_UNIFORM ,=0x92F3) 1235 | X(GL_TRANSFORM_FEEDBACK_VARYING ,=0x92F4) 1236 | X(GL_ACTIVE_RESOURCES ,=0x92F5) 1237 | X(GL_MAX_NAME_LENGTH ,=0x92F6) 1238 | X(GL_MAX_NUM_ACTIVE_VARIABLES ,=0x92F7) 1239 | X(GL_MAX_NUM_COMPATIBLE_SUBROUTINES,=0x92F8) 1240 | X(GL_NAME_LENGTH ,=0x92F9) 1241 | X(GL_TYPE ,=0x92FA) 1242 | X(GL_ARRAY_SIZE ,=0x92FB) 1243 | X(GL_OFFSET ,=0x92FC) 1244 | X(GL_BLOCK_INDEX ,=0x92FD) 1245 | X(GL_ARRAY_STRIDE ,=0x92FE) 1246 | X(GL_MATRIX_STRIDE ,=0x92FF) 1247 | X(GL_IS_ROW_MAJOR ,=0x9300) 1248 | X(GL_ATOMIC_COUNTER_BUFFER_INDEX ,=0x9301) 1249 | X(GL_BUFFER_BINDING ,=0x9302) 1250 | X(GL_BUFFER_DATA_SIZE ,=0x9303) 1251 | X(GL_NUM_ACTIVE_VARIABLES ,=0x9304) 1252 | X(GL_ACTIVE_VARIABLES ,=0x9305) 1253 | X(GL_REFERENCED_BY_VERTEX_SHADER ,=0x9306) 1254 | X(GL_REFERENCED_BY_TESS_CONTROL_SHADER,=0x9307) 1255 | X(GL_REFERENCED_BY_TESS_EVALUATION_SHADER,=0x9308) 1256 | X(GL_REFERENCED_BY_GEOMETRY_SHADER ,=0x9309) 1257 | X(GL_REFERENCED_BY_FRAGMENT_SHADER ,=0x930A) 1258 | X(GL_REFERENCED_BY_COMPUTE_SHADER ,=0x930B) 1259 | X(GL_TOP_LEVEL_ARRAY_SIZE ,=0x930C) 1260 | X(GL_TOP_LEVEL_ARRAY_STRIDE ,=0x930D) 1261 | X(GL_LOCATION ,=0x930E) 1262 | X(GL_LOCATION_INDEX ,=0x930F) 1263 | X(GL_IS_PER_PATCH ,=0x92E7) 1264 | X(GL_SHADER_STORAGE_BUFFER ,=0x90D2) 1265 | X(GL_SHADER_STORAGE_BUFFER_BINDING ,=0x90D3) 1266 | X(GL_SHADER_STORAGE_BUFFER_START ,=0x90D4) 1267 | X(GL_SHADER_STORAGE_BUFFER_SIZE ,=0x90D5) 1268 | X(GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS,=0x90D6) 1269 | X(GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS,=0x90D7) 1270 | X(GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS,=0x90D8) 1271 | X(GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS,=0x90D9) 1272 | X(GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS,=0x90DA) 1273 | X(GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS,=0x90DB) 1274 | X(GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS,=0x90DC) 1275 | X(GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS,=0x90DD) 1276 | X(GL_MAX_SHADER_STORAGE_BLOCK_SIZE ,=0x90DE) 1277 | X(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT,=0x90DF) 1278 | X(GL_SHADER_STORAGE_BARRIER_BIT ,=0x00002000) 1279 | X(GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES,=0x8F39) 1280 | X(GL_DEPTH_STENCIL_TEXTURE_MODE ,=0x90EA) 1281 | X(GL_TEXTURE_BUFFER_OFFSET ,=0x919D) 1282 | X(GL_TEXTURE_BUFFER_SIZE ,=0x919E) 1283 | X(GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT,=0x919F) 1284 | X(GL_TEXTURE_VIEW_MIN_LEVEL ,=0x82DB) 1285 | X(GL_TEXTURE_VIEW_NUM_LEVELS ,=0x82DC) 1286 | X(GL_TEXTURE_VIEW_MIN_LAYER ,=0x82DD) 1287 | X(GL_TEXTURE_VIEW_NUM_LAYERS ,=0x82DE) 1288 | X(GL_TEXTURE_IMMUTABLE_LEVELS ,=0x82DF) 1289 | X(GL_VERTEX_ATTRIB_BINDING ,=0x82D4) 1290 | X(GL_VERTEX_ATTRIB_RELATIVE_OFFSET ,=0x82D5) 1291 | X(GL_VERTEX_BINDING_DIVISOR ,=0x82D6) 1292 | X(GL_VERTEX_BINDING_OFFSET ,=0x82D7) 1293 | X(GL_VERTEX_BINDING_STRIDE ,=0x82D8) 1294 | X(GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET,=0x82D9) 1295 | X(GL_MAX_VERTEX_ATTRIB_BINDINGS ,=0x82DA) 1296 | X(GL_VERTEX_BINDING_BUFFER ,=0x8F4F) 1297 | X(GL_MAX_VERTEX_ATTRIB_STRIDE ,=0x82E5) 1298 | X(GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED,=0x8221) 1299 | X(GL_TEXTURE_BUFFER_BINDING ,=0x8C2A) 1300 | X(GL_MAP_PERSISTENT_BIT ,=0x0040) 1301 | X(GL_MAP_COHERENT_BIT ,=0x0080) 1302 | X(GL_DYNAMIC_STORAGE_BIT ,=0x0100) 1303 | X(GL_CLIENT_STORAGE_BIT ,=0x0200) 1304 | X(GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT,=0x00004000) 1305 | X(GL_BUFFER_IMMUTABLE_STORAGE ,=0x821F) 1306 | X(GL_BUFFER_STORAGE_FLAGS ,=0x8220) 1307 | X(GL_CLEAR_TEXTURE ,=0x9365) 1308 | X(GL_LOCATION_COMPONENT ,=0x934A) 1309 | X(GL_TRANSFORM_FEEDBACK_BUFFER_INDEX,=0x934B) 1310 | X(GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE,=0x934C) 1311 | X(GL_QUERY_BUFFER ,=0x9192) 1312 | X(GL_QUERY_BUFFER_BARRIER_BIT ,=0x00008000) 1313 | X(GL_QUERY_BUFFER_BINDING ,=0x9193) 1314 | X(GL_QUERY_RESULT_NO_WAIT ,=0x9194) 1315 | X(GL_MIRROR_CLAMP_TO_EDGE ,=0x8743) 1316 | X(GL_CONTEXT_LOST ,=0x0507) 1317 | X(GL_NEGATIVE_ONE_TO_ONE ,=0x935E) 1318 | X(GL_ZERO_TO_ONE ,=0x935F) 1319 | X(GL_CLIP_ORIGIN ,=0x935C) 1320 | X(GL_CLIP_DEPTH_MODE ,=0x935D) 1321 | X(GL_QUERY_WAIT_INVERTED ,=0x8E17) 1322 | X(GL_QUERY_NO_WAIT_INVERTED ,=0x8E18) 1323 | X(GL_QUERY_BY_REGION_WAIT_INVERTED ,=0x8E19) 1324 | X(GL_QUERY_BY_REGION_NO_WAIT_INVERTED,=0x8E1A) 1325 | X(GL_MAX_CULL_DISTANCES ,=0x82F9) 1326 | X(GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES,=0x82FA) 1327 | X(GL_TEXTURE_TARGET ,=0x1006) 1328 | X(GL_QUERY_TARGET ,=0x82EA) 1329 | X(GL_GUILTY_CONTEXT_RESET ,=0x8253) 1330 | X(GL_INNOCENT_CONTEXT_RESET ,=0x8254) 1331 | X(GL_UNKNOWN_CONTEXT_RESET ,=0x8255) 1332 | X(GL_RESET_NOTIFICATION_STRATEGY ,=0x8256) 1333 | X(GL_LOSE_CONTEXT_ON_RESET ,=0x8252) 1334 | X(GL_NO_RESET_NOTIFICATION ,=0x8261) 1335 | X(GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT,=0x00000004) 1336 | X(GL_CONTEXT_RELEASE_BEHAVIOR ,=0x82FB) 1337 | X(GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH,=0x82FC) 1338 | X(GL_UNSIGNED_INT64_ARB ,=0x140F) 1339 | X(GL_SYNC_CL_EVENT_ARB ,=0x8240) 1340 | X(GL_SYNC_CL_EVENT_COMPLETE_ARB ,=0x8241) 1341 | X(GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB,=0x9344) 1342 | X(GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB,=0x90EB) 1343 | X(GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB,=0x9345) 1344 | X(GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB,=0x91BF) 1345 | X(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB ,=0x8242) 1346 | X(GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB,=0x8243) 1347 | X(GL_DEBUG_CALLBACK_FUNCTION_ARB ,=0x8244) 1348 | X(GL_DEBUG_CALLBACK_USER_PARAM_ARB ,=0x8245) 1349 | X(GL_DEBUG_SOURCE_API_ARB ,=0x8246) 1350 | X(GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB,=0x8247) 1351 | X(GL_DEBUG_SOURCE_SHADER_COMPILER_ARB,=0x8248) 1352 | X(GL_DEBUG_SOURCE_THIRD_PARTY_ARB ,=0x8249) 1353 | X(GL_DEBUG_SOURCE_APPLICATION_ARB ,=0x824A) 1354 | X(GL_DEBUG_SOURCE_OTHER_ARB ,=0x824B) 1355 | X(GL_DEBUG_TYPE_ERROR_ARB ,=0x824C) 1356 | X(GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB,=0x824D) 1357 | X(GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB,=0x824E) 1358 | X(GL_DEBUG_TYPE_PORTABILITY_ARB ,=0x824F) 1359 | X(GL_DEBUG_TYPE_PERFORMANCE_ARB ,=0x8250) 1360 | X(GL_DEBUG_TYPE_OTHER_ARB ,=0x8251) 1361 | X(GL_MAX_DEBUG_MESSAGE_LENGTH_ARB ,=0x9143) 1362 | X(GL_MAX_DEBUG_LOGGED_MESSAGES_ARB ,=0x9144) 1363 | X(GL_DEBUG_LOGGED_MESSAGES_ARB ,=0x9145) 1364 | X(GL_DEBUG_SEVERITY_HIGH_ARB ,=0x9146) 1365 | X(GL_DEBUG_SEVERITY_MEDIUM_ARB ,=0x9147) 1366 | X(GL_DEBUG_SEVERITY_LOW_ARB ,=0x9148) 1367 | X(GL_BLEND_COLOR ,=0x8005) 1368 | X(GL_BLEND_EQUATION ,=0x8009) 1369 | X(GL_PARAMETER_BUFFER_ARB ,=0x80EE) 1370 | X(GL_PARAMETER_BUFFER_BINDING_ARB ,=0x80EF) 1371 | X(GL_SRGB_DECODE_ARB ,=0x8299) 1372 | X(GL_VERTICES_SUBMITTED_ARB ,=0x82EE) 1373 | X(GL_PRIMITIVES_SUBMITTED_ARB ,=0x82EF) 1374 | X(GL_VERTEX_SHADER_INVOCATIONS_ARB ,=0x82F0) 1375 | X(GL_TESS_CONTROL_SHADER_PATCHES_ARB,=0x82F1) 1376 | X(GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB,=0x82F2) 1377 | X(GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB,=0x82F3) 1378 | X(GL_FRAGMENT_SHADER_INVOCATIONS_ARB,=0x82F4) 1379 | X(GL_COMPUTE_SHADER_INVOCATIONS_ARB,=0x82F5) 1380 | X(GL_CLIPPING_INPUT_PRIMITIVES_ARB ,=0x82F6) 1381 | X(GL_CLIPPING_OUTPUT_PRIMITIVES_ARB,=0x82F7) 1382 | X(GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB,=0x00000004) 1383 | X(GL_LOSE_CONTEXT_ON_RESET_ARB ,=0x8252) 1384 | X(GL_GUILTY_CONTEXT_RESET_ARB ,=0x8253) 1385 | X(GL_INNOCENT_CONTEXT_RESET_ARB ,=0x8254) 1386 | X(GL_UNKNOWN_CONTEXT_RESET_ARB ,=0x8255) 1387 | X(GL_RESET_NOTIFICATION_STRATEGY_ARB,=0x8256) 1388 | X(GL_NO_RESET_NOTIFICATION_ARB ,=0x8261) 1389 | X(GL_SAMPLE_SHADING_ARB ,=0x8C36) 1390 | X(GL_MIN_SAMPLE_SHADING_VALUE_ARB ,=0x8C37) 1391 | X(GL_SHADER_INCLUDE_ARB ,=0x8DAE) 1392 | X(GL_NAMED_STRING_LENGTH_ARB ,=0x8DE9) 1393 | X(GL_NAMED_STRING_TYPE_ARB ,=0x8DEA) 1394 | X(GL_SPARSE_STORAGE_BIT_ARB ,=0x0400) 1395 | X(GL_SPARSE_BUFFER_PAGE_SIZE_ARB ,=0x82F8) 1396 | X(GL_TEXTURE_SPARSE_ARB ,=0x91A6) 1397 | X(GL_VIRTUAL_PAGE_SIZE_INDEX_ARB ,=0x91A7) 1398 | X(GL_NUM_SPARSE_LEVELS_ARB ,=0x91AA) 1399 | X(GL_NUM_VIRTUAL_PAGE_SIZES_ARB ,=0x91A8) 1400 | X(GL_VIRTUAL_PAGE_SIZE_X_ARB ,=0x9195) 1401 | X(GL_VIRTUAL_PAGE_SIZE_Y_ARB ,=0x9196) 1402 | X(GL_VIRTUAL_PAGE_SIZE_Z_ARB ,=0x9197) 1403 | X(GL_MAX_SPARSE_TEXTURE_SIZE_ARB ,=0x9198) 1404 | X(GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB,=0x9199) 1405 | X(GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB,=0x919A) 1406 | X(GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB,=0x91A9) 1407 | X(GL_COMPRESSED_RGBA_BPTC_UNORM_ARB,=0x8E8C) 1408 | X(GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB,=0x8E8D) 1409 | X(GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB,=0x8E8E) 1410 | X(GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB,=0x8E8F) 1411 | X(GL_TEXTURE_CUBE_MAP_ARRAY_ARB ,=0x9009) 1412 | X(GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB,=0x900A) 1413 | X(GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB,=0x900B) 1414 | X(GL_SAMPLER_CUBE_MAP_ARRAY_ARB ,=0x900C) 1415 | X(GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB,=0x900D) 1416 | X(GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB,=0x900E) 1417 | X(GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB,=0x900F) 1418 | X(GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB,=0x8E5E) 1419 | X(GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB,=0x8E5F) 1420 | X(GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB,=0x8F9F) 1421 | X(GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB,=0x82EC) 1422 | X(GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB,=0x82ED) 1423 | X(GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR ,=0x00000008) 1424 | X(GL_CONTEXT_ROBUST_ACCESS ,=0x90F3) 1425 | X(GL_COMPRESSED_RGBA_ASTC_4x4_KHR ,=0x93B0) 1426 | X(GL_COMPRESSED_RGBA_ASTC_5x4_KHR ,=0x93B1) 1427 | X(GL_COMPRESSED_RGBA_ASTC_5x5_KHR ,=0x93B2) 1428 | X(GL_COMPRESSED_RGBA_ASTC_6x5_KHR ,=0x93B3) 1429 | X(GL_COMPRESSED_RGBA_ASTC_6x6_KHR ,=0x93B4) 1430 | X(GL_COMPRESSED_RGBA_ASTC_8x5_KHR ,=0x93B5) 1431 | X(GL_COMPRESSED_RGBA_ASTC_8x6_KHR ,=0x93B6) 1432 | X(GL_COMPRESSED_RGBA_ASTC_8x8_KHR ,=0x93B7) 1433 | X(GL_COMPRESSED_RGBA_ASTC_10x5_KHR ,=0x93B8) 1434 | X(GL_COMPRESSED_RGBA_ASTC_10x6_KHR ,=0x93B9) 1435 | X(GL_COMPRESSED_RGBA_ASTC_10x8_KHR ,=0x93BA) 1436 | X(GL_COMPRESSED_RGBA_ASTC_10x10_KHR,=0x93BB) 1437 | X(GL_COMPRESSED_RGBA_ASTC_12x10_KHR,=0x93BC) 1438 | X(GL_COMPRESSED_RGBA_ASTC_12x12_KHR,=0x93BD) 1439 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,=0x93D0) 1440 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,=0x93D1) 1441 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,=0x93D2) 1442 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,=0x93D3) 1443 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,=0x93D4) 1444 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,=0x93D5) 1445 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,=0x93D6) 1446 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,=0x93D7) 1447 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,=0x93D8) 1448 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,=0x93D9) 1449 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,=0x93DA) 1450 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,=0x93DB) 1451 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,=0x93DC) 1452 | X(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,=0x93DD) 1453 | // PVRTC 1454 | X(COMPRESSED_RGB_PVRTC_4BPPV1_IMG,=0x8C00) 1455 | X(COMPRESSED_RGB_PVRTC_2BPPV1_IMG,=0x8C01) 1456 | X(COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,=0x8C02) 1457 | X(COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,=0x8C03) 1458 | X(COMPRESSED_RGBA_PVRTC_2BPPV2_IMG,=0x9137) 1459 | X(COMPRESSED_RGBA_PVRTC_4BPPV2_IMG,=0x9138) 1460 | X(COMPRESSED_SRGB_PVRTC_2BPPV1_EXT,=0x8A54) 1461 | X(COMPRESSED_SRGB_PVRTC_4BPPV1_EXT,=0x8A55) 1462 | X(COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT,=0x8A56) 1463 | X(COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT,=0x8A57) 1464 | // ASTC 1465 | X(COMPRESSED_RGBA_ASTC_4x4_KHR,=0x93B0) 1466 | X(COMPRESSED_RGBA_ASTC_5x4_KHR,=0x93B1) 1467 | X(COMPRESSED_RGBA_ASTC_5x5_KHR,=0x93B2) 1468 | X(COMPRESSED_RGBA_ASTC_6x5_KHR,=0x93B3) 1469 | X(COMPRESSED_RGBA_ASTC_6x6_KHR,=0x93B4) 1470 | X(COMPRESSED_RGBA_ASTC_8x5_KHR,=0x93B5) 1471 | X(COMPRESSED_RGBA_ASTC_8x6_KHR,=0x93B6) 1472 | X(COMPRESSED_RGBA_ASTC_8x8_KHR,=0x93B7) 1473 | X(COMPRESSED_RGBA_ASTC_10x5_KHR,=0x93B8) 1474 | X(COMPRESSED_RGBA_ASTC_10x6_KHR,=0x93B9) 1475 | X(COMPRESSED_RGBA_ASTC_10x8_KHR,=0x93BA) 1476 | X(COMPRESSED_RGBA_ASTC_10x10_KHR,=0x93BB) 1477 | X(COMPRESSED_RGBA_ASTC_12x10_KHR,=0x93BC) 1478 | X(COMPRESSED_RGBA_ASTC_12x12_KHR,=0x93BD) 1479 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,=0x93D0) 1480 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,=0x93D1) 1481 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,=0x93D2) 1482 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,=0x93D3) 1483 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,=0x93D4) 1484 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,=0x93D5) 1485 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,=0x93D6) 1486 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,=0x93D7) 1487 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,=0x93D8) 1488 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,=0x93D9) 1489 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,=0x93DA) 1490 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,=0x93DB) 1491 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,=0x93DC) 1492 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,=0x93DD) 1493 | X(COMPRESSED_RGBA_ASTC_3x3x3_OES,=0x93C0) 1494 | X(COMPRESSED_RGBA_ASTC_4x3x3_OES,=0x93C1) 1495 | X(COMPRESSED_RGBA_ASTC_4x4x3_OES,=0x93C2) 1496 | X(COMPRESSED_RGBA_ASTC_4x4x4_OES,=0x93C3) 1497 | X(COMPRESSED_RGBA_ASTC_5x4x4_OES,=0x93C4) 1498 | X(COMPRESSED_RGBA_ASTC_5x5x4_OES,=0x93C5) 1499 | X(COMPRESSED_RGBA_ASTC_5x5x5_OES,=0x93C6) 1500 | X(COMPRESSED_RGBA_ASTC_6x5x5_OES,=0x93C7) 1501 | X(COMPRESSED_RGBA_ASTC_6x6x5_OES,=0x93C8) 1502 | X(COMPRESSED_RGBA_ASTC_6x6x6_OES,=0x93C9) 1503 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES,=0x93E0) 1504 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES,=0x93E1) 1505 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES,=0x93E2) 1506 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES,=0x93E3) 1507 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES,=0x93E4) 1508 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES,=0x93E5) 1509 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES,=0x93E6) 1510 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES,=0x93E7) 1511 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES,=0x93E8) 1512 | X(COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES,=0x93E9) 1513 | // DXT 1514 | X(COMPRESSED_RGB_S3TC_DXT1_EXT,=0x83F0) 1515 | X(COMPRESSED_RGBA_S3TC_DXT1_EXT,=0x83F1) 1516 | X(COMPRESSED_RGBA_S3TC_DXT3_EXT,=0x83F2) 1517 | X(COMPRESSED_RGBA_S3TC_DXT5_EXT,=0x83F3) 1518 | -------------------------------------------------------------------------------- /defs/pvrLegacy/api.def: -------------------------------------------------------------------------------- 1 | X(ApiOGLES,=1) 2 | X(ApiOGLES2,) 3 | X(ApiD3DM,) 4 | X(ApiOGL,) 5 | X(ApiDX9,) 6 | X(ApiDX10,) 7 | X(ApiOVG,) 8 | X(ApiMGL,) 9 | -------------------------------------------------------------------------------- /defs/pvrLegacy/flags.def: -------------------------------------------------------------------------------- 1 | X(MIP_MAP,=(1<<8)) 2 | X(BUMP_MAP,=(1<<10)) 3 | X(CUBE_MAP,=(1<<12)) 4 | X(VOLUME_TEXTURE,=(1<<14)) 5 | X(HAS_ALPHA,=(1<<15)) 6 | X(VERTICAL_FLIP,=(1<<16)) -------------------------------------------------------------------------------- /defs/pvrLegacy/pixel_format.def: -------------------------------------------------------------------------------- 1 | X(MGL_ARGB_4444,=0x00) 2 | X(MGL_ARGB_1555,) 3 | X(MGL_RGB_565,) 4 | X(MGL_RGB_555,) 5 | X(MGL_RGB_888,) 6 | X(MGL_ARGB_8888,) 7 | X(MGL_ARGB_8332,) 8 | X(MGL_I_8,) 9 | X(MGL_AI_88,) 10 | X(MGL_1_BPP,) 11 | X(MGL_VY1UY0,) 12 | X(MGL_Y1VY0U,) 13 | X(MGL_PVRTC2,) 14 | X(MGL_PVRTC4,) 15 | X(GL_RGBA_4444,=0x10) 16 | X(GL_RGBA_5551,) 17 | X(GL_RGBA_8888,) 18 | X(GL_RGB_565,) 19 | X(GL_RGB_555,) 20 | X(GL_RGB_888,) 21 | X(GL_I_8,) 22 | X(GL_AI_88,) 23 | X(GL_PVRTC2,) 24 | X(GL_PVRTC4,) 25 | X(GL_BGRA_8888,) 26 | X(GL_A_8,) 27 | X(GL_PVRTCII4,) 28 | X(GL_PVRTCII2,) 29 | X(D3D_DXT1,=0x20) 30 | X(D3D_DXT2,) 31 | X(D3D_DXT3,) 32 | X(D3D_DXT4,) 33 | X(D3D_DXT5,) 34 | X(D3D_RGB_332,) 35 | X(D3D_AL_44,) 36 | X(D3D_LVU_655,) 37 | X(D3D_XLVU_8888,) 38 | X(D3D_QWVU_8888,) 39 | X(D3D_ABGR_2101010,) 40 | X(D3D_ARGB_2101010,) 41 | X(D3D_AWVU_2101010,) 42 | X(D3D_GR_1616,) 43 | X(D3D_VU_1616,) 44 | X(D3D_ABGR_16161616,) 45 | X(D3D_R16F,) 46 | X(D3D_GR_1616F,) 47 | X(D3D_ABGR_16161616F,) 48 | X(D3D_R32F,) 49 | X(D3D_GR_3232F,) 50 | X(D3D_ABGR_32323232F,) 51 | X(e_etc_RGB_4BPP,) 52 | X(D3D_A8,=0x40) 53 | X(D3D_V8U8,) 54 | X(D3D_L16,) 55 | X(D3D_L8,) 56 | X(D3D_AL_88,) 57 | X(D3D_UYVY,) 58 | X(D3D_YUY2,) 59 | X(DXGI_R32G32B32A32_FLOAT,=0x50) 60 | X(DXGI_R32G32B32A32_UINT,) 61 | X(DXGI_R32G32B32A32_SINT,) 62 | X(DXGI_R32G32B32_FLOAT,) 63 | X(DXGI_R32G32B32_UINT,) 64 | X(DXGI_R32G32B32_SINT,) 65 | X(DXGI_R16G16B16A16_FLOAT,) 66 | X(DXGI_R16G16B16A16_UNORM,) 67 | X(DXGI_R16G16B16A16_UINT,) 68 | X(DXGI_R16G16B16A16_SNORM,) 69 | X(DXGI_R16G16B16A16_SINT,) 70 | X(DXGI_R32G32_FLOAT,) 71 | X(DXGI_R32G32_UINT,) 72 | X(DXGI_R32G32_SINT,) 73 | X(DXGI_R10G10B10A2_UNORM,) 74 | X(DXGI_R10G10B10A2_UINT,) 75 | X(DXGI_R11G11B10_FLOAT,) 76 | X(DXGI_R8G8B8A8_UNORM,) 77 | X(DXGI_R8G8B8A8_UNORM_SRGB,) 78 | X(DXGI_R8G8B8A8_UINT,) 79 | X(DXGI_R8G8B8A8_SNORM,) 80 | X(DXGI_R8G8B8A8_SINT,) 81 | X(DXGI_R16G16_FLOAT,) 82 | X(DXGI_R16G16_UNORM,) 83 | X(DXGI_R16G16_UINT,) 84 | X(DXGI_R16G16_SNORM,) 85 | X(DXGI_R16G16_SINT,) 86 | X(DXGI_R32_FLOAT,) 87 | X(DXGI_R32_UINT,) 88 | X(DXGI_R32_SINT,) 89 | X(DXGI_R8G8_UNORM,) 90 | X(DXGI_R8G8_UINT,) 91 | X(DXGI_R8G8_SNORM,) 92 | X(DXGI_R8G8_SINT,) 93 | X(DXGI_R16_FLOAT,) 94 | X(DXGI_R16_UNORM,) 95 | X(DXGI_R16_UINT,) 96 | X(DXGI_R16_SNORM,) 97 | X(DXGI_R16_SINT,) 98 | X(DXGI_R8_UNORM,) 99 | X(DXGI_R8_UINT,) 100 | X(DXGI_R8_SNORM,) 101 | X(DXGI_R8_SINT,) 102 | X(DXGI_A8_UNORM,) 103 | X(DXGI_R1_UNORM,) 104 | X(DXGI_R9G9B9E5_SHAREDEXP,) 105 | X(DXGI_R8G8_B8G8_UNORM,) 106 | X(DXGI_G8R8_G8B8_UNORM,) 107 | X(DXGI_BC1_UNORM,) 108 | X(DXGI_BC1_UNORM_SRGB,) 109 | X(DXGI_BC2_UNORM,) 110 | X(DXGI_BC2_UNORM_SRGB,) 111 | X(DXGI_BC3_UNORM,) 112 | X(DXGI_BC3_UNORM_SRGB,) 113 | X(DXGI_BC4_UNORM,) 114 | X(DXGI_BC4_SNORM,) 115 | X(DXGI_BC5_UNORM,) 116 | X(DXGI_BC5_SNORM,) 117 | X(VG_sRGBX_8888,=0x90) 118 | X(VG_sRGBA_8888,) 119 | X(VG_sRGBA_8888_PRE,) 120 | X(VG_sRGB_565,) 121 | X(VG_sRGBA_5551,) 122 | X(VG_sRGBA_4444,) 123 | X(VG_sL_8,) 124 | X(VG_lRGBX_8888,) 125 | X(VG_lRGBA_8888,) 126 | X(VG_lRGBA_8888_PRE,) 127 | X(VG_lL_8,) 128 | X(VG_A_8,) 129 | X(VG_BW_1,) 130 | X(VG_sXRGB_8888,) 131 | X(VG_sARGB_8888,) 132 | X(VG_sARGB_8888_PRE,) 133 | X(VG_sARGB_1555,) 134 | X(VG_sARGB_4444,) 135 | X(VG_lXRGB_8888,) 136 | X(VG_lARGB_8888,) 137 | X(VG_lARGB_8888_PRE,) 138 | X(VG_sBGRX_8888,) 139 | X(VG_sBGRA_8888,) 140 | X(VG_sBGRA_8888_PRE,) 141 | X(VG_sBGR_565,) 142 | X(VG_sBGRA_5551,) 143 | X(VG_sBGRA_4444,) 144 | X(VG_lBGRX_8888,) 145 | X(VG_lBGRA_8888,) 146 | X(VG_lBGRA_8888_PRE,) 147 | X(VG_sXBGR_8888,) 148 | X(VG_sABGR_8888,) 149 | X(VG_sABGR_8888_PRE,) 150 | X(VG_sABGR_1555,) 151 | X(VG_sABGR_4444,) 152 | X(VG_lXBGR_8888,) 153 | X(VG_lABGR_8888,) 154 | X(VG_lABGR_8888_PRE,) 155 | X(NumPixelTypes,) 156 | X(InvalidType,=0xffffffff) 157 | -------------------------------------------------------------------------------- /defs/pvrV3/colour_spaces.def: -------------------------------------------------------------------------------- 1 | X(lRGB,) 2 | X(sRGB,) 3 | X(NumSpaces,) 4 | -------------------------------------------------------------------------------- /defs/pvrV3/compressed_formats.def: -------------------------------------------------------------------------------- 1 | X(PVRTCI_2bpp_RGB,) 2 | X(PVRTCI_2bpp_RGBA,) 3 | X(PVRTCI_4bpp_RGB,) 4 | X(PVRTCI_4bpp_RGBA,) 5 | X(PVRTCII_2bpp,) 6 | X(PVRTCII_4bpp,) 7 | X(ETC1,) 8 | X(DXT1,) 9 | X(DXT2,) 10 | X(DXT3,) 11 | X(DXT4,) 12 | X(DXT5,) 13 | X(BC1,=DXT1) 14 | X(BC2,=DXT3) 15 | X(BC3,=DXT5) 16 | X(BC4,) 17 | X(BC5,) 18 | X(BC6,) 19 | X(BC7,) 20 | X(UYVY,) 21 | X(YUY2,) 22 | X(BW1bpp,) 23 | X(SharedExponentR9G9B9E5,) 24 | X(RGBG8888,) 25 | X(GRGB8888,) 26 | X(ETC2_RGB,) 27 | X(ETC2_RGBA,) 28 | X(ETC2_RGB_A1,) 29 | X(EAC_R11,) 30 | X(EAC_RG11,) 31 | X(NumCompressedPFs,) 32 | -------------------------------------------------------------------------------- /defs/pvrV3/variable_types.def: -------------------------------------------------------------------------------- 1 | X(UnsignedByteNorm,) 2 | X(SignedByteNorm,) 3 | X(UnsignedByte,) 4 | X(SignedByte,) 5 | X(UnsignedShortNorm,) 6 | X(SignedShortNorm,) 7 | X(UnsignedShort,) 8 | X(SignedShort,) 9 | X(UnsignedIntegerNorm,) 10 | X(SignedIntegerNorm,) 11 | X(UnsignedInteger,) 12 | X(SignedInteger,) 13 | X(SignedFloat,) 14 | X(Float,=SignedFloat) 15 | X(UnsignedFloat,) 16 | X(NumVarTypes,) 17 | -------------------------------------------------------------------------------- /main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | #include 8 | #include 9 | 10 | #include "textureinfo.h" 11 | 12 | //*------------------------------- 13 | // Global variables 14 | //-------------------------------*/ 15 | static const std::string s_version = "1.2"; 16 | namespace Defaults { 17 | enum Types { 18 | PVRV3, 19 | PVRLegacy, 20 | KTX, 21 | DDS 22 | }; 23 | const std::vector kContainerNames { 24 | "PVR (v3)", 25 | "PVR (legacy)", 26 | "KTX", 27 | "DDS" 28 | }; 29 | const std::vector kCsvNames { 30 | "pvrV3.csv", 31 | "pvrLegacy.csv", 32 | "ktx.csv", 33 | "dds.csv" 34 | }; 35 | }; 36 | static struct Parameters { 37 | bool print_csv; 38 | Parameters():print_csv(false){} 39 | }s_parameters; 40 | 41 | static const 42 | std::vector> ParameterInfo { 43 | {"--csv","Write header information to a CSV file (calling directory). Disables stdout print"} 44 | }; 45 | 46 | //*------------------------------- 47 | // Global functions 48 | //-------------------------------*/ 49 | static std::string GetFilenameExt(std::string filename) { 50 | std::string ext_name(""); 51 | std::string::size_type index = filename.rfind('.'); 52 | if(index != std::string::npos) 53 | ext_name = filename.substr(index+1); 54 | return ext_name; 55 | } 56 | static void PrintDivider() { 57 | printf("========================================\n"); 58 | } 59 | static void PrintHeaderInfo( 60 | const std::string& file_name, 61 | const std::string& container_name, 62 | const std::string& header_info) { 63 | PrintDivider(); 64 | std::cout << file_name << std::endl; 65 | PrintDivider(); 66 | std::cout << "Container: " << container_name << std::endl; 67 | std::cout << header_info << std::endl; 68 | } 69 | static void PrintHelp() { 70 | std::cout << "version: " << s_version <(parameter) << "] "; 74 | std::cout << "..." << std::endl << std::endl; 75 | std::cout << "Print a texture container's header information to stdout. Supported containers:" << std::endl; 76 | for(const auto& container:Defaults::kContainerNames) 77 | std::cout << "\t* " << container << std::endl; 78 | std::cout << std::endl; 79 | std::cout << "options:" << std::endl; 80 | for(const auto¶meter:ParameterInfo) 81 | std::cout << "\t" << std::get<0>(parameter) << ": " 82 | << std::get<1>(parameter) << std::endl; 83 | } 84 | 85 | //*------------------------------- 86 | // main 87 | //-------------------------------*/ 88 | int main (int argc, char *argv[]) { 89 | std::vector pvr_files, ktx_files, dds_files; 90 | //*------------------------------- 91 | // Loop through args 92 | //-------------------------------*/ 93 | if(argc == 1) { 94 | PrintHelp(); 95 | return 0; 96 | } 97 | for(unsigned int index = 1; index < argc; index++) { 98 | // Flags 99 | if(strcmp(argv[index], "/?") == 0 || 100 | strcmp(argv[index], "-h") == 0 || 101 | strcmp(argv[index], "--help") == 0) { 102 | PrintHelp(); 103 | } 104 | if(argv[index] == std::get<0>(ParameterInfo[0])) { 105 | s_parameters.print_csv = true; 106 | continue; 107 | } 108 | // Files 109 | std::string file_name(argv[index]); 110 | std::string ext_name(GetFilenameExt(file_name.c_str())); 111 | if(ext_name == "pvr") { 112 | pvr_files.push_back(std::move(file_name)); 113 | } 114 | else if(ext_name == "ktx") { 115 | ktx_files.push_back(std::move(file_name)); 116 | } 117 | else if(ext_name == "dds") { 118 | dds_files.push_back(std::move(file_name)); 119 | } 120 | } 121 | //*------------------------------- 122 | // CSV setup 123 | //-------------------------------*/ 124 | std::vector output_streams(Defaults::kCsvNames.size()); 125 | if(s_parameters.print_csv) { 126 | for(unsigned int index = 0; index < output_streams.size(); ++index) { 127 | const std::string& output_name(Defaults::kCsvNames.at(index)); 128 | std::ofstream& output(output_streams.at(index)); 129 | output.open(output_name); 130 | if(!output.is_open()) { 131 | printf("ERROR: Unable to open %s", output_name.c_str()); 132 | } 133 | std::vector column_titles; 134 | switch (index) { 135 | case Defaults::Types::PVRV3: 136 | column_titles = PvrV3Info::column_names; 137 | break; 138 | case Defaults::Types::PVRLegacy: 139 | column_titles = PvrLegacyInfo::column_names; 140 | break; 141 | case Defaults::Types::KTX: 142 | column_titles = KTXInfo::column_names; 143 | break; 144 | case Defaults::Types::DDS: 145 | column_titles = DDSInfo::column_names; 146 | break; 147 | default: 148 | assert(0); 149 | break; 150 | } 151 | output << "File name" << ','; 152 | for(auto& column_title : column_titles) 153 | output << column_title << ','; 154 | output << std::endl; 155 | } 156 | } 157 | //*------------------------------- 158 | // Load files & print 159 | //-------------------------------*/ 160 | std::string error_string(""); 161 | // PVR files 162 | for(const auto& file_name: pvr_files) { 163 | std::ifstream file(file_name, std::ifstream::binary); 164 | if(!file.is_open()) { 165 | printf("ERROR: Unable to open %s\n", file_name.c_str()); 166 | continue; 167 | } 168 | unsigned int file_type(Defaults::Types::PVRV3); 169 | IHeader* header(nullptr); 170 | PvrV3Header pvr_header; 171 | PvrLegacyHeader pvr_legacy_header; 172 | // PVR v3 173 | if(pvr_header.LoadHeader(file, error_string)) header = &pvr_header; 174 | else file_type = Defaults::Types::PVRLegacy; 175 | // Legacy container 176 | if(header == nullptr) { 177 | if(pvr_legacy_header.LoadHeader(file, error_string)) { 178 | header = &pvr_legacy_header; 179 | } 180 | else { 181 | printf("ERROR: %s - %s\n",file_name.c_str(), error_string.c_str()); 182 | continue; 183 | } 184 | } 185 | // Print 186 | if(s_parameters.print_csv) 187 | output_streams[file_type] << file_name << "," << header->ToCsvString() << std::endl; 188 | else 189 | PrintHeaderInfo( 190 | file_name, 191 | file_type == Defaults::Types::PVRV3?"PVR (v3)":"PVR (legacy)", 192 | header->ToString()); 193 | } 194 | // KTX files 195 | for(const auto& file_name: ktx_files) { 196 | std::ifstream file(file_name, std::ifstream::binary); 197 | if(!file.is_open()) { 198 | printf("ERROR: Unable to open %s\n", file_name.c_str()); 199 | continue; 200 | } 201 | KTXHeader ktx_header; 202 | if(!ktx_header.LoadHeader(file, error_string)) { 203 | printf("ERROR: %s - %s\n",file_name.c_str(), error_string.c_str()); 204 | continue; 205 | } 206 | // Print 207 | if(s_parameters.print_csv) 208 | output_streams.at(Defaults::Types::KTX) << file_name << "," << ktx_header.ToCsvString() << std::endl; 209 | else 210 | PrintHeaderInfo( 211 | file_name, 212 | Defaults::kContainerNames.at(Defaults::Types::KTX), 213 | ktx_header.ToString()); 214 | } 215 | // DDS files 216 | for(const auto& file_name: dds_files) { 217 | std::ifstream file(file_name, std::ifstream::binary); 218 | if(!file.is_open()) { 219 | printf("ERROR: Unable to open %s\n", file_name.c_str()); 220 | continue; 221 | } 222 | DDSHeader header; 223 | if(!header.LoadHeader(file, error_string)) { 224 | printf("ERROR: %s - %s\n",file_name.c_str(), error_string.c_str()); 225 | continue; 226 | } 227 | // Print 228 | if(s_parameters.print_csv) 229 | output_streams.at(Defaults::Types::DDS) << file_name << "," << header.ToCsvString() << std::endl; 230 | else 231 | PrintHeaderInfo( 232 | file_name, 233 | Defaults::kContainerNames.at(Defaults::Types::DDS), 234 | header.ToString()); 235 | } 236 | 237 | // Shutdown 238 | for(auto& stream:output_streams) 239 | stream.close(); 240 | } 241 | -------------------------------------------------------------------------------- /textureinfo.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | //*------------------------------- 11 | // Macros 12 | //-------------------------------*/ 13 | #define STRING_ENUM_PAIR(namespace__,enum__) {namespace__::enum__,#enum__} 14 | #define HEADER_PRE_LOAD(file__) \ 15 | if(!file__) return false; \ 16 | file__.seekg(std::ios_base::beg); 17 | #define HEADER_POST_LOAD(file__) \ 18 | file__.close(); \ 19 | return true; 20 | 21 | #define ENUM_DEF(enum__, value__) enum__ value__, 22 | #define ENUM_STRING_PAIR(enum__) {enum__,#enum__}, 23 | #define ENUM_APPEND_TO_STRING(enum__,string_vector__) \ 24 | if(flags&enum__) output.append(string_vector__.find(enum__)->second + "|"); 25 | #define ENUM_STRING_LOOKUP(vector__,enum__) \ 26 | vector__.find(enum__)->second == ""?std::to_string(enum__)+" (no string found)":vector__.find(enum__)->second 27 | 28 | //*------------------------------- 29 | // Global functions 30 | //-------------------------------*/ 31 | static void RemoveTrailingCharacter(std::string& string, const char character) { 32 | if(string.size()==0) return; 33 | const unsigned int end_index(string.size()-1); 34 | if(string.at(end_index)==character) string.erase(end_index); 35 | } 36 | constexpr static unsigned int MakeFourCC(const char c0,const char c1,const char c2,const char c3) { 37 | return 38 | (static_cast(c0)) 39 | + (static_cast(c1) << 8) 40 | + (static_cast(c2) << 16) 41 | + (static_cast(c3) << 24); 42 | } 43 | static std::string FourCCToString(const unsigned int fourcc) { 44 | std::string output; 45 | char chars[4]; 46 | chars[0] = static_cast(fourcc); 47 | chars[1] = static_cast(fourcc>>8); 48 | chars[2] = static_cast(fourcc>>16); 49 | chars[3] = static_cast(fourcc>>24); 50 | for(auto& character:chars) 51 | output.append((char*)&character,1); 52 | return output; 53 | } 54 | 55 | //*------------------------------- 56 | // Constants 57 | //-------------------------------*/ 58 | static const std::string c_empty_string = "-"; 59 | 60 | //*------------------------------- 61 | // Interfaces 62 | //-------------------------------*/ 63 | class IHeader { 64 | public: 65 | virtual bool LoadHeader(std::ifstream& file, std::string& error_string) = 0; 66 | virtual std::string ToString() = 0; 67 | virtual std::string ToCsvString() = 0; 68 | }; 69 | 70 | //*------------------------------- 71 | // Classes 72 | //-------------------------------*/ 73 | namespace PvrLegacyInfo { 74 | enum PixelFormat { 75 | #define X(a,b) ENUM_DEF(a,b) 76 | #include "defs/pvrLegacy/pixel_format.def" 77 | #undef X 78 | }; 79 | std::multimap pixel_format_names { 80 | #define X(a,b) ENUM_STRING_PAIR(a) 81 | #include "defs/pvrLegacy/pixel_format.def" 82 | #undef X 83 | }; 84 | enum API { 85 | #define X(a,b) ENUM_DEF(a,b) 86 | #include "defs/pvrLegacy/api.def" 87 | #undef X 88 | }; 89 | std::multimap api_names { 90 | #define X(a,b) ENUM_STRING_PAIR(a) 91 | #include "defs/pvrLegacy/api.def" 92 | #undef X 93 | }; 94 | enum Flags { 95 | #define X(a,b) ENUM_DEF(a,b) 96 | #include "defs/pvrLegacy/flags.def" 97 | #undef X 98 | }; 99 | std::multimap flag_names { 100 | #define X(a,b) ENUM_STRING_PAIR(a) 101 | #include "defs/pvrLegacy/flags.def" 102 | #undef X 103 | }; 104 | std::string PrintFlagNames(unsigned int flags) { 105 | std::string output; 106 | #define X(a,b) ENUM_APPEND_TO_STRING(a,flag_names) 107 | #include "defs/pvrLegacy/flags.def" 108 | #undef X 109 | RemoveTrailingCharacter(output,'|'); 110 | return output; 111 | }; 112 | const std::uint32_t kPixelTypeMask = 0xff; 113 | // The old PVR header identifier is the characters 'PVR!', V2 only. Usually ignored... 114 | const std::uint32_t kIdentifierV2 = 0x21525650; 115 | const std::uint32_t kHeaderSizeV1 = 44; 116 | const std::uint32_t kHeaderSizeV2 = 52; 117 | 118 | std::vector column_names { 119 | "Format", 120 | "Number of bits", 121 | "Width", 122 | "Height", 123 | "Array size", 124 | "Number of MIP maps", 125 | "Red mask?", 126 | "Green mask?", 127 | "Blue mask?", 128 | "Alpha mask?", 129 | "Magic number", 130 | "Flags", 131 | "Data size" 132 | }; 133 | } 134 | // PVR Version 1 & 2 135 | class PvrLegacyHeader: public IHeader { 136 | private: 137 | std::vector ToStringArray() { 138 | std::vector output; 139 | const auto& impl_v1(this->impl_v1_); 140 | const auto& impl_v2(this->impl_v2_); 141 | const std::uint32_t pixel_format(impl_v1.pixel_format_flags&PvrLegacyInfo::kPixelTypeMask); 142 | const std::string pixel_format_string(PvrLegacyInfo::pixel_format_names.find(pixel_format)->second); 143 | output.push_back(pixel_format_string); 144 | output.push_back(std::to_string(impl_v1.bit_count)); 145 | output.push_back(std::to_string(impl_v1.width)); 146 | output.push_back(std::to_string(impl_v1.height)); 147 | const std::string num_surfaces_string( 148 | impl_v2.num_surfaces == 0?std::string("-"):std::to_string(impl_v2.num_surfaces)); 149 | output.push_back(num_surfaces_string); 150 | output.push_back(std::to_string(impl_v1.mip_map_count+1)); 151 | output.push_back(impl_v1.red_mask==0?"False":"True"); 152 | output.push_back(impl_v1.green_mask==0?"False":"True"); 153 | output.push_back(impl_v1.blue_mask==0?"False":"True"); 154 | output.push_back(impl_v1.alpha_mask==0?"False":"True"); 155 | const std::string magic_number_string( 156 | impl_v2.magic_number == 0?std::string("-"):std::to_string(impl_v2.magic_number)); 157 | output.push_back(magic_number_string); 158 | output.push_back(PvrLegacyInfo::PrintFlagNames(impl_v1.pixel_format_flags)); 159 | output.push_back(std::to_string(impl_v1.data_size)); 160 | return output; 161 | } 162 | public: 163 | virtual bool LoadHeader(std::ifstream& file, std::string& error_string) { 164 | HEADER_PRE_LOAD(file) 165 | std::uint32_t pvr_version; 166 | file.read(reinterpret_cast(&pvr_version), sizeof pvr_version); 167 | if(pvr_version != PvrLegacyInfo::kHeaderSizeV1 && pvr_version != PvrLegacyInfo::kHeaderSizeV2) { 168 | error_string = "Not a valid legacy (v1 or v2) PVR file"; 169 | return false; 170 | } 171 | file.read(reinterpret_cast(&this->impl_v1_), sizeof(this->impl_v1_)); 172 | if(pvr_version == PvrLegacyInfo::kHeaderSizeV2) { 173 | file.read(reinterpret_cast(&this->impl_v2_), sizeof(this->impl_v2_)); 174 | } 175 | HEADER_POST_LOAD(file) 176 | } 177 | virtual std::string ToString() { 178 | std::string output(""); 179 | const auto& variable_strings(this->ToStringArray()); 180 | for(unsigned int index=0; indexToStringArray()); 187 | for(const auto& variable_string:variable_strings) 188 | output.append(variable_string + ','); 189 | return output; 190 | } 191 | private: 192 | #pragma pack(4) 193 | struct ImplV1 { 194 | std::uint32_t height; //!< height of surface to be created 195 | std::uint32_t width; //!< width of input surface 196 | std::uint32_t mip_map_count; //!< number of mip-map levels requested 197 | std::uint32_t pixel_format_flags; //!< pixel format flags 198 | std::uint32_t data_size; //!< Size of the compress data 199 | std::uint32_t bit_count; //!< number of bits per pixel 200 | std::uint32_t red_mask; //!< mask for red bit 201 | std::uint32_t green_mask; //!< mask for green bits 202 | std::uint32_t blue_mask; //!< mask for blue bits 203 | std::uint32_t alpha_mask; //!< mask for alpha channel 204 | ImplV1() {memset(this, 0, sizeof(ImplV1));} 205 | }impl_v1_; 206 | #pragma pack(4) 207 | struct ImplV2 { 208 | std::uint32_t magic_number; // magic number identifying pvr file 209 | std::uint32_t num_surfaces; // Number of surfaces present in the pvr 210 | ImplV2() {memset(this, 0, sizeof(ImplV2));} 211 | }impl_v2_; 212 | }; 213 | 214 | namespace PvrV3Info { 215 | enum CompressedFormat { 216 | #define X(a,b) ENUM_DEF(a,b) 217 | #include "defs/pvrV3/compressed_formats.def" 218 | #undef X 219 | }; 220 | std::multimap compressed_format_names { 221 | #define X(a,b) ENUM_STRING_PAIR(a) 222 | #include "defs/pvrV3/compressed_formats.def" 223 | #undef X 224 | }; 225 | enum { 226 | PVRv3 = 0x03525650, //!< PVR format v3 identifier 227 | PVRv3Reversed = 0x50565203, //!< PVR format v3 reversed identifier 228 | 229 | // PVR header flags. 230 | CompressedFlag = (1 << 0), //!< Compressed format flag 231 | PremultipliedFlag = (1 << 1), //!< Premultiplied flag 232 | SizeOfHeader = 52 233 | }; 234 | enum ColorSpace { 235 | #define X(a,b) ENUM_DEF(a,b) 236 | #include "defs/pvrV3/colour_spaces.def" 237 | #undef X 238 | }; 239 | std::multimap color_space_names { 240 | #define X(a,b) ENUM_STRING_PAIR(a) 241 | #include "defs/pvrV3/colour_spaces.def" 242 | #undef X 243 | }; 244 | enum VariableType { 245 | #define X(a,b) ENUM_DEF(a,b) 246 | #include "defs/pvrV3/variable_types.def" 247 | #undef X 248 | }; 249 | std::multimap variable_type_names { 250 | #define X(a,b) ENUM_STRING_PAIR(a) 251 | #include "defs/pvrV3/variable_types.def" 252 | #undef X 253 | }; 254 | 255 | std::vector column_names { 256 | "Compressed format", 257 | "Channel name [0]", 258 | "Channel name [1]", 259 | "Channel name [2]", 260 | "Channel name [3]", 261 | "Bits per-pixel [0]", 262 | "Bits per-pixel [1]", 263 | "Bits per-pixel [2]", 264 | "Bits per-pixel [3]", 265 | "Color space", 266 | "Channel type", 267 | "Width", 268 | "Height", 269 | "Depth", 270 | "Array size", 271 | "Number of faces", 272 | "Number of MIP maps", 273 | "Flags", 274 | "Meta data size" 275 | }; 276 | }; 277 | class PvrV3Header: public IHeader { 278 | private: 279 | std::vector ToStringArray() { 280 | std::vector output; 281 | const auto& impl(this->impl_); 282 | // If the last 16-bits are empty, it's a compressed format 283 | if(impl.pixel_format.u32[1] == 0) { 284 | output.push_back(PvrV3Info::compressed_format_names.find(impl.pixel_format.u8[0])->second); 285 | for(unsigned int index = 0; index < 8; index++) 286 | output.push_back(c_empty_string); 287 | } 288 | else { 289 | output.push_back(c_empty_string); 290 | // Channel names 291 | for(unsigned int index = 0; index < 4; index++) { 292 | // Convert unsigned int pulled from the header into a literal character 293 | char value_char(impl.pixel_format.u8[index]); 294 | if(!value_char) value_char = c_empty_string[0]; 295 | const std::string value((char*)&value_char,1); 296 | output.push_back(value); 297 | } 298 | // Bits per-pixel 299 | for(unsigned int index = 4; index < 8; index++) 300 | if(impl.pixel_format.u8[index]==0) 301 | output.push_back(c_empty_string); 302 | else 303 | output.push_back(std::to_string(impl.pixel_format.u8[index])); 304 | } 305 | output.push_back(PvrV3Info::color_space_names.find(impl.color_space)->second); 306 | output.push_back(PvrV3Info::variable_type_names.find(impl.channel_type)->second); 307 | output.push_back(std::to_string(impl.width)); 308 | output.push_back(std::to_string(impl.height)); 309 | output.push_back(std::to_string(impl.depth)); 310 | output.push_back(std::to_string(impl.num_surfaces)); 311 | output.push_back(std::to_string(impl.num_faces)); 312 | output.push_back(std::to_string(impl.mip_map_count)); 313 | output.push_back(std::to_string(impl.flags)); 314 | output.push_back(std::to_string(impl.meta_data_size)); 315 | return output; 316 | } 317 | public: 318 | virtual bool LoadHeader(std::ifstream& file, std::string& error_string) { 319 | HEADER_PRE_LOAD(file) 320 | std::uint32_t pvr_version; 321 | file.read(reinterpret_cast(&pvr_version), sizeof pvr_version); 322 | if(pvr_version == PvrV3Info::PVRv3) {} 323 | else if(pvr_version == PvrV3Info::PVRv3Reversed) { 324 | error_string = "Endianess does not matches host"; 325 | return false; 326 | } 327 | else { 328 | error_string = "Not a valid PVR v3 file"; 329 | return false; 330 | } 331 | file.read(reinterpret_cast(&this->impl_), sizeof(this->impl_)); 332 | HEADER_POST_LOAD(file) 333 | } 334 | virtual std::string ToString() { 335 | std::string output(""); 336 | const auto& variable_strings(this->ToStringArray()); 337 | for(unsigned int index=0; indexToStringArray()); 344 | for(const auto& variable_string:variable_strings) 345 | output.append(variable_string + ','); 346 | return output; 347 | } 348 | private: 349 | union PixelFormatUnion { 350 | std::uint64_t u64; 351 | std::uint32_t u32[2]; 352 | std::uint8_t u8[8]; 353 | }; 354 | #pragma pack(4) 355 | struct Impl { 356 | std::uint32_t flags; //!< Various format flags. 357 | PixelFormatUnion pixel_format;//!< The pixel format, 8cc value storing the 4 channel identifiers and their respective sizes. 358 | std::uint32_t color_space; 359 | std::uint32_t channel_type; 360 | std::uint32_t height; //!< Height of the texture. 361 | std::uint32_t width; //!< Width of the texture. 362 | std::uint32_t depth; //!< Depth of the texture. (Z-slices) 363 | std::uint32_t num_surfaces; //!< Number of members in a Texture Array. 364 | std::uint32_t num_faces; //!< Number of faces in a Cube Map. May be a value other than 6. 365 | std::uint32_t mip_map_count; //!< Number of MIP Maps in the texture - NB: Includes top level. 366 | std::uint32_t meta_data_size; //!< Size of the accompanying meta data. 367 | Impl() {memset(this, 0, sizeof(Impl));} 368 | }impl_; 369 | }; 370 | 371 | namespace KTXInfo { 372 | static const std::uint8_t kIdentifier[] = { 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A }; 373 | // Reference number to verify endianness of a file 374 | static const std::uint32_t kEndianReference = 0x04030201; 375 | // Expected size of a header in file 376 | static const std::uint32_t kExpectedHeaderSize = 64; 377 | // Identifier for the orientation meta data 378 | static const std::uint8_t kOrientationMetaDataKey[] = "KTXOrientation"; 379 | 380 | enum GLEnum { 381 | #define X(a,b) ENUM_DEF(a,b) 382 | #include "defs/ktx/gl.def" 383 | #undef X 384 | }; 385 | std::multimap gl_enum_names { 386 | #define X(a,b) ENUM_STRING_PAIR(a) 387 | #include "defs/ktx/gl.def" 388 | #undef X 389 | }; 390 | 391 | std::vector column_names { 392 | "glFormat", 393 | "glInternalFormat", 394 | "glBaseInternalFormat", 395 | "glType", 396 | "glType size", 397 | "Width", 398 | "Height", 399 | "Depth", 400 | "Array size", 401 | "Number of faces", 402 | "Number of MIP maps", 403 | "Bytes of key value data", 404 | "Endianness" 405 | }; 406 | }; 407 | class KTXHeader: public IHeader { 408 | public: 409 | virtual bool LoadHeader(std::ifstream& file, std::string& error_string){ 410 | HEADER_PRE_LOAD(file) 411 | std::uint8_t identifier[12]; 412 | file.read(reinterpret_cast(&identifier), sizeof identifier); 413 | if(memcmp(identifier,KTXInfo::kIdentifier,sizeof(KTXInfo::kIdentifier)) !=0) { 414 | error_string = "Header does not contain a valid KTX identifier"; 415 | return false; 416 | } 417 | file.read(reinterpret_cast(&this->impl_), sizeof(this->impl_)); 418 | HEADER_POST_LOAD(file) 419 | } 420 | std::vector ToStringArray() { 421 | std::vector output; 422 | const auto& impl(this->impl_); 423 | std::string gl_format_string("0 (compressed format)"); 424 | if(impl.gl_format != 0) gl_format_string = ENUM_STRING_LOOKUP(KTXInfo::gl_enum_names,impl.gl_format); 425 | output.push_back(gl_format_string); 426 | std::string gl_internal_format_string(ENUM_STRING_LOOKUP(KTXInfo::gl_enum_names,impl.gl_internal_format)); 427 | output.push_back(gl_internal_format_string); 428 | std::string gl_base_internal_format_string(ENUM_STRING_LOOKUP(KTXInfo::gl_enum_names,impl.gl_base_internal_format)); 429 | output.push_back(gl_base_internal_format_string); 430 | std::string gl_type_string("0 (compressed format)"); 431 | if(impl.gl_type != 0) gl_type_string = ENUM_STRING_LOOKUP(KTXInfo::gl_enum_names,impl.gl_type); 432 | output.push_back(gl_type_string); 433 | output.push_back(std::to_string(impl.gl_type_size)); 434 | output.push_back(std::to_string(impl.pixel_width)); 435 | output.push_back(std::to_string(impl.pixel_height)); 436 | output.push_back(std::to_string(impl.pixel_depth)); 437 | output.push_back(std::to_string(impl.number_of_array_elements)); 438 | output.push_back(std::to_string(impl.number_of_faces)); 439 | output.push_back(std::to_string(impl.number_of_mipmap_levels)); 440 | output.push_back(std::to_string(impl.bytes_of_key_value_data)); 441 | output.push_back(std::to_string(impl.endianness)); 442 | return output; 443 | } 444 | virtual std::string ToString() { 445 | std::string output(""); 446 | const auto& variable_strings(this->ToStringArray()); 447 | for(unsigned int index=0; indexToStringArray()); 454 | for(const auto& variable_string:variable_strings) 455 | output.append(variable_string + ','); 456 | return output; 457 | } 458 | private: 459 | #pragma pack(4) 460 | struct Impl { 461 | std::uint32_t endianness; 462 | std::uint32_t gl_type; 463 | std::uint32_t gl_type_size; 464 | std::uint32_t gl_format; 465 | std::uint32_t gl_internal_format; 466 | std::uint32_t gl_base_internal_format; 467 | std::uint32_t pixel_width; 468 | std::uint32_t pixel_height; 469 | std::uint32_t pixel_depth; 470 | std::uint32_t number_of_array_elements; 471 | std::uint32_t number_of_faces; 472 | std::uint32_t number_of_mipmap_levels; 473 | std::uint32_t bytes_of_key_value_data; 474 | Impl() {memset(this, 0, sizeof(Impl));} 475 | }impl_; 476 | }; 477 | 478 | namespace DDSInfo { 479 | enum PixelFormatFlags { 480 | #define X(a,b) ENUM_DEF(a,b) 481 | #include "defs/dds/pixel_format_flags.def" 482 | #undef X 483 | }; 484 | std::multimap pixel_format_flag_names { 485 | #define X(a,b) ENUM_STRING_PAIR(a) 486 | #include "defs/dds/pixel_format_flags.def" 487 | #undef X 488 | }; 489 | enum DDSFlags { 490 | #define X(a,b) ENUM_DEF(a,b) 491 | #include "defs/dds/dds_flags.def" 492 | #undef X 493 | }; 494 | std::multimap dds_flag_names { 495 | #define X(a,b) ENUM_STRING_PAIR(a) 496 | #include "defs/dds/dds_flags.def" 497 | #undef X 498 | }; 499 | enum Capabilities1Flags { 500 | #define X(a,b) ENUM_DEF(a,b) 501 | #include "defs/dds/caps_1_flags.def" 502 | #undef X 503 | }; 504 | std::multimap capabilities1_flag_names { 505 | #define X(a,b) ENUM_STRING_PAIR(a) 506 | #include "defs/dds/caps_1_flags.def" 507 | #undef X 508 | }; 509 | enum Capabilities2Flags { 510 | #define X(a,b) ENUM_DEF(a,b) 511 | #include "defs/dds/caps_2_flags.def" 512 | #undef X 513 | }; 514 | std::multimap capabilities2_flag_names { 515 | #define X(a,b) ENUM_STRING_PAIR(a) 516 | #include "defs/dds/caps_2_flags.def" 517 | #undef X 518 | }; 519 | enum TextureDimension { 520 | #define X(a,b) ENUM_DEF(a,b) 521 | #include "defs/dds/texture_dimension.def" 522 | #undef X 523 | }; 524 | std::multimap resource_dimension_names { 525 | #define X(a,b) ENUM_STRING_PAIR(a) 526 | #include "defs/dds/texture_dimension.def" 527 | #undef X 528 | }; 529 | enum TextureMiscFlags { 530 | #define X(a,b) ENUM_DEF(a,b) 531 | #include "defs/dds/texture_misc_flags.def" 532 | #undef X 533 | }; 534 | std::multimap texture_misc_flag_names { 535 | #define X(a,b) ENUM_STRING_PAIR(a) 536 | #include "defs/dds/texture_misc_flags.def" 537 | #undef X 538 | }; 539 | enum TextureMiscFlags2 { 540 | #define X(a,b) ENUM_DEF(a,b) 541 | #include "defs/dds/texture_misc_flags_2.def" 542 | #undef X 543 | }; 544 | std::multimap texture_misc_flag_2_names { 545 | #define X(a,b) ENUM_STRING_PAIR(a) 546 | #include "defs/dds/texture_misc_flags_2.def" 547 | #undef X 548 | }; 549 | enum D3DFormat { 550 | #define X(a,b) ENUM_DEF(a,b) 551 | #include "defs/dds/d3d_formats.def" 552 | #undef X 553 | }; 554 | std::multimap d3d_format_names { 555 | #define X(a,b) ENUM_STRING_PAIR(a) 556 | #include "defs/dds/d3d_formats.def" 557 | #undef X 558 | }; 559 | enum DXGIFormat { 560 | #define X(a,b) ENUM_DEF(a,b) 561 | #include "defs/dds/dxgi_format.def" 562 | #undef X 563 | }; 564 | std::multimap dxgi_format_names { 565 | #define X(a,b) ENUM_STRING_PAIR(a) 566 | #include "defs/dds/dxgi_format.def" 567 | #undef X 568 | }; 569 | std::string PrintPixelFormatFlagNames(unsigned int flags) { 570 | std::string output; 571 | #define X(a,b) ENUM_APPEND_TO_STRING(a,pixel_format_flag_names) 572 | #include "defs/dds/pixel_format_flags.def" 573 | #undef X 574 | RemoveTrailingCharacter(output,'|'); 575 | return output; 576 | }; 577 | std::string PrintDDSFlagNames(unsigned int flags) { 578 | std::string output; 579 | #define X(a,b) ENUM_APPEND_TO_STRING(a,dds_flag_names) 580 | #include "defs/dds/dds_flags.def" 581 | #undef X 582 | RemoveTrailingCharacter(output,'|'); 583 | return output; 584 | }; 585 | std::string PrintCaps1FlagNames(unsigned int flags) { 586 | std::string output; 587 | #define X(a,b) ENUM_APPEND_TO_STRING(a,capabilities1_flag_names) 588 | #include "defs/dds/caps_1_flags.def" 589 | #undef X 590 | RemoveTrailingCharacter(output,'|'); 591 | return output; 592 | } 593 | std::string PrintCaps2FlagNames(unsigned int flags) { 594 | std::string output; 595 | #define X(a,b) ENUM_APPEND_TO_STRING(a,capabilities2_flag_names) 596 | #include "defs/dds/caps_2_flags.def" 597 | #undef X 598 | RemoveTrailingCharacter(output,'|'); 599 | return output; 600 | } 601 | std::string PrintD3DFormatFlagNames(unsigned int flags) { 602 | std::string output; 603 | #define X(a,b) ENUM_APPEND_TO_STRING(a,d3d_format_names) 604 | #include "defs/dds/d3d_formats.def" 605 | #undef X 606 | RemoveTrailingCharacter(output,'|'); 607 | return output; 608 | } 609 | std::string PrintDXGIFormatFlagNames(unsigned int flags) { 610 | std::string output; 611 | #define X(a,b) ENUM_APPEND_TO_STRING(a,dxgi_format_names) 612 | #include "defs/dds/dxgi_format.def" 613 | #undef X 614 | RemoveTrailingCharacter(output,'|'); 615 | return output; 616 | } 617 | std::string PrintResourceDimensionFlagNames(unsigned int flags) { 618 | std::string output; 619 | #define X(a,b) ENUM_APPEND_TO_STRING(a,resource_dimension_names) 620 | #include "defs/dds/texture_dimension.def" 621 | #undef X 622 | RemoveTrailingCharacter(output,'|'); 623 | return output; 624 | } 625 | std::string PrintTexMiscFlagNames(unsigned int flags) { 626 | std::string output; 627 | #define X(a,b) ENUM_APPEND_TO_STRING(a,texture_misc_flag_names) 628 | #include "defs/dds/texture_misc_flags.def" 629 | #undef X 630 | RemoveTrailingCharacter(output,'|'); 631 | return output; 632 | } 633 | std::string PrintTexMisc2FlagNames(unsigned int flags) { 634 | std::string output; 635 | #define X(a,b) ENUM_APPEND_TO_STRING(a,texture_misc_flag_2_names) 636 | #include "defs/dds/texture_misc_flags_2.def" 637 | #undef X 638 | RemoveTrailingCharacter(output,'|'); 639 | return output; 640 | } 641 | 642 | static const std::uint32_t kExpectedPixelFormatSize = 32; 643 | static const std::uint32_t kIdentifier = 0x20534444; // "DDS " 644 | static const std::uint32_t kExpectedDDSSize = 124; 645 | 646 | std::vector column_names { 647 | "Pixel format (size)", 648 | "Pixel format (flags)", 649 | "Pixel format (fourcc)", 650 | "Pixel format (bit count)", 651 | "Pixel format (red mask)", 652 | "Pixel format (blue mask)", 653 | "Pixel format (green mask)", 654 | "Pixel format (alpha mask)", 655 | "Size", 656 | "Flags", 657 | "Width", 658 | "Height", 659 | "Depth", 660 | "Number of MIP maps", 661 | "Pitch or linear size", 662 | "Capabilities (1)", 663 | "Capabilities (2)", 664 | "Capabilities (3)", 665 | "Capabilities (4)", 666 | "Reserved", 667 | "Reserved (2)", 668 | "DX10: Format", 669 | "DX10: Dimension", 670 | "DX10: Array size", 671 | "DX10: Flags (1)", 672 | "DX10: Flags (2)" 673 | }; 674 | } 675 | class DDSHeader: public IHeader { 676 | public: 677 | virtual bool LoadHeader(std::ifstream& file, std::string& error_string) { 678 | HEADER_PRE_LOAD(file) 679 | std::uint32_t identifier; 680 | file.read(reinterpret_cast(&identifier), sizeof(identifier)); 681 | if(identifier != DDSInfo::kIdentifier) { 682 | error_string = "Header does not contain a valid DDS identifier"; 683 | return false; 684 | } 685 | bool has_dx10_header = (impl_.pixel_format.flags & DDSInfo::e_fourCC) && 686 | impl_.pixel_format.fourcc == MakeFourCC('D', 'X', '1', '0'); 687 | if(has_dx10_header) 688 | file.read(reinterpret_cast(&this->dx10_impl_), sizeof(this->dx10_impl_)); 689 | file.read(reinterpret_cast(&this->impl_), sizeof(this->impl_)); 690 | HEADER_POST_LOAD(file) 691 | } 692 | std::vector ToStringArray() { 693 | std::vector output; 694 | const auto& impl(this->impl_); 695 | const auto& dx10_impl(this->dx10_impl_); 696 | output.push_back(std::to_string(impl.pixel_format.size)); 697 | output.push_back(DDSInfo::PrintPixelFormatFlagNames(impl.pixel_format.flags)); 698 | output.push_back(FourCCToString(impl.pixel_format.fourcc)); 699 | output.push_back(std::to_string(impl.pixel_format.bit_count)); 700 | output.push_back(impl.pixel_format.red_mask==0?"False":"True"); 701 | output.push_back(impl.pixel_format.blue_mask==0?"False":"True"); 702 | output.push_back(impl.pixel_format.green_mask==0?"False":"True"); 703 | output.push_back(impl.pixel_format.alpha_mask==0?"False":"True"); 704 | output.push_back(std::to_string(impl.size)); 705 | output.push_back(DDSInfo::PrintDDSFlagNames(impl.flags)); 706 | output.push_back(std::to_string(impl.width)); 707 | output.push_back(std::to_string(impl.height)); 708 | output.push_back(std::to_string(impl.depth)); 709 | output.push_back(std::to_string(impl.mip_map_count)); 710 | output.push_back(std::to_string(impl.pitch_or_linear_size)); 711 | output.push_back(DDSInfo::PrintCaps1FlagNames(impl.capabilities1)); 712 | output.push_back(DDSInfo::PrintCaps2FlagNames(impl.capabilities2)); 713 | output.push_back(std::to_string(impl.capabilities3)); 714 | output.push_back(std::to_string(impl.capabilities4)); 715 | std::string reserved; 716 | for(auto& value: impl.reserved) { 717 | reserved.append(std::to_string(value) + ':'); 718 | } 719 | RemoveTrailingCharacter(reserved,':'); 720 | output.push_back(reserved); 721 | output.push_back(std::to_string(impl.reserved2)); 722 | // DX 10 723 | output.push_back(DDSInfo::PrintDXGIFormatFlagNames(dx10_impl.dxgi_format)); 724 | output.push_back(DDSInfo::PrintResourceDimensionFlagNames(dx10_impl.resource_dimension)); 725 | output.push_back(std::to_string(dx10_impl.array_size)); 726 | output.push_back(DDSInfo::PrintTexMiscFlagNames(dx10_impl.misc_flags)); 727 | output.push_back(DDSInfo::PrintTexMisc2FlagNames(dx10_impl.misc_flags_2)); 728 | return output; 729 | } 730 | virtual std::string ToString() { 731 | std::string output(""); 732 | const auto& variable_strings(this->ToStringArray()); 733 | for(unsigned int index=0; indexToStringArray()); 740 | for(const auto& variable_string:variable_strings) 741 | output.append(variable_string + ','); 742 | return output; 743 | } 744 | public: 745 | private: 746 | struct PixelFormat { 747 | std::uint32_t size; 748 | std::uint32_t flags; 749 | std::uint32_t fourcc; 750 | std::uint32_t bit_count; 751 | std::uint32_t red_mask; 752 | std::uint32_t green_mask; 753 | std::uint32_t blue_mask; 754 | std::uint32_t alpha_mask; 755 | }; 756 | #pragma pack(4) 757 | struct Impl { 758 | std::uint32_t size; 759 | std::uint32_t flags; 760 | std::uint32_t height; 761 | std::uint32_t width; 762 | std::uint32_t pitch_or_linear_size; 763 | std::uint32_t depth; 764 | std::uint32_t mip_map_count; 765 | std::uint32_t reserved[11]; 766 | PixelFormat pixel_format; 767 | std::uint32_t capabilities1; 768 | std::uint32_t capabilities2; 769 | std::uint32_t capabilities3; 770 | std::uint32_t capabilities4; 771 | std::uint32_t reserved2; 772 | }impl_; 773 | #pragma pack(4) 774 | struct FileHeaderDX10 { 775 | std::uint32_t dxgi_format; 776 | std::uint32_t resource_dimension; 777 | std::uint32_t misc_flags; 778 | std::uint32_t array_size; 779 | std::uint32_t misc_flags_2; 780 | }dx10_impl_; 781 | }; 782 | --------------------------------------------------------------------------------