zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
BaseTypes.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 #ifndef _BASICTYPES_INCLUDED_
8 #define _BASICTYPES_INCLUDED_
9 
10 //
11 // Precision qualifiers
12 //
14 {
15  // These need to be kept sorted
20 };
21 
22 inline const char* getPrecisionString(TPrecision p)
23 {
24  switch(p)
25  {
26  case EbpHigh: return "highp"; break;
27  case EbpMedium: return "mediump"; break;
28  case EbpLow: return "lowp"; break;
29  default: return "mediump"; break; // Safest fallback
30  }
31 }
32 
33 //
34 // Basic type. Arrays, vectors, etc., are orthogonal to this.
35 //
37 {
42  EbtGuardSamplerBegin, // non type: see implementation of IsSampler()
45  EbtSamplerExternalOES, // Only valid if OES_EGL_image_external exists.
46  EbtSampler2DRect, // Only valid if GL_ARB_texture_rectangle exists.
47  EbtGuardSamplerEnd, // non type: see implementation of IsSampler()
49  EbtAddress, // should be deprecated??
50  EbtInvariant // used as a type when qualifying a previously declared variable as being invariant
51 };
52 
53 inline const char* getBasicString(TBasicType t)
54 {
55  switch (t)
56  {
57  case EbtVoid: return "void"; break;
58  case EbtFloat: return "float"; break;
59  case EbtInt: return "int"; break;
60  case EbtBool: return "bool"; break;
61  case EbtSampler2D: return "sampler2D"; break;
62  case EbtSamplerCube: return "samplerCube"; break;
63  case EbtSamplerExternalOES: return "samplerExternalOES"; break;
64  case EbtSampler2DRect: return "sampler2DRect"; break;
65  case EbtStruct: return "structure"; break;
66  default: return "unknown type";
67  }
68 }
69 
71 {
72  return type > EbtGuardSamplerBegin && type < EbtGuardSamplerEnd;
73 }
74 
75 //
76 // Qualifiers and built-ins. These are mainly used to see what can be read
77 // or written, and by the machine dependent translator to know which registers
78 // to allocate variables in. Since built-ins tend to go to different registers
79 // than varying or uniform, it makes sense they are peers, not sub-classes.
80 //
82 {
83  EvqTemporary, // For temporaries (within a function), read/write
84  EvqGlobal, // For globals read/write
85  EvqConst, // User defined constants and non-output parameters in functions
86  EvqAttribute, // Readonly
87  EvqVaryingIn, // readonly, fragment shaders only
88  EvqVaryingOut, // vertex shaders only read/write
89  EvqInvariantVaryingIn, // readonly, fragment shaders only
90  EvqInvariantVaryingOut, // vertex shaders only read/write
91  EvqUniform, // Readonly, vertex and fragment
92 
93  // parameters
98 
99  // built-ins written by vertex shader
102 
103  // built-ins read by fragment shader
107 
108  // built-ins written by fragment shader
112 
113  // end of list
115 };
116 
117 //
118 // This is just for debug print out, carried along with the definitions above.
119 //
120 inline const char* getQualifierString(TQualifier q)
121 {
122  switch(q)
123  {
124  case EvqTemporary: return "Temporary"; break;
125  case EvqGlobal: return "Global"; break;
126  case EvqConst: return "const"; break;
127  case EvqConstReadOnly: return "const"; break;
128  case EvqAttribute: return "attribute"; break;
129  case EvqVaryingIn: return "varying"; break;
130  case EvqVaryingOut: return "varying"; break;
131  case EvqInvariantVaryingIn: return "invariant varying"; break;
132  case EvqInvariantVaryingOut:return "invariant varying"; break;
133  case EvqUniform: return "uniform"; break;
134  case EvqIn: return "in"; break;
135  case EvqOut: return "out"; break;
136  case EvqInOut: return "inout"; break;
137  case EvqPosition: return "Position"; break;
138  case EvqPointSize: return "PointSize"; break;
139  case EvqFragCoord: return "FragCoord"; break;
140  case EvqFrontFacing: return "FrontFacing"; break;
141  case EvqFragColor: return "FragColor"; break;
142  case EvqFragData: return "FragData"; break;
143  case EvqFragDepth: return "FragDepth"; break;
144  default: return "unknown qualifier";
145  }
146 }
147 
148 #endif // _BASICTYPES_INCLUDED_
TQualifier
Definition: BaseTypes.h:81
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
Definition: gl2ext.h:845
const char * getPrecisionString(TPrecision p)
Definition: BaseTypes.h:22
bool IsSampler(TBasicType type)
Definition: BaseTypes.h:70
GLdouble GLdouble t
Definition: glew.h:1384
const char * getBasicString(TBasicType t)
Definition: BaseTypes.h:53
GLfloat GLfloat p
Definition: glew.h:14938
TBasicType
Definition: BaseTypes.h:36
GLdouble GLdouble GLdouble GLdouble q
Definition: glew.h:1400
const char * getQualifierString(TQualifier q)
Definition: BaseTypes.h:120
TPrecision
Definition: BaseTypes.h:13