Merge pull request #125 from thefiddler/r112

Prepare for 1.1.2 release
This commit is contained in:
thefiddler 2014-05-20 01:11:41 +02:00
commit 0fcd47132c
17 changed files with 7128 additions and 2135 deletions

View file

@ -24,7 +24,7 @@
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>10.0.0</ProductVersion>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<OutputType>Exe</OutputType>
<AssemblyName>Build.Docs</AssemblyName>
@ -55,12 +55,13 @@
</PropertyGroup>
<ItemGroup>
<None Include="Doxyfile" />
<None Include="..\README.md">
<Link>README.md</Link>
</None>
</ItemGroup>
<ItemGroup>
<None Include="Contributors.txt" />
<None Include="Instructions.txt" />
<None Include="License.txt" />
<None Include="Release.txt" />
<None Include="Todo.txt" />
</ItemGroup>
<Target Name="Build">

View file

@ -1,39 +0,0 @@
=== Installation ===
OpenTK does not require installation. Simply decompress the archive to a folder of your choice.
=== Usage ===
Three simple steps:
1. copy "OpenTK.dll" and "OpenTK.dll.config" to your project folder. These can be found under Binaries/OpenTK/Release/
2. add "OpenTK.dll" to your project references.
(Right-click "References" -> "Add Reference" -> "Browse" and locate "OpenTK.dll")
3. set "OpenTK.dll.config" to be copied to your output directory.
(Right-click "OpenTK.dll.config" -> "Properties" and set "Copy to Output Directory" to "Copy Always".)
For more details, refer to http://www.opentk.com/doc
=== Build instructions ===
Double-click OpenTK.sln to build using Visual Studio 2010+, SharpDevelop 3.0+, MonoDevelop 2.0+ or Xamarin Studio.
You can also build from the commandline using:
(.Net)
msbuild OpenTK.sln /p:Configuration=Release
(Mono)
xbuild OpenTK.sln /p:Configuration=Release
The resulting binaries will be placed under the Binaries/OpenTK/[Release|Debug] folders.
=== Troubleshooting ===
When building with MonoDevelop you may encounter an issue regarding a missing “GlobalAssemblyInfo.cs” file. This file is normally generated as a pre-build event, via the “Build.UpdateVersion” project. There are two solutions to this issue:
1. Configure MonoDevelop to use xbuild as its build system.
2. Right-click and run “Build.UpdateVersion” manually.
Older versions of xbuild may produce the same error when building from the commandline. In that case, simply execute xbuild twice - the second run should succeed.

View file

@ -1,145 +0,0 @@
The Open Toolkit 1.1.1
15 March 2014
http://www.opentk.com
https://github.com/opentk/opentk
https://www.nuget.org/packages/OpenTK/
[Overview]
This is the second stable release for OpenTK 1.1. It fixes various reported issues and synchronizes the OpenGL and OpenGL ES API with the March 2014 Khronos specifications.
Changelog:
1. new OpenGL extensions:
- INTEL_performance_query
2. Debug builds will now throw exceptions on OpenGL errors (thanks Frassle!)
3. OpenGL documentation tooltips now report expected array lengths (thanks Frassle!)
4. OpenGL documentation is now generated from the new docbook 5 API reference
3. OpenGL ES now works on more platforms, including Android
4. keyboard events now report Alt, Ctrl, Shift key states
5. GameWindow.Run() now respects TargetRenderFrequency setting
6. GLControl now works on Mac OS X (thanks Sappharad!)
7. external contexts no longer require an explicit call to Toolkit.Init()
8. Joysticks now correctly report hat position on Windows
9. Joysticks now correctly report +y as up and -y as down
OpenTK 1.1.1 is backwards compatible with 1.1.0. Users of previous versions are encouraged to upgrade.
Visit http://www.opentk.com for the latest news and information on the Open Toolkit library.
[Resolved issues]
Visit the following page for a complete list:
- https://github.com/opentk/opentk/issues?milestone=2&page=1&state=closed
[Known issues]
- [all] Keyboard API exposes ushort parameter.
- [SDL2] does not support OpenTK.GLControl.
- [Mac/Carbon] does not support Retina resolutions. Please use the SDL2 backend instead.
- [Mac/Carbon] does not support OpenGL 3.x/4.x. Please use the SDL2 backend instead.
[Report an issue]
If you encounter an issue with OpenTK, please report it at https://github.com/opentk/opentk/issues
Don't forget to mention your operating system and GPU! If possible, try to attach a small, self-contained test case that reproduces the bug.
[API compatibility]
OpenTK 1.1.1 is backwards compatible with 1.1.0.
OpenTK 1.1.0 is not backwards compatible with 1.0. Most projects will be able to upgrade without any modifications. Projects using the following signatures will have to implement the suggested changes:
Namespace OpenTK.Graphics.OpenGL
Change signature:
- GL.MultiDrawArrays (`out` -> `ref`)
- GL.Amd.DeletePerfMonitors (`out` -> `ref`)
Change signature (may cause crash):
- GL.Apple.ObjectPurgeable (returns `AppleObjectPurgeable` instead of `IntPtr`)
- GL.Ext.SeparableFilter2D
- GL.Ibm.EdgeFlagPointerList (`bool[]` -> `bool*[]`)
- GL.NV.TransformFeedbackVaryings (`string[]` -> `int[]`)
Change return type:
- GL.WaitSync (returns `WaitSyncFlags` instead of `ArbSync`)
Namespace OpenTK.Graphics.ES11
Change return type:
- GL.GetError (`ErrorCode` instead of `All`)
Change `ref` parameters to `out`:
- GL.GenBuffers
- GL.GenTextures
- GL.GetBoolean
- GL.GetBufferParameter
- GL.GetClipPlane
- GL.GetClipPlanex
- GL.GetFixed
- GL.GetFloat
- GL.GetInteger
- GL.GetLight
- GL.GetLightx
- GL.GetMaterial
- GL.GetMaterialx
- GL.GetTexEnv
- GL.GetTexEnvx
- GL.GetTexParameter
- GL.GetTexParameterx
- GL.Oes.GenFramebuffers
- GL.Oes.GetClipPlane
- GL.Oes.GetClipPlanex
- GL.Oes.GetFixed
- GL.Oes.GetFramebufferAttachmentParameter
- GL.Oes.GetLightx
- GL.Oes.GetMaterialx
- GL.Oes.GetRenderbufferParameter
- GL.Oes.GetTexEnvx
- GL.Oes.GetTexGen
- GL.Oes.GetTexGenx
- GL.Oes.GetTexParameterx
- GL.Oes.QueryMatrixx
- GL.NV.GenFences
- GL.NV.GetFence
Change namespace:
- GL.ClipPlanefIMG -> GL.Img.ClipPlane
- GL.DisableDriverControlQCOM -> GL.Qcom.DisableDriverControl
Namespace OpenTK.Graphics.ES20.GL
Change signature (may cause crash):
- GL.NV.GetFence now takes three parameters instead of two
Change `ref` parameters to `out`:
- GL.GetActiveAttrib
- GL.GetActiveUniform
- GL.GetAttachedShaders
- GL.GetProgramInfoLog
- GL.GetShaderInfoLog
- GL.GetShaderSource
- GL.Amd.GetPerfMonitorCounterData
- GL.Amd.GetPerfMonitorCounters
- GL.Amd.GetPerfMonitorCounterString
- GL.Amd.GetPerfMonitorGroup
- GL.Amd.GetPerfMonitorGroupString
- GL.Amd.SelectPerfMonitorCounters
Change namespace:
- GL.DisableDriverControlQCOM -> GL.Qcom.DisableDriverControl
- GL.GetDriverControlsQCOM -> GL.Qcom.GetDriverControls
- GL.GetDriverControlStringQCOM -> GL.Qcom.GetDriverControlString

View file

@ -9,5 +9,4 @@
- Add Portable Class Library (PCL) target.
[Hard]
- Merge updates from mono/opentk.
- Add Cocoa backend for Mac OS X.
- Merge with mono/opentk.

255
README.md
View file

