Expand description
§Profiling struct generator
Yet another generator for gl_generator
, very similar to DebugStructGenerator
, but with these changes/additions:
- It does not log all calls. It only logs a call that caused an error.
- The corresponding explanation is included with the error code.
- Contains a profiler that tracks the number of GL calls and errors.
§Using the profiler
The generated gl
module gains 3 additional methods:
profiler_reset()
- resets the profiler;profiler_call_count() -> usize
- returns the number of calls since the last reset (or application start);profiler_err_count() -> usize
- returns the number of errors since the last reset (or application start);
Example usage:
ⓘ
gl::profiler_reset();
// the code
println!("Number of GL calls: {}", gl::profiler_call_count());
println!("Number of GL errors: {}", gl::profiler_err_count());
§Setting up the build script
The build script is very similar to the one used by gl
crate. Here is the example:
ⓘ
extern crate gl_generator;
extern crate gl_generator_profiling_struct;
use gl_generator::{Registry, Fallbacks, Api, Profile};
use gl_generator_profiling_struct::ProfilingStructGenerator;
use std::env;
use std::fs::File;
use std::path::Path;
fn main() {
let out_dir = env::var("OUT_DIR").unwrap();
let mut file_gl = File::create(&Path::new(&out_dir).join("bindings.rs")).unwrap();
let registry = Registry::new(Api::Gl, (4, 5), Profile::Core, Fallbacks::All, [
"GL_NV_command_list",
]);
registry.write_bindings(
ProfilingStructGenerator,
&mut file_gl
).unwrap();
}