diff options
-rw-r--r-- | build.rs | 10 | ||||
-rw-r--r-- | src/osx/headless.rs | 32 |
2 files changed, 22 insertions, 20 deletions
@@ -50,7 +50,15 @@ fn main() { khronos_api::EGL_XML, vec![], "1.5", "core", &mut file).unwrap(); } - + + if target.contains("darwin") { + let mut file = File::create(&dest.join("gl_bindings.rs")).unwrap(); + gl_generator::generate_bindings(gl_generator::GlobalGenerator, + gl_generator::registry::Ns::Gl, + khronos_api::GL_XML, + vec!["GL_EXT_framebuffer_object".to_string()], + "3.2", "core", &mut file).unwrap(); + } // TODO: only build the bindings below if we run tests/examples diff --git a/src/osx/headless.rs b/src/osx/headless.rs index 3981058..cc19457 100644 --- a/src/osx/headless.rs +++ b/src/osx/headless.rs @@ -11,36 +11,30 @@ use cocoa::base::{id, nil}; use cocoa::appkit::*; mod gl { - generate_gl_bindings! { - api: "gl", - profile: "core", - version: "3.2", - generator: "global", - extensions: ["GL_EXT_framebuffer_object"], - } + include!(concat!(env!("OUT_DIR"), "/gl_bindings.rs")); } static mut framebuffer: u32 = 0; static mut texture: u32 = 0; pub struct HeadlessContext { - width: usize, - height: usize, + width: u32, + height: u32, context: id, } impl HeadlessContext { pub fn new(builder: BuilderAttribs) -> Result<HeadlessContext, CreationError> { - let (width, height) = builder.dimensions; + let (width, height) = builder.dimensions.unwrap_or((1024, 768)); let context = unsafe { let attributes = [ - NSOpenGLPFADoubleBuffer as usize, - NSOpenGLPFAClosestPolicy as usize, - NSOpenGLPFAColorSize as usize, 24, - NSOpenGLPFAAlphaSize as usize, 8, - NSOpenGLPFADepthSize as usize, 24, - NSOpenGLPFAStencilSize as usize, 8, - NSOpenGLPFAOffScreen as usize, + NSOpenGLPFADoubleBuffer as u32, + NSOpenGLPFAClosestPolicy as u32, + NSOpenGLPFAColorSize as u32, 24, + NSOpenGLPFAAlphaSize as u32, 8, + NSOpenGLPFADepthSize as u32, 24, + NSOpenGLPFAStencilSize as u32, 8, + NSOpenGLPFAOffScreen as u32, 0 ]; @@ -87,8 +81,8 @@ impl HeadlessContext { } pub fn get_proc_address(&self, _addr: &str) -> *const () { - let symbol_name: CFString = from_str(_addr).unwrap(); - let framework_name: CFString = from_str("com.apple.opengl").unwrap(); + let symbol_name: CFString = _addr.parse().unwrap(); + let framework_name: CFString = "com.apple.opengl".parse().unwrap(); let framework = unsafe { CFBundleGetBundleWithIdentifier(framework_name.as_concrete_TypeRef()) }; |