Add support for specific OpenGL version for Win32

This commit is contained in:
Tomaka17 2014-08-02 11:03:09 +02:00
parent 13c73cce5e
commit 8c074af9fc
3 changed files with 34 additions and 4 deletions

View file

@ -365,6 +365,17 @@ pub static VK_NONAME: WPARAM = 0xFC;
pub static VK_PA1: WPARAM = 0xFD;
pub static VK_OEM_CLEAR: WPARAM = 0xFE;
// ?
pub static WGL_CONTEXT_DEBUG_BIT_ARB: libc::c_int = 0x00000001;
pub static WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB: libc::c_int = 0x00000002;
pub static WGL_CONTEXT_MAJOR_VERSION_ARB: libc::c_int = 0x2091;
pub static WGL_CONTEXT_MINOR_VERSION_ARB: libc::c_int = 0x2092;
pub static WGL_CONTEXT_LAYER_PLANE_ARB: libc::c_int = 0x2093;
pub static WGL_CONTEXT_FLAGS_ARB: libc::c_int = 0x2094;
pub static WGL_CONTEXT_PROFILE_MASK_ARB: libc::c_int = 0x9126;
pub static WGL_CONTEXT_CORE_PROFILE_BIT_ARB: libc::c_int = 0x00000001;
pub static WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB: libc::c_int = 0x00000002;
// messages
pub static WM_LBUTTONDOWN: UINT = 0x0201;
pub static WM_LBUTTONUP: UINT = 0x0202;

View file

@ -250,14 +250,22 @@ pub fn new_window(builder: WindowBuilder) -> Result<Window, String> {
let context = {
use libc;
let attributes: [libc::c_int, ..1] = [
0
];
let mut attributes = Vec::new();
if builder.gl_version.is_some() {
let version = builder.gl_version.as_ref().unwrap();
attributes.push(ffi::WGL_CONTEXT_MAJOR_VERSION_ARB);
attributes.push(version.val0() as libc::c_int);
attributes.push(ffi::WGL_CONTEXT_MINOR_VERSION_ARB);
attributes.push(version.val1() as libc::c_int);
}
attributes.push(0);
let ctxt = unsafe {
match create_context_attribs {
None => ffi::wglCreateContext(hdc),
Some(ptr) => ptr(hdc, ptr::mut_null(), attributes.as_ptr())
Some(ptr) => ptr(hdc, ptr::mut_null(), attributes.as_slice().as_ptr())
}
};