aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build.rs10
-rw-r--r--src/osx/headless.rs32
2 files changed, 22 insertions, 20 deletions
diff --git a/build.rs b/build.rs
index 166c223..f49b47f 100644
--- a/build.rs
+++ b/build.rs
@@ -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())
};