EDriverFeatures.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. // Copyright (C) 2002-2012 Nikolaus Gebhardt
  2. // This file is part of the "Irrlicht Engine".
  3. // For conditions of distribution and use, see copyright notice in irrlicht.h
  4. #ifndef IRR_E_DRIVER_FEATURES_H_INCLUDED
  5. #define IRR_E_DRIVER_FEATURES_H_INCLUDED
  6. namespace irr
  7. {
  8. namespace video
  9. {
  10. //! enumeration for querying features of the video driver.
  11. enum E_VIDEO_DRIVER_FEATURE
  12. {
  13. //! Is driver able to render to a surface?
  14. EVDF_RENDER_TO_TARGET = 0,
  15. //! Is hardware transform and lighting supported?
  16. EVDF_HARDWARE_TL,
  17. //! Are multiple textures per material possible?
  18. EVDF_MULTITEXTURE,
  19. //! Is driver able to render with a bilinear filter applied?
  20. EVDF_BILINEAR_FILTER,
  21. //! Can the driver handle mip maps?
  22. EVDF_MIP_MAP,
  23. //! Can the driver update mip maps automatically?
  24. EVDF_MIP_MAP_AUTO_UPDATE,
  25. //! Are stencilbuffers switched on and does the device support stencil buffers?
  26. EVDF_STENCIL_BUFFER,
  27. //! Is Vertex Shader 1.1 supported?
  28. EVDF_VERTEX_SHADER_1_1,
  29. //! Is Vertex Shader 2.0 supported?
  30. EVDF_VERTEX_SHADER_2_0,
  31. //! Is Vertex Shader 3.0 supported?
  32. EVDF_VERTEX_SHADER_3_0,
  33. //! Is Pixel Shader 1.1 supported?
  34. EVDF_PIXEL_SHADER_1_1,
  35. //! Is Pixel Shader 1.2 supported?
  36. EVDF_PIXEL_SHADER_1_2,
  37. //! Is Pixel Shader 1.3 supported?
  38. EVDF_PIXEL_SHADER_1_3,
  39. //! Is Pixel Shader 1.4 supported?
  40. EVDF_PIXEL_SHADER_1_4,
  41. //! Is Pixel Shader 2.0 supported?
  42. EVDF_PIXEL_SHADER_2_0,
  43. //! Is Pixel Shader 3.0 supported?
  44. EVDF_PIXEL_SHADER_3_0,
  45. //! Are ARB vertex programs v1.0 supported?
  46. EVDF_ARB_VERTEX_PROGRAM_1,
  47. //! Are ARB fragment programs v1.0 supported?
  48. EVDF_ARB_FRAGMENT_PROGRAM_1,
  49. //! Is GLSL supported?
  50. EVDF_ARB_GLSL,
  51. //! Is HLSL supported?
  52. EVDF_HLSL,
  53. //! Are non-square textures supported?
  54. EVDF_TEXTURE_NSQUARE,
  55. //! Are non-power-of-two textures supported?
  56. EVDF_TEXTURE_NPOT,
  57. //! Are framebuffer objects supported?
  58. EVDF_FRAMEBUFFER_OBJECT,
  59. //! Are vertex buffer objects supported?
  60. EVDF_VERTEX_BUFFER_OBJECT,
  61. //! Supports Alpha To Coverage
  62. EVDF_ALPHA_TO_COVERAGE,
  63. //! Supports Color masks (disabling color planes in output)
  64. EVDF_COLOR_MASK,
  65. //! Supports multiple render targets at once
  66. EVDF_MULTIPLE_RENDER_TARGETS,
  67. //! Supports separate blend settings for multiple render targets
  68. EVDF_MRT_BLEND,
  69. //! Supports separate color masks for multiple render targets
  70. EVDF_MRT_COLOR_MASK,
  71. //! Supports separate blend functions for multiple render targets
  72. EVDF_MRT_BLEND_FUNC,
  73. //! Supports geometry shaders
  74. EVDF_GEOMETRY_SHADER,
  75. //! Supports occlusion queries
  76. EVDF_OCCLUSION_QUERY,
  77. //! Supports polygon offset/depth bias for avoiding z-fighting
  78. EVDF_POLYGON_OFFSET,
  79. //! Support for different blend functions. Without, only ADD is available
  80. EVDF_BLEND_OPERATIONS,
  81. //! Support for separate blending for RGB and Alpha.
  82. EVDF_BLEND_SEPARATE,
  83. //! Support for texture coord transformation via texture matrix
  84. EVDF_TEXTURE_MATRIX,
  85. //! Support for DXTn compressed textures.
  86. EVDF_TEXTURE_COMPRESSED_DXT,
  87. //! Support for PVRTC compressed textures.
  88. EVDF_TEXTURE_COMPRESSED_PVRTC,
  89. //! Support for PVRTC2 compressed textures.
  90. EVDF_TEXTURE_COMPRESSED_PVRTC2,
  91. //! Support for ETC1 compressed textures.
  92. EVDF_TEXTURE_COMPRESSED_ETC1,
  93. //! Support for ETC2 compressed textures.
  94. EVDF_TEXTURE_COMPRESSED_ETC2,
  95. //! Support for cube map textures.
  96. EVDF_TEXTURE_CUBEMAP,
  97. //! Support for filtering across different faces of the cubemap
  98. EVDF_TEXTURE_CUBEMAP_SEAMLESS,
  99. //! Support for clamping vertices beyond far-plane to depth instead of capping them.
  100. EVDF_DEPTH_CLAMP,
  101. //! Only used for counting the elements of this enum
  102. EVDF_COUNT
  103. };
  104. } // end namespace video
  105. } // end namespace irr
  106. #endif