text: //==================================================================================
  // Copyright (c) 2016 , Advanced Micro Devices, Inc.  All rights reserved.
  //
  /// \author AMD Developer Tools Team
  /// \file apDefaultTextureNames.h
  ///
  //==================================================================================
  
  //------------------------------ apDefaultTextureNames.h ------------------------------
  
  #ifndef __APDEFAULTTEXTURENAMES
  #define __APDEFAULTTEXTURENAMES
  
  // C / C++:
  #include "limits.h"
  
  // OpenGL:
  #include <AMDTOSAPIWrappers/Include/oaOpenGLIncludes.h>
  
  // Local:
  #include <AMDTAPIClasses/Include/apTextureType.h>
  #include <AMDTAPIClasses/Include/apAPIClassesDLLBuild.h>
  
  
  // ---- What are default texture names? ---------------
  //
  //  In OpenGL you can use a bind target without first binding a texture object to it.
  //  When doing so, OpenGL will use the default texture object for this target.
  //  But, default texture object does not have OpenGL names.
  //  The apDefaultTextureNames enum and the below aid functions assigns
  //  pseudo texture object names to the these default textures.
  
  
  AP_API bool apIsDefaultTextureName(GLuint textureName);
  AP_API bool apGetDefaultTextureName(GLenum textureUnitName, apTextureType textureType, GLuint& textureName);
  AP_API bool apGetDefaultTextureUnitAndType(GLuint textureName, GLenum& textureUnitName, apTextureType& textureType);
  
  // The default texture names offset from INT_MAX:
  #define AP_DEFAULT_TEXTURE_NAMES_OFFSET 15000
  
  // The amount of default texture names for each bind target:
  #define AP_AMOUNT_OF_DEFAULT_TEX_NAME_PER_BIND_TARGETS 32
  
  
  // Assigns pseudo texture object names to the default OpenGL bind target textures.
  enum apDefaultTextureNames
  {
      AP_UNIT0_DEFAULT_1D_TEXTURE_NAME = INT_MAX - AP_DEFAULT_TEXTURE_NAMES_OFFSET,
      AP_UNIT0_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT0_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT0_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT0_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT1_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT1_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT1_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT1_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT1_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT2_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT2_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT2_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT2_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT2_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT3_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT3_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT3_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT3_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT3_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT4_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT4_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT4_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT4_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT4_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT5_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT5_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT5_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT5_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT5_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT6_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT6_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT6_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT6_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT6_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT7_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT7_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT7_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT7_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT7_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT8_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT8_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT8_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT8_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT8_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT9_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT9_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT9_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT9_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT9_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT10_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT10_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT10_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT10_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT10_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT11_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT11_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT11_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT11_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT11_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT12_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT12_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT12_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT12_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT12_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT13_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT13_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT13_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT13_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT13_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT14_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT14_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT14_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT14_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT14_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT15_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT15_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT15_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT15_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT15_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT16_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT16_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT16_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT16_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT16_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT17_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT17_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT17_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT17_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT17_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT18_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT18_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT18_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT18_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT18_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT19_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT19_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT19_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT19_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT19_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT20_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT20_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT20_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT20_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT20_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT21_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT21_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT21_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT21_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT21_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT22_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT22_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT22_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT22_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT22_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT23_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT23_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT23_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT23_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT23_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT24_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT24_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT24_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT24_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT24_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT25_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT25_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT25_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT25_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT25_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT26_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT26_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT26_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT26_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT26_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT27_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT27_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT27_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT27_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT27_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT28_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT28_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT28_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT28_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT28_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT29_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT29_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT29_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT29_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT29_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT30_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT30_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT30_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT30_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT30_DEFAULT_TEXTURE_RECTANGLE_NAME,
  
      AP_UNIT31_DEFAULT_1D_TEXTURE_NAME,
      AP_UNIT31_DEFAULT_2D_TEXTURE_NAME,
      AP_UNIT31_DEFAULT_3D_TEXTURE_NAME,
      AP_UNIT31_DEFAULT_CUBE_MAP_TEXTURE_NAME,
      AP_UNIT31_DEFAULT_TEXTURE_RECTANGLE_NAME
  };
  
  
  #endif  // __APDEFAULTTEXTURENAMES
  