1Name 2 3 OES_single_precision 4 5Name Strings 6 7 GL_OES_single_precision 8 9Contact 10 11 David Blythe (blythe 'at' bluevoid.com) 12 13Notice 14 15 Copyright (c) 2003-2013 The Khronos Group Inc. Copyright terms at 16 http://www.khronos.org/registry/speccopyright.html 17 18Specification Update Policy 19 20 Khronos-approved extension specifications are updated in response to 21 issues and bugs prioritized by the Khronos OpenGL ES Working Group. For 22 extensions which have been promoted to a core Specification, fixes will 23 first appear in the latest version of that core Specification, and will 24 eventually be backported to the extension document. This policy is 25 described in more detail at 26 https://www.khronos.org/registry/OpenGL/docs/update_policy.php 27 28Status 29 30 Ratified by the Khronos BOP, July 23, 2003. 31 Ratified by the Khronos BOP, Aug 5, 2004. 32 33Version 34 35 Version 1, September 18, 2014 36 37Number 38 39 OpenGL ES Extension #18 (formerly OpenGL Extension #293) 40 41Dependencies 42 43 None 44 The extension is written against the OpenGL 1.3 Specification. 45 46Overview 47 48 This extension adds commands with single-precision floating-point 49 parameters corresponding to the commands that only variants that 50 accept double-precision floating-point input. This allows an 51 application to avoid using double-precision floating-point 52 data types. New commands are added with an 'f' prefix. 53 54 55IP Status 56 57 None 58 59Issues 60 61* An alternative is to suggest platforms define GLfloat and 62 GLdouble to be the same type, since it is unlikely that both 63 single- and double-precision are required at the same time. 64 65 Resolved: This might create additional confusion, so it is 66 better to define new commands. 67 68New Procedures and Functions 69 70 void DepthRangefOES(clampf n, clampf f); 71 void FrustumfOES(float l, float r, float b, float t, float n, float f); 72 void OrthofOES(float l, float r, float b, float t, float n, float f); 73 74 void ClipPlanefOES(enum plane, const float* equation); 75 void GetClipPlanefOES(enum plane, float* equation); 76 77 void glClearDepthfOES(clampf depth); 78 79New Tokens 80 81 None 82 83Additions to Chapter 2 of the OpenGL 1.3 Specification (OpenGL Operation) 84 85 Section 2.10 Coordinate Transformations 86 87 Revise to include 'f' suffix. 88 Add alternate suffixed versions of DepthRange (2.10.1). 89 Add alternate suffixed versions of Ortho and Frustum (2.10.2). 90 91 Section 2.11 Clipping 92 93 Add alternate suffixed version of ClipPlane. 94 95Additions to Chapter 3 of the OpenGL 1.3 Specification (Rasterization) 96 97 None 98 99Additions to Chapter 4 of the OpenGL 1.3 Specification (Per-Fragment 100Operations and the Frame Buffer) 101 102 Section 4.2.3 Clearing the Buffers 103 104 Add alternate suffixed version of ClearDepth. 105 106Additions to Chapter 5 of the OpenGL 1.3 Specification (Special Functions) 107 108 None 109 110Additions to Chapter 6 of the OpenGL 1.3 Specification (State and 111State Requests) 112 113 None 114 115Additions to Appendix A of the OpenGL 1.3 Specification (Invariance) 116 117 None 118 119Additions to the AGL/GLX/WGL Specifications 120 121 None 122 123Additions to the WGL Specification 124 125 None 126 127Additions to the AGL Specification 128 129 None 130 131Additions to Chapter 2 of the GLX 1.3 Specification (GLX Operation) 132 133 The data representation is client-side only. The GLX layer 134 performs translation between float and double representations. 135 136Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors) 137 138Additions to Chapter 4 of the GLX 1.3 Specification (Encoding on the X 139Byte Stream) 140 141Additions to Chapter 5 of the GLX 1.3 Specification (Extending OpenGL) 142 143Additions to Chapter 6 of the GLX 1.3 Specification (GLX Versions) 144 145GLX Protocol 146 147 Five new GL rendering commands are added. The following commands 148 are sent to the server as part of a glXRender request: 149 150 ClearDepthfOES 151 2 8 rendering command length 152 2 4308 rendering command opcode 153 4 FLOAT32 z 154 155 DepthRangefOES 156 2 12 rendering command length 157 2 4309 rendering command opcode 158 4 FLOAT32 n 159 4 FLOAT32 f 160 161 FrustumfOES 162 2 28 rendering command length 163 2 4310 rendering command opcode 164 4 FLOAT32 l 165 4 FLOAT32 r 166 4 FLOAT32 b 167 4 FLOAT32 t 168 4 FLOAT32 n 169 4 FLOAT32 f 170 171 OrthofOES 172 2 28 rendering command length 173 2 4311 rendering command opcode 174 4 FLOAT32 l 175 4 FLOAT32 r 176 4 FLOAT32 b 177 4 FLOAT32 t 178 4 FLOAT32 n 179 4 FLOAT32 f 180 181 ClipPlanefOES 182 2 24 rendering command length 183 2 4312 rendering command opcode 184 4 ENUM plane 185 4 FLOAT32 v[0] 186 4 FLOAT32 v[1] 187 4 FLOAT32 v[2] 188 4 FLOAT32 v[3] 189 190 191 The remaining commands are non-rendering commands. These commands are 192 sent separately (i.e., not as part of a glXRender or glXRenderLarge 193 request), using the glXVendorPrivateWithReply request: 194 195 GetClipPlanefOES 196 1 CARD8 opcode (X assigned) 197 1 17 GLX opcode (glXVendorPrivateWithReply) 198 2 4 request length 199 4 1421 vendor specific opcode 200 4 GLX_CONTEXT_TAG context tag 201 4 ENUM plane 202 => 203 1 1 reply 204 1 unused 205 2 CARD16 sequence number 206 4 0 reply length 207 4 FLOAT32 v[0] 208 4 FLOAT32 v[1] 209 4 FLOAT32 v[2] 210 4 FLOAT32 v[3] 211 8 unused 212 213Errors 214 215 None 216 217New State 218 219 None 220 221New Implementation Dependent State 222 223 None 224 225Revision History 226 227 03/27/2003 0.1 228 - First draft created. 229 230 07/08/2003 0.2 231 - Delete unused Dependencies on section 232 - Added extension number 233 234 07/09/2003 0.3 235 - Added missing ClearDepthfOES 236 - Removed '_'s from names. 237 238 07/22/2003 0.4 239 - Added GLX protocol (Thomas Roell) 240 241 06/28/2004 0.5 242 - Added ClipPlanef function (Aaftab Munshi) 243 244 04/22/2007 0.6 245 - Fixed 'void void' typo (Jon Leech) 246 247 09/18/2014 1 248 - Fixed 'clampd' type to 'clampf' in ClearDepthfOES (Bug 12656). 249