@ -1,81 +1,252 @@
OpenTK
======
The Open Toolkit is an advanced, low-level C# library that wraps OpenGL, OpenGL ES and OpenAL. It is suitable for games, scientific applications and any other project that requires 3d graphics, audio or compute functionality.
Project website: http://www.opentk.com/
Official git repository: https://github.com/opentk/opentk
Features
========
- Create cutting-edge graphics with OpenGL 4.4 and OpenGL ES 3.0
- Spice up your GUI with 3d graphics
- Improve your code flow with strong types and inline documentation
- Write once run everywhere!
OpenTK is available on Windows, Linux, Mac OS X, *BSD, SteamOS, Android and iOS. It can be used standalone or integrated into a GUI (Windows.Forms, WPF, GTK+, Qt, VTK, ...)
Current Version 1.1 stable released 2014-Feb-10: http://www.opentk.com/news/opentk-1.1-stable-released
- Write once run everywhere
OpenTK is available for Windows, Linux, Mac OS X, *BSD, SteamOS, Android and iOS. It can be used standalone or integrated into a GUI (Windows.Forms, WPF, GTK+, Qt, VTK, ...)
[Download binaries](http://www.opentk.com) or [NuGet packages](http://www.nuget.org/packages/OpenTK/)
Instructions
============
The simplest way to use OpenTK in your project is to install the [NuGet package](http://www.nuget.org/packages/OpenTK/).
Alternatively, download the [OpenTK binaries](http://www.opentk.com) and:
1. Copy OpenTK.dll and OpenTK.dll.config to your project directory
2. Use "Add reference" to add OpenTK.dll as a project reference
3. Use "Add files" to add OpenTK.dll.config to your project, and enable the "Copy to Output Directory" option.
If you wish to build OpenTK from source, simply double-click OpenTK.sln
News
====
OpenTK 1.1.2 was released on 19 May 2014.
It contains performance and stability improvements and synchronizes the OpenGL and OpenGL ES bindings with the May 2014 Khronos specifications.
**Changelog:**
1. New Cocoa backend for Mac OS X, with support for OpenGL 4.x and retina displays. Huge thanks to [Ollhax](https://github.com/Ollhax) for implementing the backend from scratch, including the necessary Cocoa bindings!
2. Custom hardware cursors are now supported: `INativeWindow.Cursor = new MouseCursor(...)`
3. Up to 2000% improvement in binding loading speed. The exact numbers depend on the operating system and hardware configuration. On a Nvidia 650M GPU and a 2.3GHz processor:
- Linux: 6.5ms instead of 45ms
- MacOS: 9.5ms instead of 165ms
- Win64: 5.9ms instead of 108ms
4. Up to 1000% improvement in memory consumption. The object graph has been reduced from 9000 to 900 objects, consuming between 185-220KB of memory depending on the platform and hardware configuration.
5. Support for high-resolution X/Y scrolling on all platforms:
- `OpenTK.Input.MouseState.Scroll.X/Y`
6. Improved mouse input APIs:
- new INativeWindow.MouseMove, MouseUp, MouseDown and MouseWheel events
- new OpenTK.Mouse.GetCursorPos() API to retrieve the state of the system cursor
- all mouse event arguments now carry the current MouseState
7. Improved keyboard input APIs:
- support for non-US layouts on Linux/X11
- all keyboard event arguments now carry the current KeyboardState
- all keyboard event arguments now report the correct KeyModifiers state
8. New OpenGL extensions:
- AMD_gcn_shader
- AMD_gpu_shader_int64
- AMD_transform_feedback4
- EXT_shader_image_load_formatted
- NV_shader_thread_group
- NV_shader_thread_shuffle
9. New OpenGL ES extensions:
- ARM_shader_framebuffer_fetch
- ARM_shader_framebuffer_fetch_depth_stencil
- EXT_shader_pixel_local_storage
- KHR_blend_equation_advanced
- OES_sample_shading
- OES_sample_variables
- OES_shader_image_atomic
- OES_shader_multisample_interpolation
- OES_texture_stencil8
- OES_texture_storage_multisample_2d_array
10. Improved OpenGL ES documentation tooltips.
11. Improved stability when using EGL on Linux and Windows/ANGLE.
12. Improved stability when using SDL2 on 32bit platforms.
13. Improved the shutdown sequence on X11.
14. Fixed a marshaling issue affecting 2d and 3d arrays on Windows/.Net.
OpenTK 1.1.2 is backwards compatible with 1.1.1. Users of previous versions are encouraged to upgrade.
Known issues
============
The SDL2 backend has a number of limitations compared to the native platform backends. In particular, SDL2 does not support:
- `OpenTK.GLControl`. OpenTK will automatically use a native platform backend instead.
- `DisplayDevice.ChangeResolution()` without a fullscreen `INativeWindow`.
- changing `INativeWindow.WindowBorder` once a window is created.
- high-resolution mouse input. Additionally, it is limited to a single keyboard and mouse device.
Binaries available at http://www.opentk.com
NuGet packages at http://www.nuget.org/packages/OpenTK/
Roadmap
=======
- Merge opentk/opentk (upstream) with mono/opentk (Xamarin)
- Add Portable Class Library (PCL) target
- Add multitouch API
- Add new platforms: NaCL, emscripten, Windows Metro, Ouya, Raspberry PI
- Improve OpenCL bindings
- Improve math library
Contributing
============
1. Install git and a C# IDE (see requirements section below)
2. Fork the _develop_ branch of https://github.com/opentk/opentk
3. Commit your changes in small, incremental steps with clear descriptions
4. When ready, issue a Pull Request (PR) against the _develop_ branch of https://github.com/opentk/opentk
For details on coding style and best practices, refer to https://github.com/opentk/opentk/wiki/Contributing
Some areas we could really use your help:
- Tutorials for OpenGL 3.x and 4.x. [Inspiration here](https://github.com/Groovounet/ogl-samples)
- New platforms:
- Native Client (NaCL)
- Raspberry PI (EGL without X11)
- Wayland
- Mir
- WinRT (via ANGLE)
- New features:
- Multitouch
- Clipboard
- Input Method Editors (IMEs)
- USB HID joystick backend (Windows, Linux)
Further ideas for improvement are always welcome.
Requirements
============
- Windows (XP/Vista/7/8), Linux, Mac OS X, *BSD, SteamOS, Android or iOS
- For graphics, OpenGL drivers or a suitable emulator, such as [ANGLE](https://github.com/opentk/opentk/tree/Dependencies/Readme.txt)
- For audio, OpenAL drivers or [OpenAL Soft](https://github.com/opentk/opentk/tree/Dependencies/Readme.txt)
- To develop desktop applications: Visual Studio, Xamarin Studio, MonoDevelop or SharpDevelop
- To develop Android applications: Xamarin Studio or the Xamarin Extensions for Visual Studio
- To develop iOS applications: Xamarin Studio and XCode
Documentation
=============
Your favorite IDE will display inline documentation for all OpenTK APIs. Additional information can be found in the [OpenTK Manual](http://www.opentk.com/doc) and in the [opentk/Documentation/](https://github.com/opentk/opentk/tree/develop/Documentation) folder.
Technical documentation about the implementation of OpenTK can be found in the [Technical Wiki](https://github.com/opentk/opentk/wiki).
Need Help?
==========
Post your questions at the [OpenTK forums](http://www.opentk.com/forum).
Report bugs at https://github.com/opentk/opentk/issues
License
=======
The Open Toolkit is distributed under the permissive MIT/X11 license and is absolutely free.
http://www.opentk.com/project/license
API compatibility
=================
OpenTK 1.1.2 is backwards compatible with 1.1.1.
OpenTK 1.1.1 is backwards compatible with 1.1.0.
OpenTK 1.1.0 is not backwards compatible with 1.0. Most projects will be able to upgrade without any modifications. Projects using the following signatures will have to implement the suggested changes:
Namespace OpenTK.Graphics.OpenGL
Change signature:
- GL.MultiDrawArrays (`out` -> `ref`)
- GL.Amd.DeletePerfMonitors (`out` -> `ref`)
Change signature (may cause crash):
- GL.Apple.ObjectPurgeable (returns `AppleObjectPurgeable` instead of `IntPtr`)
- GL.Ext.SeparableFilter2D
- GL.Ibm.EdgeFlagPointerList (`bool[]` -> `bool*[]`)
- GL.NV.TransformFeedbackVaryings (`string[]` -> `int[]`)
Change return type:
- GL.WaitSync (returns `WaitSyncFlags` instead of `ArbSync`)
Namespace OpenTK.Graphics.ES11
Change return type:
- GL.GetError (`ErrorCode` instead of `All`)
Change `ref` parameters to `out`:
- GL.GenBuffers
- GL.GenTextures
- GL.GetBoolean
- GL.GetBufferParameter
- GL.GetClipPlane
- GL.GetClipPlanex
- GL.GetFixed
- GL.GetFloat
- GL.GetInteger
- GL.GetLight
- GL.GetLightx
- GL.GetMaterial
- GL.GetMaterialx
- GL.GetTexEnv
- GL.GetTexEnvx
- GL.GetTexParameter
- GL.GetTexParameterx
- GL.Oes.GenFramebuffers
- GL.Oes.GetClipPlane
- GL.Oes.GetClipPlanex
- GL.Oes.GetFixed
- GL.Oes.GetFramebufferAttachmentParameter
- GL.Oes.GetLightx
- GL.Oes.GetMaterialx
- GL.Oes.GetRenderbufferParameter
- GL.Oes.GetTexEnvx
- GL.Oes.GetTexGen
- GL.Oes.GetTexGenx
- GL.Oes.GetTexParameterx
- GL.Oes.QueryMatrixx
- GL.NV.GenFences
- GL.NV.GetFence
Change namespace:
- GL.ClipPlanefIMG -> GL.Img.ClipPlane
- GL.DisableDriverControlQCOM -> GL.Qcom.DisableDriverControl
Namespace OpenTK.Graphics.ES20.GL
Change signature (may cause crash):
- GL.NV.GetFence now takes three parameters instead of two
Change `ref` parameters to `out`:
- GL.GetActiveAttrib
- GL.GetActiveUniform
- GL.GetAttachedShaders
- GL.GetProgramInfoLog
- GL.GetShaderInfoLog
- GL.GetShaderSource
- GL.Amd.GetPerfMonitorCounterData
- GL.Amd.GetPerfMonitorCounters
- GL.Amd.GetPerfMonitorCounterString
- GL.Amd.GetPerfMonitorGroup
- GL.Amd.GetPerfMonitorGroupString
- GL.Amd.SelectPerfMonitorCounters
Change namespace:
- GL.DisableDriverControlQCOM -> GL.Qcom.DisableDriverControl
- GL.GetDriverControlsQCOM -> GL.Qcom.GetDriverControls
- GL.GetDriverControlStringQCOM -> GL.Qcom.GetDriverControlString

View file

@ -5767,9 +5767,11 @@
<token name="LINE_STRIP_ADJACENCY_ARB" value="0x000B" />
<token name="LINE_STRIP_ADJACENCY_EXT" value="0x000B" />
<token name="PATCHES" value="0x000E" />
<token name="PATCHES_EXT" value="0x000E" />
<token name="POINTS" value="0x0000" />
<token name="POLYGON" value="0x0009" deprecated="3.2" />
<token name="QUADS" value="0x0007" />
<token name="QUADS_EXT" value="0x0007" />
<token name="QUAD_STRIP" value="0x0008" deprecated="3.2" />
<token name="TRIANGLES" value="0x0004" />
<token name="TRIANGLES_ADJACENCY" value="0x000C" />
@ -6394,8 +6396,11 @@
<token name="FRAGMENT_SHADER_BIT" value="0x00000002" />
<token name="FRAGMENT_SHADER_BIT_EXT" value="0x00000002" />
<token name="GEOMETRY_SHADER_BIT" value="0x00000004" />
<token name="GEOMETRY_SHADER_BIT_EXT" value="0x00000004" />
<token name="TESS_CONTROL_SHADER_BIT" value="0x00000008" />
<token name="TESS_CONTROL_SHADER_BIT_EXT" value="0x00000008" />
<token name="TESS_EVALUATION_SHADER_BIT" value="0x00000010" />
<token name="TESS_EVALUATION_SHADER_BIT_EXT" value="0x00000010" />
<token name="COMPUTE_SHADER_BIT" value="0x00000020" />
<token name="ALL_SHADER_BITS" value="0xFFFFFFFF" />
<token name="ALL_SHADER_BITS_EXT" value="0xFFFFFFFF" />
@ -29018,8 +29023,10 @@
<token name="LINE_STRIP_ADJACENCY_ARB" value="0x000B" />
<token name="LINE_STRIP_ADJACENCY_EXT" value="0x000B" />
<token name="PATCHES" value="0x000E" />
<token name="PATCHES_EXT" value="0x000E" />
<token name="POINTS" value="0x0000" />
<token name="QUADS" value="0x0007" />
<token name="QUADS_EXT" value="0x0007" />
<token name="TRIANGLES" value="0x0004" />
<token name="TRIANGLES_ADJACENCY" value="0x000C" />
<token name="TRIANGLES_ADJACENCY_ARB" value="0x000C" />
@ -29224,8 +29231,11 @@
<token name="FRAGMENT_SHADER_BIT" value="0x00000002" />
<token name="FRAGMENT_SHADER_BIT_EXT" value="0x00000002" />
<token name="GEOMETRY_SHADER_BIT" value="0x00000004" />
<token name="GEOMETRY_SHADER_BIT_EXT" value="0x00000004" />
<token name="TESS_CONTROL_SHADER_BIT" value="0x00000008" />
<token name="TESS_CONTROL_SHADER_BIT_EXT" value="0x00000008" />
<token name="TESS_EVALUATION_SHADER_BIT" value="0x00000010" />
<token name="TESS_EVALUATION_SHADER_BIT_EXT" value="0x00000010" />
<token name="COMPUTE_SHADER_BIT" value="0x00000020" />
<token name="ALL_SHADER_BITS" value="0xFFFFFFFF" />
<token name="ALL_SHADER_BITS_EXT" value="0xFFFFFFFF" />
@ -38768,9 +38778,11 @@
<token name="LINE_STRIP_ADJACENCY_ARB" value="0x000B" />
<token name="LINE_STRIP_ADJACENCY_EXT" value="0x000B" />
<token name="PATCHES" value="0x000E" />
<token name="PATCHES_EXT" value="0x000E" />
<token name="POINTS" value="0x0000" />
<token name="POLYGON" value="0x0009" deprecated="3.2" />
<token name="QUADS" value="0x0007" deprecated="3.2" />
<token name="QUADS_EXT" value="0x0007" />
<token name="QUAD_STRIP" value="0x0008" deprecated="3.2" />
<token name="TRIANGLES" value="0x0004" />
<token name="TRIANGLES_ADJACENCY" value="0x000C" />
@ -39057,8 +39069,11 @@
<token name="FRAGMENT_SHADER_BIT" value="0x00000002" />
<token name="FRAGMENT_SHADER_BIT_EXT" value="0x00000002" />
<token name="GEOMETRY_SHADER_BIT" value="0x00000004" />
<token name="GEOMETRY_SHADER_BIT_EXT" value="0x00000004" />
<token name="TESS_CONTROL_SHADER_BIT" value="0x00000008" />
<token name="TESS_CONTROL_SHADER_BIT_EXT" value="0x00000008" />
<token name="TESS_EVALUATION_SHADER_BIT" value="0x00000010" />
<token name="TESS_EVALUATION_SHADER_BIT_EXT" value="0x00000010" />
<token name="COMPUTE_SHADER_BIT" value="0x00000020" />
<token name="ALL_SHADER_BITS" value="0xFFFFFFFF" />
<token name="ALL_SHADER_BITS_EXT" value="0xFFFFFFFF" />
@ -42067,6 +42082,7 @@
<token name="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT" value="0x8211" />
<token name="UNSIGNED_NORMALIZED_EXT" value="0x8C17" />
</enum>
<enum name="EXT_copy_image" />
<enum name="EXT_debug_label">
<token name="PROGRAM_PIPELINE_OBJECT_EXT" value="0x8A4F" />
<token name="PROGRAM_OBJECT_EXT" value="0x8B40" />
@ -42128,7 +42144,73 @@
<token name="COLOR_ATTACHMENT14_EXT" value="0x8CEE" />
<token name="COLOR_ATTACHMENT15_EXT" value="0x8CEF" />
</enum>
<enum name="EXT_draw_buffers_indexed">
<token name="BLEND_EQUATION_RGB" value="0x8009" />
<token name="BLEND_EQUATION_ALPHA" value="0x883D" />
<token name="BLEND_SRC_RGB" value="0x80C9" />
<token name="BLEND_SRC_ALPHA" value="0x80CB" />
<token name="BLEND_DST_RGB" value="0x80C8" />
<token name="BLEND_DST_ALPHA" value="0x80CA" />
<token name="COLOR_WRITEMASK" value="0x0C23" />
<token name="BLEND" value="0x0BE2" />
<token name="FUNC_ADD" value="0x8006" />
<token name="FUNC_SUBTRACT" value="0x800A" />
<token name="FUNC_REVERSE_SUBTRACT" value="0x800B" />
<token name="MIN" value="0x8007" />
<token name="MAX" value="0x8008" />
<token name="ZERO" value="0" />
<token name="ONE" value="1" />
<token name="SRC_COLOR" value="0x0300" />
<token name="ONE_MINUS_SRC_COLOR" value="0x0301" />
<token name="DST_COLOR" value="0x0306" />
<token name="ONE_MINUS_DST_COLOR" value="0x0307" />
<token name="SRC_ALPHA" value="0x0302" />
<token name="ONE_MINUS_SRC_ALPHA" value="0x0303" />
<token name="DST_ALPHA" value="0x0304" />
<token name="ONE_MINUS_DST_ALPHA" value="0x0305" />
<token name="CONSTANT_COLOR" value="0x8001" />
<token name="ONE_MINUS_CONSTANT_COLOR" value="0x8002" />
<token name="CONSTANT_ALPHA" value="0x8003" />
<token name="ONE_MINUS_CONSTANT_ALPHA" value="0x8004" />
<token name="SRC_ALPHA_SATURATE" value="0x0308" />
</enum>
<enum name="EXT_draw_instanced" />
<enum name="EXT_geometry_shader">
<token name="GEOMETRY_SHADER_EXT" value="0x8DD9" />
<token name="GEOMETRY_SHADER_BIT_EXT" value="0x00000004" />
<token name="GEOMETRY_LINKED_VERTICES_OUT_EXT" value="0x8916" />
<token name="GEOMETRY_LINKED_INPUT_TYPE_EXT" value="0x8917" />
<token name="GEOMETRY_LINKED_OUTPUT_TYPE_EXT" value="0x8918" />
<token name="GEOMETRY_SHADER_INVOCATIONS_EXT" value="0x887F" />
<token name="LAYER_PROVOKING_VERTEX_EXT" value="0x825E" />
<token name="LINES_ADJACENCY_EXT" value="0x000A" />
<token name="LINE_STRIP_ADJACENCY_EXT" value="0x000B" />
<token name="TRIANGLES_ADJACENCY_EXT" value="0x000C" />
<token name="TRIANGLE_STRIP_ADJACENCY_EXT" value="0x000D" />
<token name="MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT" value="0x8DDF" />
<token name="MAX_GEOMETRY_UNIFORM_BLOCKS_EXT" value="0x8A2C" />
<token name="MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT" value="0x8A32" />
<token name="MAX_GEOMETRY_INPUT_COMPONENTS_EXT" value="0x9123" />
<token name="MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT" value="0x9124" />
<token name="MAX_GEOMETRY_OUTPUT_VERTICES_EXT" value="0x8DE0" />
<token name="MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT" value="0x8DE1" />
<token name="MAX_GEOMETRY_SHADER_INVOCATIONS_EXT" value="0x8E5A" />
<token name="MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT" value="0x8C29" />
<token name="MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT" value="0x92CF" />
<token name="MAX_GEOMETRY_ATOMIC_COUNTERS_EXT" value="0x92D5" />
<token name="MAX_GEOMETRY_IMAGE_UNIFORMS_EXT" value="0x90CD" />
<token name="MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT" value="0x90D7" />
<token name="FIRST_VERTEX_CONVENTION_EXT" value="0x8E4D" />
<token name="LAST_VERTEX_CONVENTION_EXT" value="0x8E4E" />
<token name="UNDEFINED_VERTEX_EXT" value="0x8260" />
<token name="PRIMITIVES_GENERATED_EXT" value="0x8C87" />
<token name="FRAMEBUFFER_DEFAULT_LAYERS_EXT" value="0x9312" />
<token name="MAX_FRAMEBUFFER_LAYERS_EXT" value="0x9317" />
<token name="FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT" value="0x8DA8" />
<token name="FRAMEBUFFER_ATTACHMENT_LAYERED_EXT" value="0x8DA7" />
<token name="REFERENCED_BY_GEOMETRY_SHADER_EXT" value="0x9309" />
</enum>
<enum name="EXT_gpu_shader5" />
<enum name="EXT_instanced_arrays">
<token name="VERTEX_ATTRIB_ARRAY_DIVISOR_EXT" value="0x88FE" />
</enum>
@ -42166,6 +42248,8 @@
<token name="COMPRESSED_SRGB_PVRTC_4BPPV1_EXT" value="0x8A55" />
<token name="COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT" value="0x8A56" />
<token name="COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT" value="0x8A57" />
<token name="COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG" value="0x93F0" />
<token name="COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG" value="0x93F1" />
</enum>
<enum name="EXT_read_format_bgra">
<token name="BGRA_EXT" value="0x80E1" />
@ -42194,7 +42278,9 @@
<enum name="EXT_shader_framebuffer_fetch">
<token name="FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT" value="0x8A52" />
</enum>
<enum name="EXT_shader_implicit_conversions" />
<enum name="EXT_shader_integer_mix" />
<enum name="EXT_shader_io_blocks" />
<enum name="EXT_shader_pixel_local_storage">
<token name="MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT" value="0x8F63" />
<token name="MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT" value="0x8F67" />
@ -42216,6 +42302,75 @@
<enum name="EXT_sRGB_write_control">
<token name="FRAMEBUFFER_SRGB_EXT" value="0x8DB9" />
</enum>
<enum name="EXT_tessellation_shader">
<token name="PATCHES_EXT" value="0x000E" />
<token name="PATCH_VERTICES_EXT" value="0x8E72" />
<token name="TESS_CONTROL_OUTPUT_VERTICES_EXT" value="0x8E75" />
<token name="TESS_GEN_MODE_EXT" value="0x8E76" />
<token name="TESS_GEN_SPACING_EXT" value="0x8E77" />
<token name="TESS_GEN_VERTEX_ORDER_EXT" value="0x8E78" />
<token name="TESS_GEN_POINT_MODE_EXT" value="0x8E79" />
<token name="TRIANGLES" value="0x0004" />
<token name="ISOLINES_EXT" value="0x8E7A" />
<token name="QUADS_EXT" value="0x0007" />
<token name="EQUAL" value="0x0202" />
<token name="FRACTIONAL_ODD_EXT" value="0x8E7B" />
<token name="FRACTIONAL_EVEN_EXT" value="0x8E7C" />
<token name="CCW" value="0x0901" />
<token name="CW" value="0x0900" />
<token name="MAX_PATCH_VERTICES_EXT" value="0x8E7D" />
<token name="MAX_TESS_GEN_LEVEL_EXT" value="0x8E7E" />
<token name="MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT" value="0x8E7F" />
<token name="MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT" value="0x8E80" />
<token name="MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT" value="0x8E81" />
<token name="MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT" value="0x8E82" />
<token name="MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT" value="0x8E83" />
<token name="MAX_TESS_PATCH_COMPONENTS_EXT" value="0x8E84" />
<token name="MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT" value="0x8E85" />
<token name="MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT" value="0x8E86" />
<token name="MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT" value="0x8E89" />
<token name="MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT" value="0x8E8A" />
<token name="MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT" value="0x886C" />
<token name="MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT" value="0x886D" />
<token name="MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT" value="0x8E1E" />
<token name="MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT" value="0x8E1F" />
<token name="MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT" value="0x92CD" />
<token name="MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT" value="0x92CE" />
<token name="MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT" value="0x92D3" />
<token name="MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT" value="0x92D4" />
<token name="MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT" value="0x90CB" />
<token name="MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT" value="0x90CC" />
<token name="MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT" value="0x90D8" />
<token name="MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT" value="0x90D9" />
<token name="PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED" value="0x8221" />
<token name="IS_PER_PATCH_EXT" value="0x92E7" />
<token name="REFERENCED_BY_TESS_CONTROL_SHADER_EXT" value="0x9307" />
<token name="REFERENCED_BY_TESS_EVALUATION_SHADER_EXT" value="0x9308" />
<token name="TESS_CONTROL_SHADER_EXT" value="0x8E88" />
<token name="TESS_EVALUATION_SHADER_EXT" value="0x8E87" />
<token name="TESS_CONTROL_SHADER_BIT_EXT" value="0x00000008" />
<token name="TESS_EVALUATION_SHADER_BIT_EXT" value="0x00000010" />
</enum>
<enum name="EXT_texture_border_clamp">
<token name="TEXTURE_BORDER_COLOR_EXT" value="0x1004" />
<token name="CLAMP_TO_BORDER_EXT" value="0x812D" />
</enum>
<enum name="EXT_texture_buffer">
<token name="TEXTURE_BUFFER_EXT" value="0x8C2A" />
<token name="TEXTURE_BUFFER_BINDING_EXT" value="0x8C2A" />
<token name="MAX_TEXTURE_BUFFER_SIZE_EXT" value="0x8C2B" />
<token name="TEXTURE_BINDING_BUFFER_EXT" value="0x8C2C" />
<token name="TEXTURE_BUFFER_DATA_STORE_BINDING_EXT" value="0x8C2D" />
<token name="TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT" value="0x919F" />
<token name="SAMPLER_BUFFER_EXT" value="0x8DC2" />
<token name="INT_SAMPLER_BUFFER_EXT" value="0x8DD0" />
<token name="UNSIGNED_INT_SAMPLER_BUFFER_EXT" value="0x8DD8" />
<token name="IMAGE_BUFFER_EXT" value="0x9051" />
<token name="INT_IMAGE_BUFFER_EXT" value="0x905C" />
<token name="UNSIGNED_INT_IMAGE_BUFFER_EXT" value="0x9067" />
<token name="TEXTURE_BUFFER_OFFSET_EXT" value="0x919D" />
<token name="TEXTURE_BUFFER_SIZE_EXT" value="0x919E" />
</enum>
<enum name="EXT_texture_compression_dxt1">
<token name="COMPRESSED_RGB_S3TC_DXT1_EXT" value="0x83F0" />
<token name="COMPRESSED_RGBA_S3TC_DXT1_EXT" value="0x83F1" />
@ -42226,6 +42381,17 @@
<token name="COMPRESSED_RGBA_S3TC_DXT3_EXT" value="0x83F2" />
<token name="COMPRESSED_RGBA_S3TC_DXT5_EXT" value="0x83F3" />
</enum>
<enum name="EXT_texture_cube_map_array">
<token name="TEXTURE_CUBE_MAP_ARRAY_EXT" value="0x9009" />
<token name="TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT" value="0x900A" />
<token name="SAMPLER_CUBE_MAP_ARRAY_EXT" value="0x900C" />
<token name="SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT" value="0x900D" />
<token name="INT_SAMPLER_CUBE_MAP_ARRAY_EXT" value="0x900E" />
<token name="UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT" value="0x900F" />
<token name="IMAGE_CUBE_MAP_ARRAY_EXT" value="0x9054" />
<token name="INT_IMAGE_CUBE_MAP_ARRAY_EXT" value="0x905F" />
<token name="UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT" value="0x906A" />
</enum>
<enum name="EXT_texture_filter_anisotropic">
<token name="TEXTURE_MAX_ANISOTROPY_EXT" value="0x84FE" />
<token name="MAX_TEXTURE_MAX_ANISOTROPY_EXT" value="0x84FF" />
@ -42272,6 +42438,13 @@
<enum name="EXT_texture_type_2_10_10_10_REV">
<token name="UNSIGNED_INT_2_10_10_10_REV_EXT" value="0x8368" />
</enum>
<enum name="EXT_texture_view">
<token name="TEXTURE_VIEW_MIN_LEVEL_EXT" value="0x82DB" />
<token name="TEXTURE_VIEW_NUM_LEVELS_EXT" value="0x82DC" />
<token name="TEXTURE_VIEW_MIN_LAYER_EXT" value="0x82DD" />
<token name="TEXTURE_VIEW_NUM_LAYERS_EXT" value="0x82DE" />
<token name="TEXTURE_IMMUTABLE_LEVELS" value="0x82DF" />
</enum>
<enum name="EXT_unpack_subimage">
<token name="UNPACK_ROW_LENGTH_EXT" value="0x0CF2" />
<token name="UNPACK_SKIP_ROWS_EXT" value="0x0CF3" />
@ -44005,9 +44178,11 @@
<token name="LINE_STRIP_ADJACENCY_ARB" value="0x000B" />
<token name="LINE_STRIP_ADJACENCY_EXT" value="0x000B" />
<token name="PATCHES" value="0x000E" />
<token name="PATCHES_EXT" value="0x000E" />
<token name="POINTS" value="0x0000" />
<token name="POLYGON" value="0x0009" deprecated="3.2" />
<token name="QUADS" value="0x0007" deprecated="3.2" />
<token name="QUADS_EXT" value="0x0007" />
<token name="QUAD_STRIP" value="0x0008" deprecated="3.2" />
<token name="TRIANGLES" value="0x0004" />
<token name="TRIANGLES_ADJACENCY" value="0x000C" />
@ -44305,8 +44480,11 @@
<token name="FRAGMENT_SHADER_BIT" value="0x00000002" />
<token name="FRAGMENT_SHADER_BIT_EXT" value="0x00000002" />
<token name="GEOMETRY_SHADER_BIT" value="0x00000004" />
<token name="GEOMETRY_SHADER_BIT_EXT" value="0x00000004" />
<token name="TESS_CONTROL_SHADER_BIT" value="0x00000008" />
<token name="TESS_CONTROL_SHADER_BIT_EXT" value="0x00000008" />
<token name="TESS_EVALUATION_SHADER_BIT" value="0x00000010" />
<token name="TESS_EVALUATION_SHADER_BIT_EXT" value="0x00000010" />
<token name="COMPUTE_SHADER_BIT" value="0x00000020" />
<token name="ALL_SHADER_BITS" value="0xFFFFFFFF" />
<token name="ALL_SHADER_BITS_EXT" value="0xFFFFFFFF" />
@ -44365,6 +44543,31 @@
<param name="mode" type="BlendEquationModeEXT" flow="in" />
<returns type="void" />
</function>
<function name="BlendEquationiEXT" category="EXT_draw_buffers_indexed" extension="EXT">
<param name="buf" type="GLuint" flow="in" />
<param name="mode" type="GLenum" flow="in" />
<returns type="void" />
</function>
<function name="BlendEquationSeparateiEXT" category="EXT_draw_buffers_indexed" extension="EXT">
<param name="buf" type="GLuint" flow="in" />
<param name="modeRGB" type="GLenum" flow="in" />
<param name="modeAlpha" type="GLenum" flow="in" />
<returns type="void" />
</function>
<function name="BlendFunciEXT" category="EXT_draw_buffers_indexed" extension="EXT">
<param name="buf" type="GLuint" flow="in" />
<param name="src" type="GLenum" flow="in" />
<param name="dst" type="GLenum" flow="in" />
<returns type="void" />
</function>
<function name="BlendFuncSeparateiEXT" category="EXT_draw_buffers_indexed" extension="EXT">
<param name="buf" type="GLuint" flow="in" />
<param name="srcRGB" type="GLenum" flow="in" />
<param name="dstRGB" type="GLenum" flow="in" />
<param name="srcAlpha" type="GLenum" flow="in" />
<param name="dstAlpha" type="GLenum" flow="in" />
<returns type="void" />
</function>
<function name="BlendParameteriNV" category="NV_blend_equation_advanced" extension="NV">
<param name="pname" type="GLenum" flow="in" />
<param name="value" type="GLint" flow="in" />
@ -44402,6 +44605,14 @@
<param name="timeout" type="GLuint64" flow="in" />
<returns type="GLenum" />
</function>
<function name="ColorMaskiEXT" category="EXT_draw_buffers_indexed" extension="EXT">
<param name="index" type="GLuint" flow="in" />
<param name="r" type="Boolean" flow="in" />
<param name="g" type="Boolean" flow="in" />
<param name="b" type="Boolean" flow="in" />
<param name="a" type="Boolean" flow="in" />
<returns type="void" />
</function>
<function name="CompressedTexImage3DOES" category="OES_texture_3D" extension="OES">
<param name="target" type="GLenum" flow="in" />
<param name="level" type="GLint" flow="in" />
@ -44436,6 +44647,24 @@
<param name="size" type="BufferSize" flow="in" />
<returns type="void" />
</function>
<function name="CopyImageSubDataEXT" category="EXT_copy_image" extension="EXT">
<param name="srcName" type="GLuint" flow="in" />
<param name="srcTarget" type="GLenum" flow="in" />
<param name="srcLevel" type="GLint" flow="in" />
<param name="srcX" type="GLint" flow="in" />
<param name="srcY" type="GLint" flow="in" />
<param name="srcZ" type="GLint" flow="in" />
<param name="dstName" type="GLuint" flow="in" />
<param name="dstTarget" type="GLenum" flow="in" />
<param name="dstLevel" type="GLint" flow="in" />
<param name="dstX" type="GLint" flow="in" />
<param name="dstY" type="GLint" flow="in" />
<param name="dstZ" type="GLint" flow="in" />
<param name="srcWidth" type="GLsizei" flow="in" />
<param name="srcHeight" type="GLsizei" flow="in" />
<param name="srcDepth" type="GLsizei" flow="in" />
<returns type="void" />
</function>
<function name="CopyTexSubImage3DOES" category="OES_texture_3D" extension="OES">
<param name="target" type="GLenum" flow="in" />
<param name="level" type="GLint" flow="in" />
@ -44562,6 +44791,11 @@
<param name="driverControl" type="GLuint" flow="in" />
<returns type="void" />
</function>
<function name="DisableiEXT" category="EXT_draw_buffers_indexed" extension="EXT">
<param name="target" type="GLenum" flow="in" />
<param name="index" type="GLuint" flow="in" />
<returns type="void" />
</function>
<function name="DiscardFramebufferEXT" category="EXT_discard_framebuffer" extension="EXT">
<param name="target" type="GLenum" flow="in" />
<param name="numAttachments" type="GLsizei" flow="in" />
@ -44643,6 +44877,11 @@
<param name="driverControl" type="GLuint" flow="in" />
<returns type="void" />
</function>
<function name="EnableiEXT" category="EXT_draw_buffers_indexed" extension="EXT">
<param name="target" type="GLenum" flow="in" />
<param name="index" type="GLuint" flow="in" />
<returns type="void" />
</function>
<function name="EndPerfMonitorAMD" category="AMD_performance_monitor" extension="AMD">
<param name="monitor" type="GLuint" flow="in" />
<returns type="void" />
@ -44781,6 +45020,13 @@
<param name="zoffset" type="GLint" flow="in" />
<returns type="void" />
</function>
<function name="FramebufferTextureEXT" category="EXT_geometry_shader" extension="EXT">
<param name="target" type="FramebufferTarget" flow="in" />
<param name="attachment" type="FramebufferAttachment" flow="in" />
<param name="texture" type="Texture" flow="in" />
<param name="level" type="CheckedInt32" flow="in" />
<returns type="void" />
</function>
<function name="GenFencesNV" category="NV_fence" extension="NV">
<param name="n" type="GLsizei" flow="in" />
<param name="fences" type="FenceNV *" flow="out" count="n" />
@ -45070,6 +45316,18 @@
<param name="params" type="GLuint *" flow="out" />
<returns type="void" />
</function>
<function name="GetSamplerParameterIivEXT" category="EXT_texture_border_clamp" extension="EXT">
<param name="sampler" type="GLuint" flow="in" />
<param name="pname" type="GLenum" flow="in" />
<param name="params" type="GLint *" flow="out" count="COMPSIZE(pname)" />
<returns type="void" />
</function>
<function name="GetSamplerParameterIuivEXT" category="EXT_texture_border_clamp" extension="EXT">
<param name="sampler" type="GLuint" flow="in" />
<param name="pname" type="GLenum" flow="in" />
<param name="params" type="GLuint *" flow="out" count="COMPSIZE(pname)" />
<returns type="void" />
</function>
<function name="GetSyncivAPPLE" category="APPLE_sync" extension="APPLE">
<param name="sync" type="GLsync" flow="in" />
<param name="pname" type="GLenum" flow="in" />
@ -45078,6 +45336,18 @@
<param name="values" type="GLint *" flow="out" count="bufSize" />
<returns type="void" />
</function>
<function name="GetTexParameterIivEXT" category="EXT_texture_border_clamp" extension="EXT">
<param name="target" type="TextureTarget" flow="in" />
<param name="pname" type="GetTextureParameter" flow="in" />
<param name="params" type="GLint *" flow="out" count="COMPSIZE(pname)" />
<returns type="void" />
</function>
<function name="GetTexParameterIuivEXT" category="EXT_texture_border_clamp" extension="EXT">
<param name="target" type="TextureTarget" flow="in" />
<param name="pname" type="GetTextureParameter" flow="in" />
<param name="params" type="GLuint *" flow="out" count="COMPSIZE(pname)" />
<returns type="void" />
</function>
<function name="GetTranslatedShaderSourceANGLE" category="ANGLE_translated_shader_source" extension="ANGLE">
<param name="shader" type="GLuint" flow="in" />
<param name="bufsize" type="GLsizei" flow="in" />
@ -45090,6 +45360,11 @@
<param name="marker" type="GLchar *" flow="in" />
<returns type="void" />
</function>
<function name="IsEnablediEXT" category="EXT_draw_buffers_indexed" extension="EXT">
<param name="target" type="GLenum" flow="in" />
<param name="index" type="GLuint" flow="in" />
<returns type="Boolean" />
</function>
<function name="IsFenceNV" category="NV_fence" extension="NV">
<param name="fence" type="FenceNV" flow="in" />
<returns type="Boolean" />
@ -45174,6 +45449,11 @@
<param name="label" type="GLchar *" flow="in" />
<returns type="void" />
</function>
<function name="PatchParameteriEXT" category="EXT_tessellation_shader" extension="EXT">
<param name="pname" type="GLenum" flow="in" />
<param name="value" type="GLint" flow="in" />
<returns type="void" />
</function>
<function name="PopDebugGroup" category="KHR_debug" extension="Core">
<returns type="void" />
</function>
@ -45529,6 +45809,18 @@
<function name="ResolveMultisampleFramebufferAPPLE" category="APPLE_framebuffer_multisample" extension="APPLE">
<returns type="void" />
</function>
<function name="SamplerParameterIivEXT" category="EXT_texture_border_clamp" extension="EXT">
<param name="sampler" type="GLuint" flow="in" />
<param name="pname" type="GLenum" flow="in" />
<param name="param" type="GLint *" flow="in" count="COMPSIZE(pname)" />
<returns type="void" />
</function>
<function name="SamplerParameterIuivEXT" category="EXT_texture_border_clamp" extension="EXT">
<param name="sampler" type="GLuint" flow="in" />
<param name="pname" type="GLenum" flow="in" />
<param name="param" type="GLuint *" flow="in" count="COMPSIZE(pname)" />
<returns type="void" />
</function>
<function name="SelectPerfMonitorCountersAMD" category="AMD_performance_monitor" extension="AMD">
<param name="monitor" type="GLuint" flow="in" />
<param name="enable" type="Boolean" flow="in" />
@ -45554,6 +45846,20 @@
<param name="fence" type="FenceNV" flow="in" />
<returns type="Boolean" />
</function>
<function name="TexBufferEXT" category="EXT_texture_buffer" extension="EXT">
<param name="target" type="TextureTarget" flow="in" />
<param name="internalformat" type="GLenum" flow="in" />
<param name="buffer" type="GLuint" flow="in" />
<returns type="void" />
</function>
<function name="TexBufferRangeEXT" category="EXT_texture_buffer" extension="EXT">
<param name="target" type="GLenum" flow="in" />
<param name="internalformat" type="GLenum" flow="in" />
<param name="buffer" type="GLuint" flow="in" />
<param name="offset" type="BufferOffset" flow="in" />
<param name="size" type="BufferSize" flow="in" />
<returns type="void" />
</function>
<function name="TexImage3DOES" category="OES_texture_3D" extension="OES">
<param name="target" type="GLenum" flow="in" />
<param name="level" type="GLint" flow="in" />
@ -45567,6 +45873,18 @@
<param name="pixels" type="void *" flow="in" count="COMPSIZE(format,type,width,height,depth)" />
<returns type="void" />
</function>
<function name="TexParameterIivEXT" category="EXT_texture_border_clamp" extension="EXT">
<param name="target" type="TextureTarget" flow="in" />
<param name="pname" type="TextureParameterName" flow="in" />
<param name="params" type="GLint *" flow="in" count="COMPSIZE(pname)" />
<returns type="void" />
</function>
<function name="TexParameterIuivEXT" category="EXT_texture_border_clamp" extension="EXT">
<param name="target" type="TextureTarget" flow="in" />
<param name="pname" type="TextureParameterName" flow="in" />
<param name="params" type="GLuint *" flow="in" count="COMPSIZE(pname)" />
<returns type="void" />
</function>
<function name="TexStorage1DEXT" category="EXT_texture_storage" extension="EXT">
<param name="target" type="GLenum" flow="in" />
<param name="levels" type="GLsizei" flow="in" />
@ -45642,6 +45960,17 @@
<param name="depth" type="GLsizei" flow="in" />
<returns type="void" />
</function>
<function name="TextureViewEXT" category="EXT_texture_view" extension="EXT">
<param name="texture" type="GLuint" flow="in" />
<param name="target" type="GLenum" flow="in" />
<param name="origtexture" type="GLuint" flow="in" />
<param name="internalformat" type="GLenum" flow="in" />
<param name="minlevel" type="GLuint" flow="in" />
<param name="numlevels" type="GLuint" flow="in" />
<param name="minlayer" type="GLuint" flow="in" />
<param name="numlayers" type="GLuint" flow="in" />
<returns type="void" />
</function>
<function name="UniformMatrix2x3fvNV" category="NV_non_square_matrices" extension="NV">
<param name="location" type="GLint" flow="in" />
<param name="count" type="GLsizei" flow="in" />

View file

@ -188,6 +188,10 @@ namespace OpenTK.Graphics.ES11
/// </summary>
GeometryShaderBit = ((int)0x00000004) ,
/// <summary>
/// Original was GL_GEOMETRY_SHADER_BIT_EXT = 0x00000004
/// </summary>
GeometryShaderBitExt = ((int)0x00000004) ,
/// <summary>
/// Original was GL_LINE_BIT = 0x00000004
/// </summary>
LineBit = ((int)0x00000004) ,
@ -220,6 +224,10 @@ namespace OpenTK.Graphics.ES11
/// </summary>
TessControlShaderBit = ((int)0x00000008) ,
/// <summary>
/// Original was GL_TESS_CONTROL_SHADER_BIT_EXT = 0x00000008
/// </summary>
TessControlShaderBitExt = ((int)0x00000008) ,
/// <summary>
/// Original was GL_TEXTURE_FETCH_BARRIER_BIT = 0x00000008
/// </summary>
TextureFetchBarrierBit = ((int)0x00000008) ,
@ -244,6 +252,10 @@ namespace OpenTK.Graphics.ES11
/// </summary>
TessEvaluationShaderBit = ((int)0x00000010) ,
/// <summary>
/// Original was GL_TESS_EVALUATION_SHADER_BIT_EXT = 0x00000010
/// </summary>
TessEvaluationShaderBitExt = ((int)0x00000010) ,
/// <summary>
/// Original was GL_COLOR_BUFFER_BIT5_QCOM = 0x00000020
/// </summary>
ColorBufferBit5Qcom = ((int)0x00000020) ,
@ -492,6 +504,10 @@ namespace OpenTK.Graphics.ES11
/// </summary>
Quads = ((int)0x0007) ,
/// <summary>
/// Original was GL_QUADS_EXT = 0x0007
/// </summary>
QuadsExt = ((int)0x0007) ,
/// <summary>
/// Original was GL_MAP_INVALIDATE_BUFFER_BIT = 0x0008
/// </summary>
MapInvalidateBufferBit = ((int)0x0008) ,
@ -568,6 +584,10 @@ namespace OpenTK.Graphics.ES11
/// </summary>
Patches = ((int)0x000E) ,
/// <summary>
/// Original was GL_PATCHES_EXT = 0x000E
/// </summary>
PatchesExt = ((int)0x000E) ,
/// <summary>
/// Original was GL_MAP_FLUSH_EXPLICIT_BIT = 0x0010
/// </summary>
MapFlushExplicitBit = ((int)0x0010) ,
@ -14512,6 +14532,10 @@ namespace OpenTK.Graphics.ES11
/// </summary>
Quads = ((int)0x0007) ,
/// <summary>
/// Original was GL_QUADS_EXT = 0x0007
/// </summary>
QuadsExt = ((int)0x0007) ,
/// <summary>
/// Original was GL_QUAD_STRIP = 0x0008
/// </summary>
QuadStrip = ((int)0x0008) ,
@ -14571,6 +14595,10 @@ namespace OpenTK.Graphics.ES11
/// Original was GL_PATCHES = 0x000E
/// </summary>
Patches = ((int)0x000E) ,
/// <summary>
/// Original was GL_PATCHES_EXT = 0x000E
/// </summary>
PatchesExt = ((int)0x000E) ,
}
/// <summary>
@ -15933,14 +15961,26 @@ namespace OpenTK.Graphics.ES11
/// </summary>
GeometryShaderBit = ((int)0x00000004) ,
/// <summary>
/// Original was GL_GEOMETRY_SHADER_BIT_EXT = 0x00000004
/// </summary>
GeometryShaderBitExt = ((int)0x00000004) ,
/// <summary>
/// Original was GL_TESS_CONTROL_SHADER_BIT = 0x00000008
/// </summary>
TessControlShaderBit = ((int)0x00000008) ,
/// <summary>
/// Original was GL_TESS_CONTROL_SHADER_BIT_EXT = 0x00000008
/// </summary>
TessControlShaderBitExt = ((int)0x00000008) ,
/// <summary>
/// Original was GL_TESS_EVALUATION_SHADER_BIT = 0x00000010
/// </summary>
TessEvaluationShaderBit = ((int)0x00000010) ,
/// <summary>
/// Original was GL_TESS_EVALUATION_SHADER_BIT_EXT = 0x00000010
/// </summary>
TessEvaluationShaderBitExt = ((int)0x00000010) ,
/// <summary>
/// Original was GL_COMPUTE_SHADER_BIT = 0x00000020
/// </summary>
ComputeShaderBit = ((int)0x00000020) ,

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -907,6 +907,10 @@ namespace OpenTK.Graphics.OpenGL
/// </summary>
GeometryShaderBit = ((int)0x00000004) ,
/// <summary>
/// Original was GL_GEOMETRY_SHADER_BIT_EXT = 0x00000004
/// </summary>
GeometryShaderBitExt = ((int)0x00000004) ,
/// <summary>
/// Original was GL_8X_BIT_ATI = 0x00000004
/// </summary>
Gl8XBitAti = ((int)0x00000004) ,
@ -955,6 +959,10 @@ namespace OpenTK.Graphics.OpenGL
/// </summary>
TessControlShaderBit = ((int)0x00000008) ,
/// <summary>
/// Original was GL_TESS_CONTROL_SHADER_BIT_EXT = 0x00000008
/// </summary>
TessControlShaderBitExt = ((int)0x00000008) ,
/// <summary>
/// Original was GL_TEXTURE_FETCH_BARRIER_BIT = 0x00000008
/// </summary>
TextureFetchBarrierBit = ((int)0x00000008) ,
@ -983,6 +991,10 @@ namespace OpenTK.Graphics.OpenGL
/// </summary>
TessEvaluationShaderBit = ((int)0x00000010) ,
/// <summary>
/// Original was GL_TESS_EVALUATION_SHADER_BIT_EXT = 0x00000010
/// </summary>
TessEvaluationShaderBitExt = ((int)0x00000010) ,
/// <summary>
/// Original was GL_COMPUTE_SHADER_BIT = 0x00000020
/// </summary>
ComputeShaderBit = ((int)0x00000020) ,
@ -1219,6 +1231,10 @@ namespace OpenTK.Graphics.OpenGL
/// </summary>
Quads = ((int)0x0007) ,
/// <summary>
/// Original was GL_QUADS_EXT = 0x0007
/// </summary>
QuadsExt = ((int)0x0007) ,
/// <summary>
/// Original was GL_MAP_INVALIDATE_BUFFER_BIT = 0x0008
/// </summary>
MapInvalidateBufferBit = ((int)0x0008) ,
@ -1299,6 +1315,10 @@ namespace OpenTK.Graphics.OpenGL
/// </summary>
Patches = ((int)0x000E) ,
/// <summary>
/// Original was GL_PATCHES_EXT = 0x000E
/// </summary>
PatchesExt = ((int)0x000E) ,
/// <summary>
/// Original was GL_MAP_FLUSH_EXPLICIT_BIT = 0x0010
/// </summary>
MapFlushExplicitBit = ((int)0x0010) ,
@ -47752,6 +47772,10 @@ namespace OpenTK.Graphics.OpenGL
/// </summary>
Quads = ((int)0x0007) ,
/// <summary>
/// Original was GL_QUADS_EXT = 0x0007
/// </summary>
QuadsExt = ((int)0x0007) ,
/// <summary>
/// Original was GL_QUAD_STRIP = 0x0008
/// </summary>
QuadStrip = ((int)0x0008) ,
@ -47811,6 +47835,10 @@ namespace OpenTK.Graphics.OpenGL
/// Original was GL_PATCHES = 0x000E
/// </summary>
Patches = ((int)0x000E) ,
/// <summary>
/// Original was GL_PATCHES_EXT = 0x000E
/// </summary>
PatchesExt = ((int)0x000E) ,
}
/// <summary>
@ -52749,14 +52777,26 @@ namespace OpenTK.Graphics.OpenGL
/// </summary>
GeometryShaderBit = ((int)0x00000004) ,
/// <summary>
/// Original was GL_GEOMETRY_SHADER_BIT_EXT = 0x00000004
/// </summary>
GeometryShaderBitExt = ((int)0x00000004) ,
/// <summary>
/// Original was GL_TESS_CONTROL_SHADER_BIT = 0x00000008
/// </summary>
TessControlShaderBit = ((int)0x00000008) ,
/// <summary>
/// Original was GL_TESS_CONTROL_SHADER_BIT_EXT = 0x00000008
/// </summary>
TessControlShaderBitExt = ((int)0x00000008) ,
/// <summary>
/// Original was GL_TESS_EVALUATION_SHADER_BIT = 0x00000010
/// </summary>
TessEvaluationShaderBit = ((int)0x00000010) ,
/// <summary>
/// Original was GL_TESS_EVALUATION_SHADER_BIT_EXT = 0x00000010
/// </summary>
TessEvaluationShaderBitExt = ((int)0x00000010) ,
/// <summary>
/// Original was GL_COMPUTE_SHADER_BIT = 0x00000020
/// </summary>
ComputeShaderBit = ((int)0x00000020) ,

View file

@ -823,6 +823,10 @@ namespace OpenTK.Graphics.OpenGL4
/// </summary>
GeometryShaderBit = ((int)0x00000004) ,
/// <summary>
/// Original was GL_GEOMETRY_SHADER_BIT_EXT = 0x00000004
/// </summary>
GeometryShaderBitExt = ((int)0x00000004) ,
/// <summary>
/// Original was GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD = 0x00000004
/// </summary>
QueryStencilFailEventBitAmd = ((int)0x00000004) ,
@ -843,6 +847,10 @@ namespace OpenTK.Graphics.OpenGL4
/// </summary>
TessControlShaderBit = ((int)0x00000008) ,
/// <summary>
/// Original was GL_TESS_CONTROL_SHADER_BIT_EXT = 0x00000008
/// </summary>
TessControlShaderBitExt = ((int)0x00000008) ,
/// <summary>
/// Original was GL_TEXTURE_FETCH_BARRIER_BIT = 0x00000008
/// </summary>
TextureFetchBarrierBit = ((int)0x00000008) ,
@ -859,6 +867,10 @@ namespace OpenTK.Graphics.OpenGL4
/// </summary>
TessEvaluationShaderBit = ((int)0x00000010) ,
/// <summary>
/// Original was GL_TESS_EVALUATION_SHADER_BIT_EXT = 0x00000010
/// </summary>
TessEvaluationShaderBitExt = ((int)0x00000010) ,
/// <summary>
/// Original was GL_COMPUTE_SHADER_BIT = 0x00000020
/// </summary>
ComputeShaderBit = ((int)0x00000020) ,
@ -1011,6 +1023,10 @@ namespace OpenTK.Graphics.OpenGL4
/// </summary>
Quads = ((int)0x0007) ,
/// <summary>
/// Original was GL_QUADS_EXT = 0x0007
/// </summary>
QuadsExt = ((int)0x0007) ,
/// <summary>
/// Original was GL_MAP_INVALIDATE_BUFFER_BIT = 0x0008
/// </summary>
MapInvalidateBufferBit = ((int)0x0008) ,
@ -1079,6 +1095,10 @@ namespace OpenTK.Graphics.OpenGL4
/// </summary>
Patches = ((int)0x000E) ,
/// <summary>
/// Original was GL_PATCHES_EXT = 0x000E
/// </summary>
PatchesExt = ((int)0x000E) ,
/// <summary>
/// Original was GL_MAP_FLUSH_EXPLICIT_BIT = 0x0010
/// </summary>
MapFlushExplicitBit = ((int)0x0010) ,
@ -24516,6 +24536,10 @@ namespace OpenTK.Graphics.OpenGL4
/// </summary>
Quads = ((int)0x0007) ,
/// <summary>
/// Original was GL_QUADS_EXT = 0x0007
/// </summary>
QuadsExt = ((int)0x0007) ,
/// <summary>
/// Original was GL_LINES_ADJACENCY = 0x000A
/// </summary>
LinesAdjacency = ((int)0x000A) ,
@ -24567,6 +24591,10 @@ namespace OpenTK.Graphics.OpenGL4
/// Original was GL_PATCHES = 0x000E
/// </summary>
Patches = ((int)0x000E) ,
/// <summary>
/// Original was GL_PATCHES_EXT = 0x000E
/// </summary>
PatchesExt = ((int)0x000E) ,
}
/// <summary>
@ -27865,14 +27893,26 @@ namespace OpenTK.Graphics.OpenGL4
/// </summary>
GeometryShaderBit = ((int)0x00000004) ,
/// <summary>
/// Original was GL_GEOMETRY_SHADER_BIT_EXT = 0x00000004
/// </summary>
GeometryShaderBitExt = ((int)0x00000004) ,
/// <summary>
/// Original was GL_TESS_CONTROL_SHADER_BIT = 0x00000008
/// </summary>
TessControlShaderBit = ((int)0x00000008) ,
/// <summary>
/// Original was GL_TESS_CONTROL_SHADER_BIT_EXT = 0x00000008
/// </summary>
TessControlShaderBitExt = ((int)0x00000008) ,
/// <summary>
/// Original was GL_TESS_EVALUATION_SHADER_BIT = 0x00000010
/// </summary>
TessEvaluationShaderBit = ((int)0x00000010) ,
/// <summary>
/// Original was GL_TESS_EVALUATION_SHADER_BIT_EXT = 0x00000010
/// </summary>
TessEvaluationShaderBitExt = ((int)0x00000010) ,
/// <summary>
/// Original was GL_COMPUTE_SHADER_BIT = 0x00000020
/// </summary>
ComputeShaderBit = ((int)0x00000020) ,

View file

@ -805,6 +805,7 @@
<Compile Include="Platform\X11\X11Input.cs" />
<Compile Include="Platform\X11\XI2Input.cs" />
<Compile Include="Platform\X11\XI2MouseKeyboard.cs" />
<Compile Include="Platform\MacOS\Cocoa\NSFloat.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<PropertyGroup>

View file

@ -45,6 +45,9 @@ namespace OpenTK.Platform.MacOS
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, ulong ulong1);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, NSSize size);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, IntPtr intPtr1);
@ -61,25 +64,25 @@ namespace OpenTK.Platform.MacOS
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, IntPtr intPtr1, IntPtr intPtr2, IntPtr intPtr3, IntPtr intPtr4, IntPtr intPtr5);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, IntPtr p1, PointF p2);
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, IntPtr p1, NSPoint p2);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, bool p1);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, SizeF p1);
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, NSPoint p1);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, RectangleF rectangle1);
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, NSRect rectangle1);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, RectangleF rectangle1, int int1, int int2, bool bool1);
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, NSRect rectangle1, int int1, int int2, bool bool1);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, uint uint1, IntPtr intPtr1, IntPtr intPtr2, bool bool1);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, RectangleF rectangle1, int int1, IntPtr intPtr1, IntPtr intPtr2);
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, NSRect rectangle1, int int1, IntPtr intPtr1, IntPtr intPtr2);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static IntPtr SendIntPtr(IntPtr receiver, IntPtr selector, IntPtr p1, int p2, int p3, int p4, int p5, int p6, int p7, IntPtr p8, NSBitmapFormat p9, int p10, int p11);
@ -112,13 +115,13 @@ namespace OpenTK.Platform.MacOS
public extern static void SendVoid(IntPtr receiver, IntPtr selector, bool bool1);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static void SendVoid(IntPtr receiver, IntPtr selector, PointF point1);
public extern static void SendVoid(IntPtr receiver, IntPtr selector, NSPoint point1);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static void SendVoid(IntPtr receiver, IntPtr selector, RectangleF rect1, bool bool1);
public extern static void SendVoid(IntPtr receiver, IntPtr selector, NSRect rect1, bool bool1);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static void SendVoid(IntPtr receiver, IntPtr selector, RectangleF rect1, IntPtr intPtr1);
public extern static void SendVoid(IntPtr receiver, IntPtr selector, NSRect rect1, IntPtr intPtr1);
[DllImport(LibObjC, EntryPoint="objc_msgSend")]
public extern static int SendInt(IntPtr receiver, IntPtr selector);
@ -151,27 +154,27 @@ namespace OpenTK.Platform.MacOS
#endif
}
// Not the _stret version, perhaps because a PointF fits in one register?
// Not the _stret version, perhaps because a NSPoint fits in one register?
// thefiddler: gcc is indeed using objc_msgSend for NSPoint on i386
[DllImport (LibObjC, EntryPoint="objc_msgSend")]
public extern static PointF SendPoint(IntPtr receiver, IntPtr selector);
public extern static NSPoint SendPoint(IntPtr receiver, IntPtr selector);
[DllImport (LibObjC, EntryPoint="objc_msgSend_stret")]
extern static void SendRect(out System.Drawing.RectangleF retval, IntPtr receiver, IntPtr selector);
extern static void SendRect(out NSRect retval, IntPtr receiver, IntPtr selector);
[DllImport (LibObjC, EntryPoint="objc_msgSend_stret")]
extern static void SendRect(out System.Drawing.RectangleF retval, IntPtr receiver, IntPtr selector, RectangleF rect1);
extern static void SendRect(out NSRect retval, IntPtr receiver, IntPtr selector, NSRect rect1);
public static RectangleF SendRect(IntPtr receiver, IntPtr selector)
public static NSRect SendRect(IntPtr receiver, IntPtr selector)
{
RectangleF r;
NSRect r;
SendRect(out r, receiver, selector);
return r;
}
public static RectangleF SendRect(IntPtr receiver, IntPtr selector, RectangleF rect1)
public static NSRect SendRect(IntPtr receiver, IntPtr selector, NSRect rect1)
{
RectangleF r;
NSRect r;
SendRect(out r, receiver, selector, rect1);
return r;
}

