| // Copyright 2010-2012 The W32 Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package w32 |
| |
| import ( |
| "syscall" |
| "unsafe" |
| ) |
| |
| var ( |
| modopengl32 = syscall.NewLazyDLL("opengl32.dll") |
| |
| procwglCreateContext = modopengl32.NewProc("wglCreateContext") |
| procwglCreateLayerContext = modopengl32.NewProc("wglCreateLayerContext") |
| procwglDeleteContext = modopengl32.NewProc("wglDeleteContext") |
| procwglGetProcAddress = modopengl32.NewProc("wglGetProcAddress") |
| procwglMakeCurrent = modopengl32.NewProc("wglMakeCurrent") |
| procwglShareLists = modopengl32.NewProc("wglShareLists") |
| ) |
| |
| func WglCreateContext(hdc HDC) HGLRC { |
| ret, _, _ := procwglCreateContext.Call( |
| uintptr(hdc), |
| ) |
| |
| return HGLRC(ret) |
| } |
| |
| func WglCreateLayerContext(hdc HDC, iLayerPlane int) HGLRC { |
| ret, _, _ := procwglCreateLayerContext.Call( |
| uintptr(hdc), |
| uintptr(iLayerPlane), |
| ) |
| |
| return HGLRC(ret) |
| } |
| |
| func WglDeleteContext(hglrc HGLRC) bool { |
| ret, _, _ := procwglDeleteContext.Call( |
| uintptr(hglrc), |
| ) |
| |
| return ret == TRUE |
| } |
| |
| func WglGetProcAddress(szProc string) uintptr { |
| ret, _, _ := procwglGetProcAddress.Call( |
| uintptr(unsafe.Pointer(syscall.StringBytePtr(szProc))), |
| ) |
| |
| return ret |
| } |
| |
| func WglMakeCurrent(hdc HDC, hglrc HGLRC) bool { |
| ret, _, _ := procwglMakeCurrent.Call( |
| uintptr(hdc), |
| uintptr(hglrc), |
| ) |
| |
| return ret == TRUE |
| } |
| |
| func WglShareLists(hglrc1, hglrc2 HGLRC) bool { |
| ret, _, _ := procwglShareLists.Call( |
| uintptr(hglrc1), |
| uintptr(hglrc2), |
| ) |
| |
| return ret == TRUE |
| } |