Diligent Engine  v.2.4.g
GLTypeConversions.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2019-2021 Diligent Graphics LLC
3  * Copyright 2015-2019 Egor Yusov
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * In no event and under no legal theory, whether in tort (including negligence),
18  * contract, or otherwise, unless required by applicable law (such as deliberate
19  * and grossly negligent acts) or agreed to in writing, shall any Contributor be
20  * liable for any damages, including any direct, indirect, special, incidental,
21  * or consequential damages of any character arising as a result of this License or
22  * out of the use or inability to use the software (including but not limited to damages
23  * for loss of goodwill, work stoppage, computer failure or malfunction, or any and
24  * all other commercial damages or losses), even if such Contributor has been advised
25  * of the possibility of such damages.
26  */
27 
28 #pragma once
29 
30 namespace Diligent
31 {
32 
34 {
35  // clang-format off
36  static constexpr GLenum PrimTopologyToGLTopologyMap[] =
37  {
38  0, // PRIMITIVE_TOPOLOGY_UNDEFINED = 0
39  GL_TRIANGLES, // PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
40  GL_TRIANGLE_STRIP, // PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
41  GL_POINTS, // PRIMITIVE_TOPOLOGY_POINT_LIST
42  GL_LINES, // PRIMITIVE_TOPOLOGY_LINE_LIST
43  GL_LINE_STRIP // PRIMITIVE_TOPOLOGY_LINE_STRIP
44  };
45  // clang-format on
46 
47  VERIFY_EXPR(PrimTopology < _countof(PrimTopologyToGLTopologyMap));
48  return PrimTopologyToGLTopologyMap[PrimTopology];
49 }
50 
51 inline GLenum TypeToGLType(VALUE_TYPE Value)
52 {
53  // clang-format off
54  static constexpr GLenum TypeToGLTypeMap[] =
55  {
56  0, // VT_UNDEFINED = 0
57  GL_BYTE, // VT_INT8
58  GL_SHORT, // VT_INT16
59  GL_INT, // VT_INT32
60  GL_UNSIGNED_BYTE, // VT_UINT8
61  GL_UNSIGNED_SHORT, // VT_UINT16
62  GL_UNSIGNED_INT, // VT_UINT32
63  GL_HALF_FLOAT, // VT_FLOAT16
64  GL_FLOAT // VT_FLOAT32
65  };
66  // clang-format on
67 
68  VERIFY_EXPR(Value < _countof(TypeToGLTypeMap));
69  return TypeToGLTypeMap[Value];
70 }
71 
72 inline GLenum UsageToGLUsage(const BufferDesc& Desc)
73 {
74  static_assert(USAGE_NUM_USAGES == 5, "Please update this function to handle the new usage type");
75 
76  // http://www.informit.com/articles/article.aspx?p=2033340&seqNum=2
77  // https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glBufferData.xml
78  switch (Desc.Usage)
79  {
80  // STATIC: The data store contents will be modified once and used many times.
81  // STREAM: The data store contents will be modified once and used at MOST a few times.
82  // DYNAMIC: The data store contents will be modified repeatedly and used many times.
83 
84  // clang-format off
85  case USAGE_IMMUTABLE: return GL_STATIC_DRAW;
86  case USAGE_DEFAULT: return GL_STATIC_DRAW;
87  case USAGE_UNIFIED: return GL_STATIC_DRAW;
88  case USAGE_DYNAMIC: return GL_DYNAMIC_DRAW;
89  case USAGE_STAGING:
91  return GL_STATIC_READ;
92  else
93  return GL_STATIC_COPY;
94 
95  default: UNEXPECTED( "Unknow usage" ); return 0;
96  // clang-format on
97  }
98 }
99 
100 inline void FilterTypeToGLFilterType(FILTER_TYPE Filter, GLenum& GLFilter, Bool& bIsAnisotropic, Bool& bIsComparison)
101 {
102  switch (Filter)
103  {
104  case FILTER_TYPE_UNKNOWN:
105  UNEXPECTED("Unspecified filter type");
106  bIsAnisotropic = false;
107  bIsComparison = false;
108  GLFilter = GL_NEAREST;
109  break;
110 
111  case FILTER_TYPE_POINT:
112  bIsAnisotropic = false;
113  bIsComparison = false;
114  GLFilter = GL_NEAREST;
115  break;
116 
117  case FILTER_TYPE_LINEAR:
118  bIsAnisotropic = false;
119  bIsComparison = false;
120  GLFilter = GL_LINEAR;
121  break;
122 
124  bIsAnisotropic = true;
125  bIsComparison = false;
126  GLFilter = GL_LINEAR;
127  break;
128 
130  bIsAnisotropic = false;
131  bIsComparison = true;
132  GLFilter = GL_NEAREST;
133  break;
134 
136  bIsAnisotropic = false;
137  bIsComparison = true;
138  GLFilter = GL_LINEAR;
139  break;
140 
142  bIsAnisotropic = true;
143  bIsComparison = true;
144  GLFilter = GL_LINEAR;
145  break;
146 
147  default:
148  UNEXPECTED("Unknown filter type");
149  bIsAnisotropic = false;
150  bIsComparison = false;
151  GLFilter = GL_NEAREST;
152  break;
153  }
154 }
155 
156 inline GLenum CorrectGLTexFormat(GLenum GLTexFormat, Uint32 BindFlags)
157 {
158  if (BindFlags & BIND_DEPTH_STENCIL)
159  {
160  if (GLTexFormat == GL_R32F)
161  GLTexFormat = GL_DEPTH_COMPONENT32F;
162  if (GLTexFormat == GL_R16)
163  GLTexFormat = GL_DEPTH_COMPONENT16;
164  }
165  return GLTexFormat;
166 }
167 
168 
170 {
171  // clang-format off
172  static constexpr GLenum TexAddressModeToGLAddressModeMap[] =
173  {
174  0, // TEXTURE_ADDRESS_UNKNOWN = 0
175  GL_REPEAT, // TEXTURE_ADDRESS_WRAP
176  GL_MIRRORED_REPEAT, // TEXTURE_ADDRESS_MIRROR
177  GL_CLAMP_TO_EDGE, // TEXTURE_ADDRESS_CLAMP
178  GL_CLAMP_TO_BORDER, // TEXTURE_ADDRESS_BORDER
179 
180  // Only available in OpenGL 4.4+
181  // This mode seems to be different from D3D11_TEXTURE_ADDRESS_MIRROR_ONCE
182  // The texture coord is clamped to the [-1, 1] range, but mirrors the
183  // negative direction with the positive. Basically, it acts as
184  // GL_CLAMP_TO_EDGE except that it takes the absolute value of the texture
185  // coordinates before clamping.
186  GL_MIRROR_CLAMP_TO_EDGE // TEXTURE_ADDRESS_MIRROR_ONCE
187  };
188  // clang-format on
189 
190  VERIFY_EXPR(Mode < _countof(TexAddressModeToGLAddressModeMap));
191  return TexAddressModeToGLAddressModeMap[Mode];
192 }
193 
195 {
196  // clang-format off
197  static constexpr GLenum CompareFuncToGLCompareFuncMap[] =
198  {
199  0, // COMPARISON_FUNC_UNKNOWN = 0
200  GL_NEVER, // COMPARISON_FUNC_NEVER
201  GL_LESS, // COMPARISON_FUNC_LESS
202  GL_EQUAL, // COMPARISON_FUNC_EQUAL
203  GL_LEQUAL, // COMPARISON_FUNC_LESS_EQUAL
204  GL_GREATER, // COMPARISON_FUNC_GREATER
205  GL_NOTEQUAL, // COMPARISON_FUNC_NOT_EQUAL
206  GL_GEQUAL, // COMPARISON_FUNC_GREATER_EQUAL
207  GL_ALWAYS // COMPARISON_FUNC_ALWAYS
208  };
209  // clang-format on
210 
211  VERIFY_EXPR(Func < _countof(CompareFuncToGLCompareFuncMap));
212  return CompareFuncToGLCompareFuncMap[Func];
213 }
214 
216 {
217  GLenum PixelFormat = 0;
218  GLenum DataType = 0;
220 
221  NativePixelAttribs() noexcept {}
222 
223  explicit NativePixelAttribs(GLenum _PixelFormat, GLenum _DataType, Bool _IsCompressed = False) noexcept :
224  PixelFormat{_PixelFormat},
225  DataType{_DataType},
226  IsCompressed{_IsCompressed}
227  {}
228 };
229 
230 inline Uint32 GetNumPixelFormatComponents(GLenum Format)
231 {
232  switch (Format)
233  {
234  case GL_RGBA:
235  case GL_RGBA_INTEGER:
236  return 4;
237 
238  case GL_RGB:
239  case GL_RGB_INTEGER:
240  return 3;
241 
242  case GL_RG:
243  case GL_RG_INTEGER:
244  return 2;
245 
246  case GL_RED:
247  case GL_RED_INTEGER:
248  case GL_DEPTH_COMPONENT:
249  case GL_DEPTH_STENCIL:
250  return 1;
251 
252  default: UNEXPECTED("Unknonw pixel format"); return 0;
253  };
254 }
255 
257 {
258  switch (Type)
259  {
260  // clang-format off
261  case GL_FLOAT: return sizeof(GLfloat);
262 
264  case GL_UNSIGNED_INT_2_10_10_10_REV:
265  case GL_UNSIGNED_INT_10F_11F_11F_REV:
266  case GL_UNSIGNED_INT_24_8:
267  case GL_UNSIGNED_INT_5_9_9_9_REV:
268  case GL_UNSIGNED_INT: return sizeof(GLuint);
269 
270  case GL_INT: return sizeof(GLint);
271  case GL_HALF_FLOAT: return sizeof(GLhalf);
272 
273  case GL_UNSIGNED_SHORT_5_6_5:
275  case GL_UNSIGNED_SHORT_5_5_5_1:
277  case GL_UNSIGNED_SHORT: return sizeof(GLushort);
278 
279  case GL_SHORT: return sizeof(GLshort);
280  case GL_UNSIGNED_BYTE: return sizeof(GLubyte);
281  case GL_BYTE: return sizeof(GLbyte);
282 
283  case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:return sizeof(GLfloat) + sizeof(GLuint);
284 
285  default: UNEXPECTED( "Unknonw pixel type" ); return 0;
286  // clang-format on
287  }
288 }
289 
290 inline GLenum AccessFlags2GLAccess(UAV_ACCESS_FLAG UAVAccessFlags)
291 {
292  // clang-format off
293  static constexpr GLenum AccessFlags2GLAccessMap[] =
294  {
295  0, // UAV_ACCESS_UNSPECIFIED == 0
296  GL_READ_ONLY, // UAV_ACCESS_FLAG_READ
297  GL_WRITE_ONLY, // UAV_ACCESS_FLAG_WRITE
298  GL_READ_WRITE // UAV_ACCESS_FLAG_READ_WRITE
299  };
300  // clang-format on
301 
302  VERIFY_EXPR(UAVAccessFlags < _countof(AccessFlags2GLAccessMap));
303  return AccessFlags2GLAccessMap[UAVAccessFlags];
304 }
305 
306 inline GLenum StencilOp2GlStencilOp(STENCIL_OP StencilOp)
307 {
308  // clang-format off
309  static constexpr GLenum StencilOp2GlStencilOpMap[] =
310  {
311  0, // STENCIL_OP_UNDEFINED == 0
312  GL_KEEP, // STENCIL_OP_KEEP
313  GL_ZERO, // STENCIL_OP_ZERO
314  GL_REPLACE, // STENCIL_OP_REPLACE
315  GL_INCR, // STENCIL_OP_INCR_SAT
316  GL_DECR, // STENCIL_OP_DECR_SAT
317  GL_INVERT, // STENCIL_OP_INVERT
318  GL_INCR_WRAP, // STENCIL_OP_INCR_WRAP
319  GL_DECR_WRAP, // STENCIL_OP_DECR_WRAP
320  };
321  // clang-format on
322 
323  VERIFY_EXPR(StencilOp < _countof(StencilOp2GlStencilOpMap));
324  return StencilOp2GlStencilOpMap[StencilOp];
325 }
326 
328 {
329  // clang-format off
330  static constexpr GLenum BlendFactor2GLBlendMap[] =
331  {
332  0, // BLEND_FACTOR_UNDEFINED == 0
333  GL_ZERO, // BLEND_FACTOR_ZERO
334  GL_ONE, // BLEND_FACTOR_ONE
335  GL_SRC_COLOR, // BLEND_FACTOR_SRC_COLOR
336  GL_ONE_MINUS_SRC_COLOR, // BLEND_FACTOR_INV_SRC_COLOR
337  GL_SRC_ALPHA, // BLEND_FACTOR_SRC_ALPHA
338  GL_ONE_MINUS_SRC_ALPHA, // BLEND_FACTOR_INV_SRC_ALPHA
339  GL_DST_ALPHA, // BLEND_FACTOR_DEST_ALPHA
340  GL_ONE_MINUS_DST_ALPHA, // BLEND_FACTOR_INV_DEST_ALPHA
341  GL_DST_COLOR, // BLEND_FACTOR_DEST_COLOR
342  GL_ONE_MINUS_DST_COLOR, // BLEND_FACTOR_INV_DEST_COLOR
343  GL_SRC_ALPHA_SATURATE, // BLEND_FACTOR_SRC_ALPHA_SAT
344  GL_CONSTANT_COLOR, // BLEND_FACTOR_BLEND_FACTOR
345  GL_ONE_MINUS_CONSTANT_COLOR, // BLEND_FACTOR_INV_BLEND_FACTOR
346  GL_SRC1_COLOR, // BLEND_FACTOR_SRC1_COLOR
347  GL_ONE_MINUS_SRC1_COLOR, // BLEND_FACTOR_INV_SRC1_COLOR
348  GL_SRC1_ALPHA, // BLEND_FACTOR_SRC1_ALPHA
349  GL_ONE_MINUS_SRC1_ALPHA // BLEND_FACTOR_INV_SRC1_ALPHA
350  };
351  // clang-format on
352 
353  VERIFY_EXPR(bf < _countof(BlendFactor2GLBlendMap));
354  return BlendFactor2GLBlendMap[bf];
355 }
356 
358 {
359  // clang-format off
360  static constexpr GLenum BlendOperation2GLBlendOpMap[] =
361  {
362  0, // BLEND_OPERATION_UNDEFINED
363  GL_FUNC_ADD, // BLEND_OPERATION_ADD
364  GL_FUNC_SUBTRACT, // BLEND_OPERATION_SUBTRACT
365  GL_FUNC_REVERSE_SUBTRACT, // BLEND_OPERATION_REV_SUBTRACT
366  GL_MIN, // BLEND_OPERATION_MIN
367  GL_MAX // BLEND_OPERATION_MAX
368  };
369  // clang-format on
370 
371  VERIFY_EXPR(BlendOp < _countof(BlendOperation2GLBlendOpMap));
372  return BlendOperation2GLBlendOpMap[BlendOp];
373 }
374 
375 
376 GLenum TexFormatToGLInternalTexFormat(TEXTURE_FORMAT TexFormat, Uint32 BindFlags = 0);
378 
379 NativePixelAttribs GetNativePixelTransferAttribs(TEXTURE_FORMAT TexFormat);
380 GLenum TypeToGLTexFormat(VALUE_TYPE ValType, Uint32 NumComponents, Bool bIsNormalized);
381 
382 void GLTextureTypeToResourceDim(GLenum TextureType, RESOURCE_DIMENSION& ResDim, bool& IsMS);
383 
385 {
386  switch (ShaderType)
387  {
388  // clang-format off
389  case SHADER_TYPE_VERTEX: return GL_VERTEX_SHADER; break;
390  case SHADER_TYPE_PIXEL: return GL_FRAGMENT_SHADER; break;
391  case SHADER_TYPE_GEOMETRY: return GL_GEOMETRY_SHADER; break;
392  case SHADER_TYPE_HULL: return GL_TESS_CONTROL_SHADER; break;
393  case SHADER_TYPE_DOMAIN: return GL_TESS_EVALUATION_SHADER; break;
394  case SHADER_TYPE_COMPUTE: return GL_COMPUTE_SHADER; break;
395  // clang-format on
396  default: return 0;
397  }
398 }
399 
401 {
402  switch (ShaderType)
403  {
404  // clang-format off
405  case SHADER_TYPE_VERTEX: return GL_VERTEX_SHADER_BIT; break;
406  case SHADER_TYPE_PIXEL: return GL_FRAGMENT_SHADER_BIT; break;
407  case SHADER_TYPE_GEOMETRY: return GL_GEOMETRY_SHADER_BIT; break;
408  case SHADER_TYPE_HULL: return GL_TESS_CONTROL_SHADER_BIT; break;
410  case SHADER_TYPE_COMPUTE: return GL_COMPUTE_SHADER_BIT; break;
411  // clang-format on
412  default: return 0;
413  }
414 }
415 
416 SHADER_TYPE GLShaderBitsToShaderTypes(GLenum ShaderBits);
417 
419 
420 } // namespace Diligent
Diligent::NativePixelAttribs
Definition: GLTypeConversions.hpp:215
Diligent::StencilOp2GlStencilOp
GLenum StencilOp2GlStencilOp(STENCIL_OP StencilOp)
Definition: GLTypeConversions.hpp:306
Diligent::USAGE_STAGING
@ USAGE_STAGING
A resource that facilitates transferring data between GPU and CPU. D3D11 Counterpart: D3D11_USAGE_S...
Definition: GraphicsTypes.h:167
Diligent::UAV_ACCESS_FLAG
UAV_ACCESS_FLAG
Describes allowed unordered access view mode.
Definition: TextureView.h:49
Diligent::AccessFlags2GLAccess
GLenum AccessFlags2GLAccess(UAV_ACCESS_FLAG UAVAccessFlags)
Definition: GLTypeConversions.hpp:290
Diligent::WAVE_FEATURE
WAVE_FEATURE
Describes the wave feature types. In Vulkan backend, you should check which features are supported by...
Definition: GraphicsTypes.h:1932
Diligent::SHADER_TYPE_DOMAIN
@ SHADER_TYPE_DOMAIN
Domain (tessellation evaluation) shader.
Definition: GraphicsTypes.h:72
GL_TESS_CONTROL_SHADER_BIT
#define GL_TESS_CONTROL_SHADER_BIT
Definition: GLStubsAndroid.h:232
Diligent::SHADER_TYPE
SHADER_TYPE
Describes the shader type.
Definition: GraphicsTypes.h:65
Diligent::TEXTURE_ADDRESS_MODE
TEXTURE_ADDRESS_MODE
Texture address mode.
Definition: GraphicsTypes.h:889
GL_R16
#define GL_R16
Definition: GLStubsAndroid.h:56
GL_TESS_EVALUATION_SHADER_BIT
#define GL_TESS_EVALUATION_SHADER_BIT
Definition: GLStubsAndroid.h:236
Diligent::GLTextureTypeToResourceDim
void GLTextureTypeToResourceDim(GLenum TextureType, RESOURCE_DIMENSION &ResDim, bool &IsMS)
Definition: GLTypeConversions.cpp:566
Diligent::GetNativePixelTransferAttribs
NativePixelAttribs GetNativePixelTransferAttribs(TEXTURE_FORMAT TexFormat)
Definition: GLTypeConversions.cpp:262
GL_TESS_EVALUATION_SHADER
#define GL_TESS_EVALUATION_SHADER
Definition: GLStubsAndroid.h:145
Diligent::ShaderTypeToGLShaderBit
GLenum ShaderTypeToGLShaderBit(SHADER_TYPE ShaderType)
Definition: GLTypeConversions.hpp:400
GL_VERTEX_SHADER_BIT
#define GL_VERTEX_SHADER_BIT
Definition: GLStubsAndroid.h:220
Diligent::FILTER_TYPE
FILTER_TYPE
Filter type.
Definition: GraphicsTypes.h:864
UNEXPECTED
#define UNEXPECTED(...)
Definition: DebugUtilities.hpp:77
Diligent::USAGE_UNIFIED
@ USAGE_UNIFIED
A resource residing in a unified memory (e.g. memory shared between CPU and GPU), that can be read an...
Definition: GraphicsTypes.h:179
GL_SRC1_COLOR
#define GL_SRC1_COLOR
Definition: GLStubsAndroid.h:877
Diligent::PRIMITIVE_TOPOLOGY
PRIMITIVE_TOPOLOGY
Input primitive topology.
Definition: GraphicsTypes.h:989
Diligent::SHADER_TYPE_COMPUTE
@ SHADER_TYPE_COMPUTE
Compute shader.
Definition: GraphicsTypes.h:73
Diligent::GetPixelTypeSize
Uint32 GetPixelTypeSize(GLenum Type)
Definition: GLTypeConversions.hpp:256
GL_ONE_MINUS_SRC1_ALPHA
#define GL_ONE_MINUS_SRC1_ALPHA
Definition: GLStubsAndroid.h:893
GL_WRITE_ONLY
#define GL_WRITE_ONLY
Definition: GLStubsAndroid.h:494
GL_COMPUTE_SHADER
#define GL_COMPUTE_SHADER
Definition: GLStubsAndroid.h:502
Diligent::USAGE_DYNAMIC
@ USAGE_DYNAMIC
A resource that can be read by the GPU and written at least once per frame by the CPU....
Definition: GraphicsTypes.h:161
GL_TESS_CONTROL_SHADER
#define GL_TESS_CONTROL_SHADER
Definition: GLStubsAndroid.h:141
GL_UNSIGNED_SHORT_5_6_5_REV
#define GL_UNSIGNED_SHORT_5_6_5_REV
Definition: GLStubsAndroid.h:120
Diligent::GLSubgroupFeatureBitsToWaveFeatures
WAVE_FEATURE GLSubgroupFeatureBitsToWaveFeatures(GLenum FeatureBits)
Definition: GLTypeConversions.cpp:732
Diligent::PrimitiveTopologyToGLTopology
GLenum PrimitiveTopologyToGLTopology(PRIMITIVE_TOPOLOGY PrimTopology)
Definition: GLTypeConversions.hpp:33
Diligent::BufferDesc::CPUAccessFlags
CPU_ACCESS_FLAGS CPUAccessFlags
CPU access flags or 0 if no CPU access is allowed, see Diligent::CPU_ACCESS_FLAGS for details.
Definition: Buffer.h:92
GL_READ_ONLY
#define GL_READ_ONLY
Definition: GLStubsAndroid.h:490
Diligent::NativePixelAttribs::NativePixelAttribs
NativePixelAttribs() noexcept
Definition: GLTypeConversions.hpp:221
Diligent::GetNumPixelFormatComponents
Uint32 GetNumPixelFormatComponents(GLenum Format)
Definition: GLTypeConversions.hpp:230
GL_MIRROR_CLAMP_TO_EDGE
#define GL_MIRROR_CLAMP_TO_EDGE
Definition: GLStubsAndroid.h:154
Diligent::BlendOperation2GLBlendOp
GLenum BlendOperation2GLBlendOp(BLEND_OPERATION BlendOp)
Definition: GLTypeConversions.hpp:357
Diligent::FilterTypeToGLFilterType
void FilterTypeToGLFilterType(FILTER_TYPE Filter, GLenum &GLFilter, Bool &bIsAnisotropic, Bool &bIsComparison)
Definition: GLTypeConversions.hpp:100
Diligent::BLEND_FACTOR
BLEND_FACTOR
Blend factors.
Definition: BlendState.h:50
GL_ONE_MINUS_SRC1_COLOR
#define GL_ONE_MINUS_SRC1_COLOR
Definition: GLStubsAndroid.h:881
Diligent::FILTER_TYPE_UNKNOWN
@ FILTER_TYPE_UNKNOWN
Unknown filter type.
Definition: GraphicsTypes.h:866
Diligent::FILTER_TYPE_COMPARISON_LINEAR
@ FILTER_TYPE_COMPARISON_LINEAR
Comparison-linear filtering.
Definition: GraphicsTypes.h:871
Diligent::SHADER_TYPE_PIXEL
@ SHADER_TYPE_PIXEL
Pixel (fragment) shader.
Definition: GraphicsTypes.h:69
Diligent::CompareFuncToGLCompareFunc
GLenum CompareFuncToGLCompareFunc(COMPARISON_FUNCTION Func)
Definition: GLTypeConversions.hpp:194
Diligent::NativePixelAttribs::DataType
GLenum DataType
Definition: GLTypeConversions.hpp:218
Diligent::VALUE_TYPE
VALUE_TYPE
Value type.
Definition: GraphicsTypes.h:49
Diligent::FILTER_TYPE_POINT
@ FILTER_TYPE_POINT
Point filtering.
Definition: GraphicsTypes.h:867
Diligent::BlendFactor2GLBlend
GLenum BlendFactor2GLBlend(BLEND_FACTOR bf)
Definition: GLTypeConversions.hpp:327
Diligent::TexFormatToGLInternalTexFormat
GLenum TexFormatToGLInternalTexFormat(TEXTURE_FORMAT TexFormat, Uint32 BindFlags=0)
Definition: GLTypeConversions.cpp:183
NumComponents
D3D10_SB_OPERAND_NUM_COMPONENTS NumComponents
Definition: DXBCUtils.cpp:519
Type
const D3D12_PIPELINE_STATE_SUBOBJECT_TYPE Type
Definition: PipelineStateD3D12Impl.cpp:69
Diligent::Uint32
uint32_t Uint32
32-bit unsigned integer
Definition: BasicTypes.h:51
Diligent::TexAddressModeToGLAddressMode
GLenum TexAddressModeToGLAddressMode(TEXTURE_ADDRESS_MODE Mode)
Definition: GLTypeConversions.hpp:169
Diligent::SHADER_TYPE_HULL
@ SHADER_TYPE_HULL
Hull (tessellation control) shader.
Definition: GraphicsTypes.h:71
Diligent::Bool
bool Bool
Boolean.
Definition: BasicTypes.h:59
Diligent::COMPARISON_FUNCTION
COMPARISON_FUNCTION
Comparison function.
Definition: GraphicsTypes.h:931
GL_COMPUTE_SHADER_BIT
#define GL_COMPUTE_SHADER_BIT
Definition: GLStubsAndroid.h:240
Diligent::SHADER_TYPE_GEOMETRY
@ SHADER_TYPE_GEOMETRY
Geometry shader.
Definition: GraphicsTypes.h:70
Diligent::NativePixelAttribs::NativePixelAttribs
NativePixelAttribs(GLenum _PixelFormat, GLenum _DataType, Bool _IsCompressed=False) noexcept
Definition: GLTypeConversions.hpp:223
Diligent::CPU_ACCESS_READ
@ CPU_ACCESS_READ
A resource can be mapped for reading.
Definition: GraphicsTypes.h:194
Diligent::TypeToGLType
GLenum TypeToGLType(VALUE_TYPE Value)
Definition: GLTypeConversions.hpp:51
Diligent::FILTER_TYPE_ANISOTROPIC
@ FILTER_TYPE_ANISOTROPIC
Anisotropic filtering.
Definition: GraphicsTypes.h:869
GL_UNSIGNED_SHORT_1_5_5_5_REV
#define GL_UNSIGNED_SHORT_1_5_5_5_REV
Definition: GLStubsAndroid.h:132
Diligent::TEXTURE_FORMAT
TEXTURE_FORMAT
Texture formats.
Definition: GraphicsTypes.h:328
Diligent::TypeToGLTexFormat
GLenum TypeToGLTexFormat(VALUE_TYPE ValType, Uint32 NumComponents, Bool bIsNormalized)
Definition: GLTypeConversions.cpp:410
GL_READ_WRITE
#define GL_READ_WRITE
Definition: GLStubsAndroid.h:498
Diligent::BufferDesc
Buffer description.
Definition: Buffer.h:74
GL_CLAMP_TO_BORDER
#define GL_CLAMP_TO_BORDER
Definition: GLStubsAndroid.h:150
Diligent::GetGLShaderType
GLenum GetGLShaderType(SHADER_TYPE ShaderType)
Definition: GLTypeConversions.hpp:384
Diligent::STENCIL_OP
STENCIL_OP
Stencil operation.
Definition: DepthStencilState.h:48
Diligent::SHADER_TYPE_VERTEX
@ SHADER_TYPE_VERTEX
Vertex shader.
Definition: GraphicsTypes.h:68
Diligent::BIND_DEPTH_STENCIL
@ BIND_DEPTH_STENCIL
A texture can be bound as a depth-stencil target.
Definition: GraphicsTypes.h:126
GL_GEOMETRY_SHADER
#define GL_GEOMETRY_SHADER
Definition: GLStubsAndroid.h:137
Diligent::FILTER_TYPE_LINEAR
@ FILTER_TYPE_LINEAR
Linear filtering.
Definition: GraphicsTypes.h:868
Diligent::FILTER_TYPE_COMPARISON_ANISOTROPIC
@ FILTER_TYPE_COMPARISON_ANISOTROPIC
Comparison-anisotropic filtering.
Definition: GraphicsTypes.h:872
GL_FRAGMENT_SHADER_BIT
#define GL_FRAGMENT_SHADER_BIT
Definition: GLStubsAndroid.h:224
VERIFY_EXPR
#define VERIFY_EXPR(...)
Definition: DebugUtilities.hpp:79
Diligent::BLEND_OPERATION
BLEND_OPERATION
Blending operation.
Definition: BlendState.h:138
GL_GEOMETRY_SHADER_BIT
#define GL_GEOMETRY_SHADER_BIT
Definition: GLStubsAndroid.h:228
Diligent::GLInternalTexFormatToTexFormat
TEXTURE_FORMAT GLInternalTexFormatToTexFormat(GLenum GlFormat)
Definition: GLTypeConversions.cpp:256
Diligent::BufferDesc::Usage
USAGE Usage
Buffer usage, see Diligent::USAGE for details.
Definition: Buffer.h:88
_countof
#define _countof(_Array)
Definition: AndroidPlatformDefinitions.h:38
Diligent::USAGE_NUM_USAGES
@ USAGE_NUM_USAGES
Helper value indicating the total number of elements in the enum.
Definition: GraphicsTypes.h:182
Diligent::UsageToGLUsage
GLenum UsageToGLUsage(const BufferDesc &Desc)
Definition: GLTypeConversions.hpp:72
Diligent::FILTER_TYPE_COMPARISON_POINT
@ FILTER_TYPE_COMPARISON_POINT
Comparison-point filtering.
Definition: GraphicsTypes.h:870
Diligent::RESOURCE_DIMENSION
RESOURCE_DIMENSION
Describes resource dimension.
Definition: GraphicsTypes.h:256
Diligent::GLShaderBitsToShaderTypes
SHADER_TYPE GLShaderBitsToShaderTypes(GLenum ShaderBits)
Definition: GLTypeConversions.cpp:711
ShaderType
Uint16 ShaderType
Definition: DXBCUtils.cpp:70
Diligent::CorrectGLTexFormat
GLenum CorrectGLTexFormat(GLenum GLTexFormat, Uint32 BindFlags)
Definition: GLTypeConversions.hpp:156
Diligent::USAGE_IMMUTABLE
@ USAGE_IMMUTABLE
A resource that can only be read by the GPU. It cannot be written by the GPU, and cannot be accessed ...
Definition: GraphicsTypes.h:150
GL_SRC1_ALPHA
#define GL_SRC1_ALPHA
Definition: GLStubsAndroid.h:889
Diligent::NativePixelAttribs::IsCompressed
Bool IsCompressed
Definition: GLTypeConversions.hpp:219
Diligent
The library uses Direct3D-style math:
Definition: AdvancedMath.hpp:37
Diligent::USAGE_DEFAULT
@ USAGE_DEFAULT
A resource that requires read and write access by the GPU and can also be occasionally written by the...
Definition: GraphicsTypes.h:156
GL_UNSIGNED_INT_10_10_10_2
#define GL_UNSIGNED_INT_10_10_10_2
Definition: GLStubsAndroid.h:124
Diligent::NativePixelAttribs::PixelFormat
GLenum PixelFormat
Definition: GLTypeConversions.hpp:217