View file

@ -0,0 +1,181 @@
#region License
//
// NSFloat.cs
//
// Author:
// Stefanos A. <stapostol@gmail.com>
//
// Copyright (c) 2006-2014 Stefanos Apostolopoulos
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
#endregion
using System;
using System.Drawing;
using System.Runtime.InteropServices;
namespace OpenTK.Platform.MacOS
{
// NSFloat is defined as float on 32bit systems and double on 64bit.
// We have to account for this peculiarity in order to run OpenTK on
// 64bit Mac platforms.
// We do this by adding implicit conversions between IntPtr and float/double.
// Note that this conversion is against C# best practices, as it can lose information.
// However, NSFloat is used internally in places where this precision loss does not matter.
struct NSFloat
{
IntPtr value;
public static implicit operator NSFloat(float v)
{
NSFloat f;
unsafe
{
if (IntPtr.Size == 4)
{
f.value = *(IntPtr*)&v;
}
else
{
double d = v;
f.value = *(IntPtr*)&d;
}
}
return f;
}
public static implicit operator NSFloat(double v)
{
NSFloat f;
unsafe
{
if (IntPtr.Size == 4)
{
float fv = (float)v;
f.value = *(IntPtr*)&fv;
}
else
{
f.value = *(IntPtr*)&v;
}
}
return f;
}
public static implicit operator float(NSFloat f)
{
unsafe
{
if (IntPtr.Size == 4)
{
return *(float*)&f.value;
}
else
{
return (float)*(double*)&f.value;
}
}
}
public static implicit operator double(NSFloat f)
{
unsafe
{
if (IntPtr.Size == 4)
{
return (double)*(float*)&f.value;
}
else
{
return *(float*)&f.value;
}
}
}
}
[StructLayout(LayoutKind.Sequential)]
struct NSPoint
{
public NSFloat X;
public NSFloat Y;
public static implicit operator NSPoint(PointF p)
{
return new NSPoint
{
X = p.X,
Y = p.Y
};
}
public static implicit operator PointF(NSPoint s)
{
return new PointF(s.X, s.Y);
}
}
[StructLayout(LayoutKind.Sequential)]
struct NSSize
{
public NSFloat Width;
public NSFloat Height;
public static implicit operator NSSize(SizeF s)
{
return new NSSize
{
Width = s.Width,
Height = s.Height
};
}
public static implicit operator SizeF(NSSize s)
{
return new SizeF(s.Width, s.Height);
}
}
[StructLayout(LayoutKind.Sequential)]
struct NSRect
{
public NSPoint Location;
public NSSize Size;
public NSFloat Width { get { return Size.Width; } }
public NSFloat Height { get { return Size.Height; } }
public NSFloat X { get { return Location.X; } }
public NSFloat Y { get { return Location.Y; } }
public static implicit operator NSRect(RectangleF s)
{
return new NSRect
{
Location = s.Location,
Size = s.Size
};
}
public static implicit operator RectangleF(NSRect s)
{
return new RectangleF(s.Location, s.Size);
}
}
}

View file

@ -206,7 +206,6 @@ namespace OpenTK.Platform.MacOS
// Set up behavior
Cocoa.SendIntPtr(windowPtr, Selector.Get("setDelegate:"), windowPtr); // The window class acts as its own delegate
Cocoa.SendVoid(windowPtr, Selector.Get("cascadeTopLeftFromPoint:"), System.Drawing.PointF.Empty);
Cocoa.SendVoid(windowPtr, Selector.Get("makeKeyWindow"));
SetTitle(title, false);
@ -247,7 +246,12 @@ namespace OpenTK.Platform.MacOS
{
ResetTrackingArea();
}
GraphicsContext.CurrentContext.Update(windowInfo);
var context = GraphicsContext.CurrentContext;
if (context != null)
{
context.Update(windowInfo);
}
if (suppressResize == 0)
OnResize(EventArgs.Empty);