1 //! OpenGL module provider. 2 //! 3 //! This module provides OpenGL types and functions that are used to implement the rest of this 4 //! crate. 5 6 #[cfg(feature = "std")] 7 mod meta { 8 pub(crate) use gl; 9 pub(crate) use gl::types::*; 10 } 11 12 #[cfg(not(feature = "std"))] 13 mod meta { 14 use alloc::vec::Vec; 15 16 // types 17 pub type GLenum = u32; 18 pub type GLboolean = u8; 19 pub type GLbitfield = u32; 20 // pub type GLvoid = (); 21 // pub type GLbyte = i8; 22 // pub type GLshort = i16; 23 pub type GLint = i32; 24 // pub type GLubyte = u8; 25 // pub type GLushort = u16; 26 pub type GLuint = u32; 27 pub type GLsizei = i32; 28 pub type GLfloat = f32; 29 // pub type GLclampf = f32; 30 // pub type GLdouble = f64; 31 // pub type GLclampd = f64; 32 pub type GLchar = i8; 33 pub type GLsizeiptr = isize; 34 35 // c_void, taken from the libc crate 36 // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help enable 37 // more optimization opportunities around it recognizing things like 38 // malloc/free. 39 #[repr(u8)] 40 #[allow(non_camel_case_types)] 41 pub enum c_void { 42 // Two dummy variants so the #[repr] attribute can be used. 43 #[doc(hidden)] 44 __variant1, 45 #[doc(hidden)] 46 __variant2, 47 } 48 49 // a little helper to build GL-compatible strings (akin to CString, but since we don’t have 50 // access to libffi… and that GLchar = i8… yeah fuck it) 51 #[derive(Debug)] 52 pub struct NulError; 53 54 #[inline(always)] with_cstring<F, A>(s: &str, f: F) -> Result<A, NulError> where F: FnOnce(*const GLchar) -> A,55 pub unsafe fn with_cstring<F, A>(s: &str, f: F) -> Result<A, NulError> 56 where 57 F: FnOnce(*const GLchar) -> A, 58 { 59 let bytes = s.as_bytes(); 60 61 if bytes.contains(&b'\0') { 62 Err(NulError) 63 } else { 64 let mut marshalled = Vec::with_capacity(s.len() + 1); // +1 for the NUL byte 65 marshalled.extend(bytes); 66 marshalled.push(b'\0'); // hello you dancing byte 67 Ok(f(marshalled.as_ptr() as *const GLchar)) 68 } 69 } 70 71 pub mod gl { 72 use super::*; 73 74 // constants 75 pub const ACTIVE_TEXTURE: GLenum = 34016; 76 pub const ACTIVE_UNIFORM_MAX_LENGTH: GLenum = 35719; 77 pub const ALWAYS: GLenum = 519; 78 pub const ARRAY_BUFFER: GLenum = 34962; 79 pub const BACK: GLenum = 1029; 80 pub const BLEND: GLenum = 3042; 81 pub const BLEND_DST_RGB: GLenum = 32968; 82 pub const BLEND_EQUATION_RGB: GLenum = 32777; 83 pub const BLEND_SRC_RGB: GLenum = 32969; 84 pub const BOOL: GLenum = 35670; 85 pub const BOOL_VEC2: GLenum = 35671; 86 pub const BOOL_VEC3: GLenum = 35672; 87 pub const BOOL_VEC4: GLenum = 35673; 88 pub const BYTE: GLenum = 5120; 89 pub const CCW: GLenum = 2305; 90 pub const CLAMP_TO_EDGE: GLenum = 33071; 91 pub const COLOR_ATTACHMENT0: GLenum = 36064; 92 pub const COLOR_BUFFER_BIT: GLenum = 16384; 93 pub const COMPARE_REF_TO_TEXTURE: GLenum = 34894; 94 pub const COMPILE_STATUS: GLenum = 35713; 95 pub const CULL_FACE: GLenum = 2884; 96 pub const CULL_FACE_MODE: GLenum = 2885; 97 pub const CURRENT_PROGRAM: GLenum = 35725; 98 pub const CW: GLenum = 2304; 99 pub const DEPTH_ATTACHMENT: GLenum = 36096; 100 pub const DEPTH_BUFFER_BIT: GLenum = 256; 101 pub const DEPTH_COMPONENT: GLenum = 6402; 102 pub const DEPTH_COMPONENT32F: GLenum = 36012; 103 pub const DEPTH_TEST: GLenum = 2929; 104 pub const DRAW_FRAMEBUFFER: GLenum = 36009; 105 pub const DRAW_FRAMEBUFFER_BINDING: GLenum = 36006; 106 pub const DST_ALPHA: GLenum = 772; 107 pub const DST_COLOR: GLenum = 774; 108 pub const ELEMENT_ARRAY_BUFFER: GLenum = 34963; 109 pub const EQUAL: GLenum = 514; 110 pub const FLOAT: GLenum = 5126; 111 pub const FLOAT_MAT2: GLenum = 35674; 112 pub const FLOAT_MAT3: GLenum = 35675; 113 pub const FLOAT_MAT4: GLenum = 35676; 114 pub const FLOAT_VEC2: GLenum = 35664; 115 pub const FLOAT_VEC3: GLenum = 35665; 116 pub const FLOAT_VEC4: GLenum = 35666; 117 pub const FRAGMENT_SHADER: GLenum = 35632; 118 pub const FRAMEBUFFER: GLenum = 36160; 119 pub const FRAMEBUFFER_COMPLETE: GLenum = 36053; 120 pub const FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum = 36054; 121 pub const FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: GLenum = 36059; 122 pub const FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: GLenum = 36264; 123 pub const FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum = 36055; 124 pub const FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum = 36182; 125 pub const FRAMEBUFFER_INCOMPLETE_READ_BUFFER: GLenum = 36060; 126 pub const FRAMEBUFFER_UNDEFINED: GLenum = 33305; 127 pub const FRAMEBUFFER_UNSUPPORTED: GLenum = 36061; 128 pub const FRONT: GLenum = 1028; 129 pub const FRONT_AND_BACK: GLenum = 1032; 130 pub const FRONT_FACE: GLenum = 2886; 131 pub const FUNC_ADD: GLenum = 32774; 132 pub const FUNC_REVERSE_SUBTRACT: GLenum = 32779; 133 pub const FUNC_SUBTRACT: GLenum = 32778; 134 pub const GEOMETRY_SHADER: GLenum = 36313; 135 pub const GEQUAL: GLenum = 518; 136 pub const GREATER: GLenum = 516; 137 pub const INFO_LOG_LENGTH: GLenum = 35716; 138 pub const INT: GLenum = 5124; 139 pub const INT_SAMPLER_1D: GLenum = 36297; 140 pub const INT_SAMPLER_2D: GLenum = 36298; 141 pub const INT_SAMPLER_3D: GLenum = 36299; 142 pub const INT_SAMPLER_CUBE: GLenum = 36300; 143 pub const INT_VEC2: GLenum = 35667; 144 pub const INT_VEC3: GLenum = 35668; 145 pub const INT_VEC4: GLenum = 35669; 146 pub const INVALID_INDEX: GLenum = 4294967295; 147 pub const LEQUAL: GLenum = 515; 148 pub const LESS: GLenum = 513; 149 pub const LINE_STRIP: GLenum = 3; 150 pub const LINEAR: GLenum = 9729; 151 pub const LINEAR_MIPMAP_LINEAR: GLenum = 9987; 152 pub const LINEAR_MIPMAP_NEAREST: GLenum = 9985; 153 pub const LINES: GLenum = 1; 154 pub const LINK_STATUS: GLenum = 35714; 155 pub const MAX: GLenum = 32776; 156 pub const MIN: GLenum = 32775; 157 pub const MIRRORED_REPEAT: GLenum = 33648; 158 pub const NEAREST: GLenum = 9728; 159 pub const NEAREST_MIPMAP_LINEAR: GLenum = 9986; 160 pub const NEAREST_MIPMAP_NEAREST: GLenum = 9984; 161 pub const NEVER: GLenum = 512; 162 pub const NONE: GLenum = 0; 163 pub const NOTEQUAL: GLenum = 517; 164 pub const ONE: GLenum = 1; 165 pub const ONE_MINUS_DST_ALPHA: GLenum = 773; 166 pub const ONE_MINUS_DST_COLOR: GLenum = 775; 167 pub const ONE_MINUS_SRC_ALPHA: GLenum = 771; 168 pub const ONE_MINUS_SRC_COLOR: GLenum = 769; 169 pub const PATCH_VERTICES: GLenum = 36466; 170 pub const PATCHES: GLenum = 14; 171 pub const POINTS: GLenum = 0; 172 pub const R8I: GLenum = 33329; 173 pub const R8UI: GLenum = 33330; 174 pub const R16I: GLenum = 33331; 175 pub const R16UI: GLenum = 33332; 176 pub const R32F: GLenum = 33326; 177 pub const R32I: GLenum = 33333; 178 pub const R32UI: GLenum = 33334; 179 pub const READ_ONLY: GLenum = 35000; 180 pub const READ_WRITE: GLenum = 35002; 181 pub const RED: GLenum = 6403; 182 pub const RED_INTEGER: GLenum = 36244; 183 pub const RENDERBUFFER: GLenum = 36161; 184 pub const REPEAT: GLenum = 10497; 185 pub const RG: GLenum = 33319; 186 pub const RG_INTEGER: GLenum = 33320; 187 pub const RG8I: GLenum = 33335; 188 pub const RG8UI: GLenum = 33336; 189 pub const RG16I: GLenum = 33337; 190 pub const RG16UI: GLenum = 33338; 191 pub const RG32F: GLenum = 33328; 192 pub const RG32I: GLenum = 33339; 193 pub const RG32UI: GLenum = 33340; 194 pub const RGB: GLenum = 6407; 195 pub const RGB_INTEGER: GLenum = 36248; 196 pub const RGB8I: GLenum = 36239; 197 pub const RGB8UI: GLenum = 36221; 198 pub const RGB16I: GLenum = 36233; 199 pub const RGB16UI: GLenum = 36215; 200 pub const RGB32F: GLenum = 34837; 201 pub const RGB32I: GLenum = 36227; 202 pub const RGB32UI: GLenum = 36209; 203 pub const RGBA: GLenum = 6408; 204 pub const RGBA_INTEGER: GLenum = 36249; 205 pub const RGBA8I: GLenum = 36238; 206 pub const RGBA8UI: GLenum = 36220; 207 pub const RGBA16I: GLenum = 36232; 208 pub const RGBA16UI: GLenum = 36214; 209 pub const RGBA32F: GLenum = 34836; 210 pub const RGBA32I: GLenum = 36226; 211 pub const RGBA32UI: GLenum = 36208; 212 pub const SAMPLER_1D: GLenum = 35677; 213 pub const SAMPLER_2D: GLenum = 35678; 214 pub const SAMPLER_3D: GLenum = 35679; 215 pub const SAMPLER_CUBE: GLenum = 35680; 216 pub const SHORT: GLenum = 5122; 217 pub const SRC_ALPHA: GLenum = 770; 218 pub const SRC_ALPHA_SATURATE: GLenum = 776; 219 pub const SRC_COLOR: GLenum = 768; 220 pub const STREAM_DRAW: GLenum = 35040; 221 pub const TESS_CONTROL_SHADER: GLenum = 36488; 222 pub const TESS_EVALUATION_SHADER: GLenum = 36487; 223 pub const TEXTURE0: GLenum = 33984; 224 pub const TEXTURE_1D: GLenum = 3552; 225 pub const TEXTURE_1D_ARRAY: GLenum = 35864; 226 pub const TEXTURE_2D: GLenum = 3553; 227 pub const TEXTURE_2D_ARRAY: GLenum = 35866; 228 pub const TEXTURE_3D: GLenum = 32879; 229 pub const TEXTURE_BASE_LEVEL: GLenum = 33084; 230 pub const TEXTURE_COMPARE_FUNC: GLenum = 34893; 231 pub const TEXTURE_COMPARE_MODE: GLenum = 34892; 232 pub const TEXTURE_CUBE_MAP: GLenum = 34067; 233 pub const TEXTURE_CUBE_MAP_ARRAY: GLenum = 36873; 234 pub const TEXTURE_CUBE_MAP_POSITIVE_X: GLenum = 34069; 235 pub const TEXTURE_HEIGHT: GLenum = 4097; 236 pub const TEXTURE_MAG_FILTER: GLenum = 10240; 237 pub const TEXTURE_MAX_LEVEL: GLenum = 33085; 238 pub const TEXTURE_MIN_FILTER: GLenum = 10241; 239 pub const TEXTURE_WIDTH: GLenum = 4096; 240 pub const TEXTURE_WRAP_R: GLenum = 32882; 241 pub const TEXTURE_WRAP_S: GLenum = 10242; 242 pub const TEXTURE_WRAP_T: GLenum = 10243; 243 pub const TRIANGLE_FAN: GLenum = 6; 244 pub const TRIANGLE_STRIP: GLenum = 5; 245 pub const TRIANGLES: GLenum = 4; 246 pub const UNIFORM_BUFFER: GLenum = 35345; 247 pub const UNSIGNED_BYTE: GLenum = 5121; 248 pub const UNSIGNED_INT: GLenum = 5125; 249 pub const UNSIGNED_INT_SAMPLER_1D: GLenum = 36305; 250 pub const UNSIGNED_INT_SAMPLER_2D: GLenum = 36306; 251 pub const UNSIGNED_INT_SAMPLER_3D: GLenum = 36307; 252 pub const UNSIGNED_INT_SAMPLER_CUBE: GLenum = 36308; 253 pub const UNSIGNED_INT_VEC2: GLenum = 35667; 254 pub const UNSIGNED_INT_VEC3: GLenum = 35668; 255 pub const UNSIGNED_INT_VEC4: GLenum = 35669; 256 pub const UNSIGNED_SHORT: GLenum = 5123; 257 pub const VERTEX_ARRAY_BINDING: GLenum = 34229; 258 pub const VERTEX_SHADER: GLenum = 35633; 259 pub const WRITE_ONLY: GLenum = 35001; 260 pub const ZERO: GLenum = 0; 261 262 pub const FALSE: GLboolean = 0; 263 pub const TRUE: GLboolean = 1; 264 265 // functions 266 extern "system" { 267 #[allow(non_snake_case)] 268 #[inline] 269 #[link_name = "glActiveTexture"] ActiveTexture(_: GLenum)270 pub fn ActiveTexture(_: GLenum); 271 272 #[allow(non_snake_case)] 273 #[inline] 274 #[link_name = "glAttachShader"] AttachShader(_: GLuint, _: GLuint)275 pub fn AttachShader(_: GLuint, _: GLuint); 276 277 #[allow(non_snake_case)] 278 #[inline] 279 #[link_name = "glBindBuffer"] BindBuffer(_: GLenum, _: GLuint)280 pub fn BindBuffer(_: GLenum, _: GLuint); 281 282 #[allow(non_snake_case)] 283 #[inline] 284 #[link_name = "glBindBufferBase"] BindBufferBase(_: GLenum, _: GLuint, _: GLuint)285 pub fn BindBufferBase(_: GLenum, _: GLuint, _: GLuint); 286 287 #[allow(non_snake_case)] 288 #[inline] 289 #[link_name = "glBindFramebuffer"] BindFramebuffer(_: GLenum, _: GLuint)290 pub fn BindFramebuffer(_: GLenum, _: GLuint); 291 292 #[allow(non_snake_case)] 293 #[inline] 294 #[link_name = "glBindRenderbuffer"] BindRenderbuffer(_: GLenum, _: GLuint)295 pub fn BindRenderbuffer(_: GLenum, _: GLuint); 296 297 #[allow(non_snake_case)] 298 #[inline] 299 #[link_name = "glBindTexture"] BindTexture(_: GLenum, _: GLuint)300 pub fn BindTexture(_: GLenum, _: GLuint); 301 302 #[allow(non_snake_case)] 303 #[inline] 304 #[link_name = "glBindVertexArray"] BindVertexArray(_: GLuint)305 pub fn BindVertexArray(_: GLuint); 306 307 #[allow(non_snake_case)] 308 #[inline] 309 #[link_name = "glBlendEquation"] BlendEquation(_: GLenum)310 pub fn BlendEquation(_: GLenum); 311 312 #[allow(non_snake_case)] 313 #[inline] 314 #[link_name = "glBlendFunc"] BlendFunc(_: GLenum, _: GLenum)315 pub fn BlendFunc(_: GLenum, _: GLenum); 316 317 #[allow(non_snake_case)] 318 #[inline] 319 #[link_name = "glBufferData"] BufferData(_: GLenum, _: GLsizeiptr, _: *const c_void, _: GLenum)320 pub fn BufferData(_: GLenum, _: GLsizeiptr, _: *const c_void, _: GLenum); 321 322 #[allow(non_snake_case)] 323 #[inline] 324 #[link_name = "glCheckFramebufferStatus"] CheckFramebufferStatus(_: GLenum) -> GLenum325 pub fn CheckFramebufferStatus(_: GLenum) -> GLenum; 326 327 #[allow(non_snake_case)] 328 #[inline] 329 #[link_name = "glClear"] Clear(_: GLbitfield)330 pub fn Clear(_: GLbitfield); 331 332 #[allow(non_snake_case)] 333 #[inline] 334 #[link_name = "glClearColor"] ClearColor(_: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat)335 pub fn ClearColor(_: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat); 336 337 #[allow(non_snake_case)] 338 #[inline] 339 #[link_name = "glCompileShader"] CompileShader(_: GLuint)340 pub fn CompileShader(_: GLuint); 341 342 #[allow(non_snake_case)] 343 #[inline] 344 #[link_name = "glCreateProgram"] CreateProgram() -> GLuint345 pub fn CreateProgram() -> GLuint; 346 347 #[allow(non_snake_case)] 348 #[inline] 349 #[link_name = "glCreateShader"] CreateShader(_: GLenum) -> GLuint350 pub fn CreateShader(_: GLenum) -> GLuint; 351 352 #[allow(non_snake_case)] 353 #[inline] 354 #[link_name = "glCullFace"] CullFace(_: GLenum)355 pub fn CullFace(_: GLenum); 356 357 #[allow(non_snake_case)] 358 #[inline] 359 #[link_name = "glDeleteBuffers"] DeleteBuffers(_: GLsizei, _: *const GLuint)360 pub fn DeleteBuffers(_: GLsizei, _: *const GLuint); 361 362 #[allow(non_snake_case)] 363 #[inline] 364 #[link_name = "glDeleteFramebuffers"] DeleteFramebuffers(_: GLsizei, _: *const GLuint)365 pub fn DeleteFramebuffers(_: GLsizei, _: *const GLuint); 366 367 #[allow(non_snake_case)] 368 #[inline] 369 #[link_name = "glDeleteProgram"] DeleteProgram(_: GLuint)370 pub fn DeleteProgram(_: GLuint); 371 372 #[allow(non_snake_case)] 373 #[inline] 374 #[link_name = "glDeleteRenderbuffers"] DeleteRenderbuffers(_: GLsizei, _: *const GLuint)375 pub fn DeleteRenderbuffers(_: GLsizei, _: *const GLuint); 376 377 #[allow(non_snake_case)] 378 #[inline] 379 #[link_name = "glDeleteShader"] DeleteShader(_: GLuint)380 pub fn DeleteShader(_: GLuint); 381 382 #[allow(non_snake_case)] 383 #[inline] 384 #[link_name = "glDeleteTextures"] DeleteTextures(_: GLsizei, _: *const GLuint)385 pub fn DeleteTextures(_: GLsizei, _: *const GLuint); 386 387 #[allow(non_snake_case)] 388 #[inline] 389 #[link_name = "glDeleteVertexArrays"] DeleteVertexArrays(_: GLsizei, _: *const GLuint)390 pub fn DeleteVertexArrays(_: GLsizei, _: *const GLuint); 391 392 #[allow(non_snake_case)] 393 #[inline] 394 #[link_name = "glDisable"] Disable(_: GLenum)395 pub fn Disable(_: GLenum); 396 397 #[allow(non_snake_case)] 398 #[inline] 399 #[link_name = "glDrawArrays"] DrawArrays(_: GLenum, _: GLint, _: GLsizei)400 pub fn DrawArrays(_: GLenum, _: GLint, _: GLsizei); 401 402 #[allow(non_snake_case)] 403 #[inline] 404 #[link_name = "glDrawArraysInstanced"] DrawArraysInstanced(_: GLenum, _: GLint, _: GLsizei, _: GLsizei)405 pub fn DrawArraysInstanced(_: GLenum, _: GLint, _: GLsizei, _: GLsizei); 406 407 #[allow(non_snake_case)] 408 #[inline] 409 #[link_name = "glDrawElements"] DrawElements(_: GLenum, _: GLsizei, _: GLenum, _: *const c_void)410 pub fn DrawElements(_: GLenum, _: GLsizei, _: GLenum, _: *const c_void); 411 412 #[allow(non_snake_case)] 413 #[inline] 414 #[link_name = "glDrawElementsInstanced"] DrawElementsInstanced(_: GLenum, _: GLsizei, _: GLenum, _: *const c_void, _: GLsizei)415 pub fn DrawElementsInstanced(_: GLenum, _: GLsizei, _: GLenum, _: *const c_void, _: GLsizei); 416 417 #[allow(non_snake_case)] 418 #[inline] 419 #[link_name = "glDrawBuffer"] DrawBuffer(_: GLenum)420 pub fn DrawBuffer(_: GLenum); 421 422 #[allow(non_snake_case)] 423 #[inline] 424 #[link_name = "glDrawBuffers"] DrawBuffers(_: GLsizei, _: *const GLenum)425 pub fn DrawBuffers(_: GLsizei, _: *const GLenum); 426 427 #[allow(non_snake_case)] 428 #[inline] 429 #[link_name = "glEnable"] Enable(_: GLenum)430 pub fn Enable(_: GLenum); 431 432 #[allow(non_snake_case)] 433 #[inline] 434 #[link_name = "glEnableVertexAttribArray"] EnableVertexAttribArray(_: GLuint)435 pub fn EnableVertexAttribArray(_: GLuint); 436 437 #[allow(non_snake_case)] 438 #[inline] 439 #[link_name = "glFramebufferRenderbuffer"] FramebufferRenderbuffer(_: GLenum, _: GLenum, _: GLenum, _: GLuint)440 pub fn FramebufferRenderbuffer(_: GLenum, _: GLenum, _: GLenum, _: GLuint); 441 442 #[allow(non_snake_case)] 443 #[inline] 444 #[link_name = "glFramebufferTexture"] FramebufferTexture(_: GLenum, _: GLenum, _: GLuint, _: GLint)445 pub fn FramebufferTexture(_: GLenum, _: GLenum, _: GLuint, _: GLint); 446 447 #[allow(non_snake_case)] 448 #[inline] 449 #[link_name = "glFrontFace"] FrontFace(_: GLenum)450 pub fn FrontFace(_: GLenum); 451 452 #[allow(non_snake_case)] 453 #[inline] 454 #[link_name = "glGenBuffers"] GenBuffers(_: GLsizei, _: *mut GLuint)455 pub fn GenBuffers(_: GLsizei, _: *mut GLuint); 456 457 #[allow(non_snake_case)] 458 #[inline] 459 #[link_name = "glGenFramebuffers"] GenFramebuffers(_: GLsizei, _: *mut GLuint)460 pub fn GenFramebuffers(_: GLsizei, _: *mut GLuint); 461 462 #[allow(non_snake_case)] 463 #[inline] 464 #[link_name = "glGenRenderbuffers"] GenRenderbuffers(_: GLsizei, _: *mut GLuint)465 pub fn GenRenderbuffers(_: GLsizei, _: *mut GLuint); 466 467 #[allow(non_snake_case)] 468 #[inline] 469 #[link_name = "glGenTextures"] GenTextures(_: GLsizei, _: *mut GLuint)470 pub fn GenTextures(_: GLsizei, _: *mut GLuint); 471 472 #[allow(non_snake_case)] 473 #[inline] 474 #[link_name = "glGenVertexArrays"] GenVertexArrays(_: GLsizei, _: *mut GLuint)475 pub fn GenVertexArrays(_: GLsizei, _: *mut GLuint); 476 477 #[allow(non_snake_case)] 478 #[inline] 479 #[link_name = "glGenerateMipmap"] GenerateMipmap(_: GLenum)480 pub fn GenerateMipmap(_: GLenum); 481 482 #[allow(non_snake_case)] 483 #[inline] 484 #[link_name = "glGetActiveUniform"] GetActiveUniform( _: GLuint, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLint, _: *mut GLenum, _: *mut GLchar, )485 pub fn GetActiveUniform( 486 _: GLuint, 487 _: GLuint, 488 _: GLsizei, 489 _: *mut GLsizei, 490 _: *mut GLint, 491 _: *mut GLenum, 492 _: *mut GLchar, 493 ); 494 495 #[allow(non_snake_case)] 496 #[inline] 497 #[link_name = "glGetIntegerv"] GetIntegerv(_: GLenum, _: *mut GLint)498 pub fn GetIntegerv(_: GLenum, _: *mut GLint); 499 500 #[allow(non_snake_case)] 501 #[inline] 502 #[link_name = "glGetProgramInfoLog"] GetProgramInfoLog(_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar)503 pub fn GetProgramInfoLog(_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar); 504 505 #[allow(non_snake_case)] 506 #[inline] 507 #[link_name = "glGetProgramiv"] GetProgramiv(_: GLuint, _: GLenum, _: *mut GLint)508 pub fn GetProgramiv(_: GLuint, _: GLenum, _: *mut GLint); 509 510 #[allow(non_snake_case)] 511 #[inline] 512 #[link_name = "glGetShaderInfoLog"] GetShaderInfoLog(_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar)513 pub fn GetShaderInfoLog(_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar); 514 515 #[allow(non_snake_case)] 516 #[inline] 517 #[link_name = "glGetShaderiv"] GetShaderiv(_: GLuint, _: GLenum, _: *mut GLint)518 pub fn GetShaderiv(_: GLuint, _: GLenum, _: *mut GLint); 519 520 #[allow(non_snake_case)] 521 #[inline] 522 #[link_name = "glGetTexImage"] GetTexImage(_: GLenum, _: GLint, _: GLenum, _: GLenum, _: *mut c_void)523 pub fn GetTexImage(_: GLenum, _: GLint, _: GLenum, _: GLenum, _: *mut c_void); 524 525 #[allow(non_snake_case)] 526 #[inline] 527 #[link_name = "glGetTexLevelParameteriv"] GetTexLevelParameteriv(_: GLenum, _: GLint, _: GLenum, _: *mut GLint)528 pub fn GetTexLevelParameteriv(_: GLenum, _: GLint, _: GLenum, _: *mut GLint); 529 530 #[allow(non_snake_case)] 531 #[inline] 532 #[link_name = "glGetUniformBlockIndex"] GetUniformBlockIndex(_: GLuint, _: *const GLchar) -> GLuint533 pub fn GetUniformBlockIndex(_: GLuint, _: *const GLchar) -> GLuint; 534 535 #[allow(non_snake_case)] 536 #[inline] 537 #[link_name = "glGetUniformLocation"] GetUniformLocation(_: GLuint, _: *const GLchar) -> GLint538 pub fn GetUniformLocation(_: GLuint, _: *const GLchar) -> GLint; 539 540 #[allow(non_snake_case)] 541 #[inline] 542 #[link_name = "glGetUniformIndices"] GetUniformIndices(_: GLuint, _: GLsizei, _: *const *const GLchar, _: *mut GLuint)543 pub fn GetUniformIndices(_: GLuint, _: GLsizei, _: *const *const GLchar, _: *mut GLuint); 544 545 #[allow(non_snake_case)] 546 #[inline] 547 #[link_name = "glIsEnabled"] IsEnabled(_: GLenum) -> GLboolean548 pub fn IsEnabled(_: GLenum) -> GLboolean; 549 550 #[allow(non_snake_case)] 551 #[inline] 552 #[link_name = "glLinkProgram"] LinkProgram(_: GLuint)553 pub fn LinkProgram(_: GLuint); 554 555 #[allow(non_snake_case)] 556 #[inline] 557 #[link_name = "glMapBuffer"] MapBuffer(_: GLenum, _: GLenum) -> *mut c_void558 pub fn MapBuffer(_: GLenum, _: GLenum) -> *mut c_void; 559 560 #[allow(non_snake_case)] 561 #[inline] 562 #[link_name = "glRenderbufferStorage"] RenderbufferStorage(_: GLenum, _: GLenum, _: GLsizei, _: GLsizei)563 pub fn RenderbufferStorage(_: GLenum, _: GLenum, _: GLsizei, _: GLsizei); 564 565 #[allow(non_snake_case)] 566 #[inline] 567 #[link_name = "glShaderSource"] ShaderSource(_: GLuint, _: GLsizei, _: *const *const GLchar, _: *const GLint)568 pub fn ShaderSource(_: GLuint, _: GLsizei, _: *const *const GLchar, _: *const GLint); 569 570 #[allow(non_snake_case)] 571 #[inline] 572 #[link_name = "glTexImage1D"] TexImage1D( _: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLint, _: GLenum, _: GLenum, _: *const c_void, )573 pub fn TexImage1D( 574 _: GLenum, 575 _: GLint, 576 _: GLint, 577 _: GLsizei, 578 _: GLint, 579 _: GLenum, 580 _: GLenum, 581 _: *const c_void, 582 ); 583 584 #[allow(non_snake_case)] 585 #[inline] 586 #[link_name = "glTexImage2D"] TexImage2D( _: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLint, _: GLenum, _: GLenum, _: *const c_void, )587 pub fn TexImage2D( 588 _: GLenum, 589 _: GLint, 590 _: GLint, 591 _: GLsizei, 592 _: GLsizei, 593 _: GLint, 594 _: GLenum, 595 _: GLenum, 596 _: *const c_void, 597 ); 598 599 #[allow(non_snake_case)] 600 #[inline] 601 #[link_name = "glTexImage3D"] TexImage3D( _: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLint, _: GLenum, _: GLenum, _: *const c_void, )602 pub fn TexImage3D( 603 _: GLenum, 604 _: GLint, 605 _: GLint, 606 _: GLsizei, 607 _: GLsizei, 608 _: GLsizei, 609 _: GLint, 610 _: GLenum, 611 _: GLenum, 612 _: *const c_void, 613 ); 614 615 #[allow(non_snake_case)] 616 #[inline] 617 #[link_name = "glTexParameteri"] TexParameteri(_: GLenum, _: GLenum, _: GLint)618 pub fn TexParameteri(_: GLenum, _: GLenum, _: GLint); 619 620 #[allow(non_snake_case)] 621 #[inline] 622 #[link_name = "glTexSubImage1D"] TexSubImage1D( _: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void, )623 pub fn TexSubImage1D( 624 _: GLenum, 625 _: GLint, 626 _: GLint, 627 _: GLsizei, 628 _: GLenum, 629 _: GLenum, 630 _: *const c_void, 631 ); 632 633 #[allow(non_snake_case)] 634 #[inline] 635 #[link_name = "glTexSubImage2D"] TexSubImage2D( _: GLenum, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void, )636 pub fn TexSubImage2D( 637 _: GLenum, 638 _: GLint, 639 _: GLint, 640 _: GLint, 641 _: GLsizei, 642 _: GLsizei, 643 _: GLenum, 644 _: GLenum, 645 _: *const c_void, 646 ); 647 648 #[allow(non_snake_case)] 649 #[inline] 650 #[link_name = "glTexSubImage3D"] TexSubImage3D( _: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void, )651 pub fn TexSubImage3D( 652 _: GLenum, 653 _: GLint, 654 _: GLint, 655 _: GLint, 656 _: GLint, 657 _: GLsizei, 658 _: GLsizei, 659 _: GLsizei, 660 _: GLenum, 661 _: GLenum, 662 _: *const c_void, 663 ); 664 665 #[allow(non_snake_case)] 666 #[inline] 667 #[link_name = "glUniform1f"] Uniform1f(_: GLint, _: GLfloat)668 pub fn Uniform1f(_: GLint, _: GLfloat); 669 670 #[allow(non_snake_case)] 671 #[inline] 672 #[link_name = "glUniform1i"] Uniform1i(_: GLint, _: GLint)673 pub fn Uniform1i(_: GLint, _: GLint); 674 675 #[allow(non_snake_case)] 676 #[inline] 677 #[link_name = "glUniform1ui"] Uniform1ui(_: GLint, _: GLuint)678 pub fn Uniform1ui(_: GLint, _: GLuint); 679 680 #[allow(non_snake_case)] 681 #[inline] 682 #[link_name = "glUniform1iv"] Uniform1iv(_: GLint, _: GLsizei, _: *const GLint)683 pub fn Uniform1iv(_: GLint, _: GLsizei, _: *const GLint); 684 685 #[allow(non_snake_case)] 686 #[inline] 687 #[link_name = "glUniform1fv"] Uniform1fv(_: GLint, _: GLsizei, _: *const GLfloat)688 pub fn Uniform1fv(_: GLint, _: GLsizei, _: *const GLfloat); 689 690 #[allow(non_snake_case)] 691 #[inline] 692 #[link_name = "glUniform1uiv"] Uniform1uiv(_: GLint, _: GLsizei, _: *const GLuint)693 pub fn Uniform1uiv(_: GLint, _: GLsizei, _: *const GLuint); 694 695 #[allow(non_snake_case)] 696 #[inline] 697 #[link_name = "glUniform2fv"] Uniform2fv(_: GLint, _: GLsizei, _: *const GLfloat)698 pub fn Uniform2fv(_: GLint, _: GLsizei, _: *const GLfloat); 699 700 #[allow(non_snake_case)] 701 #[inline] 702 #[link_name = "glUniform2iv"] Uniform2iv(_: GLint, _: GLsizei, _: *const GLint)703 pub fn Uniform2iv(_: GLint, _: GLsizei, _: *const GLint); 704 705 #[allow(non_snake_case)] 706 #[inline] 707 #[link_name = "glUniform2uiv"] Uniform2uiv(_: GLint, _: GLsizei, _: *const GLuint)708 pub fn Uniform2uiv(_: GLint, _: GLsizei, _: *const GLuint); 709 710 #[allow(non_snake_case)] 711 #[inline] 712 #[link_name = "glUniform3fv"] Uniform3fv(_: GLint, _: GLsizei, _: *const GLfloat)713 pub fn Uniform3fv(_: GLint, _: GLsizei, _: *const GLfloat); 714 715 #[allow(non_snake_case)] 716 #[inline] 717 #[link_name = "glUniform3iv"] Uniform3iv(_: GLint, _: GLsizei, _: *const GLint)718 pub fn Uniform3iv(_: GLint, _: GLsizei, _: *const GLint); 719 720 #[allow(non_snake_case)] 721 #[inline] 722 #[link_name = "glUniform3uiv"] Uniform3uiv(_: GLint, _: GLsizei, _: *const GLuint)723 pub fn Uniform3uiv(_: GLint, _: GLsizei, _: *const GLuint); 724 725 #[allow(non_snake_case)] 726 #[inline] 727 #[link_name = "glUniform4fv"] Uniform4fv(_: GLint, _: GLsizei, _: *const GLfloat)728 pub fn Uniform4fv(_: GLint, _: GLsizei, _: *const GLfloat); 729 730 #[allow(non_snake_case)] 731 #[inline] 732 #[link_name = "glUniform4iv"] Uniform4iv(_: GLint, _: GLsizei, _: *const GLint)733 pub fn Uniform4iv(_: GLint, _: GLsizei, _: *const GLint); 734 735 #[allow(non_snake_case)] 736 #[inline] 737 #[link_name = "glUniform4uiv"] Uniform4uiv(_: GLint, _: GLsizei, _: *const GLuint)738 pub fn Uniform4uiv(_: GLint, _: GLsizei, _: *const GLuint); 739 740 #[allow(non_snake_case)] 741 #[inline] 742 #[link_name = "glUniformBlockBinding"] UniformBlockBinding(_: GLuint, _: GLuint, _: GLuint)743 pub fn UniformBlockBinding(_: GLuint, _: GLuint, _: GLuint); 744 745 #[allow(non_snake_case)] 746 #[inline] 747 #[link_name = "glUniformMatrix2fv"] UniformMatrix2fv(_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat)748 pub fn UniformMatrix2fv(_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat); 749 750 #[allow(non_snake_case)] 751 #[inline] 752 #[link_name = "glUniformMatrix3fv"] UniformMatrix3fv(_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat)753 pub fn UniformMatrix3fv(_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat); 754 755 #[allow(non_snake_case)] 756 #[inline] 757 #[link_name = "glUniformMatrix4fv"] UniformMatrix4fv(_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat)758 pub fn UniformMatrix4fv(_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat); 759 760 #[allow(non_snake_case)] 761 #[inline] 762 #[link_name = "glUnmapBuffer"] UnmapBuffer(_: GLenum) -> GLboolean763 pub fn UnmapBuffer(_: GLenum) -> GLboolean; 764 765 #[allow(non_snake_case)] 766 #[inline] 767 #[link_name = "glUseProgram"] UseProgram(_: GLuint)768 pub fn UseProgram(_: GLuint); 769 770 #[allow(non_snake_case)] 771 #[inline] 772 #[link_name = "glVertexAttribPointer"] VertexAttribPointer( _: GLuint, _: GLint, _: GLenum, _: GLboolean, _: GLsizei, _: *const c_void, )773 pub fn VertexAttribPointer( 774 _: GLuint, 775 _: GLint, 776 _: GLenum, 777 _: GLboolean, 778 _: GLsizei, 779 _: *const c_void, 780 ); 781 782 #[allow(non_snake_case)] 783 #[inline] 784 #[link_name = "glVertexAttribIPointer"] VertexAttribIPointer(_: GLuint, _: GLint, _: GLenum, _: GLsizei, _: *const c_void)785 pub fn VertexAttribIPointer(_: GLuint, _: GLint, _: GLenum, _: GLsizei, _: *const c_void); 786 787 #[allow(non_snake_case)] 788 #[inline] 789 #[link_name = "glViewport"] Viewport(_: GLint, _: GLint, _: GLsizei, _: GLsizei)790 pub fn Viewport(_: GLint, _: GLint, _: GLsizei, _: GLsizei); 791 } 792 } 793 } 794 795 pub(crate) use self::meta::*; 796