Stefanos A
dfd683ef49
Merge master into no-reflect
2013-12-15 16:36:37 +01:00
Stefanos A
5b48564ec2
Ignore missing comments warning
...
The OpenGL manpages do not include extension methods. Ignore this
warning to let more important ones shine through.
2013-12-06 19:33:03 +01:00
Stefanos A
1d26917758
Updated license information
2013-12-06 09:23:56 +01:00
Stefanos A
f1e93005b9
Added methods for 1.0 compatibility
2013-12-06 09:23:43 +01:00
Stefanos A
e59405dab3
Implemented manual marshaling of string parameters
2013-12-04 22:32:56 +01:00
Stefanos A
e2801c8c6c
Convert string[] callsites to IntPtr
...
This fixes the signature mismatch between the new marshaling code and
the callsites.
2013-12-04 21:22:33 +01:00
Stefanos A
406de0b846
Regenerated bindings
2013-12-03 09:10:45 +01:00
Stefanos A
438f83c8d9
Mark slots with [DllImport]; remove "core" and "delegates" generation
...
We should be able to use static pinvokes on platforms that do not
provide or require extensions and calli instructions on platforms with
extension APIs. This dinstiction will be implemented as a parameter in
the rewriter.
2013-12-01 21:17:15 +01:00
Stefanos A
d6bf7c0d78
Regenerated bindings
2013-12-01 18:28:25 +01:00
Stefanos A.
c53c0bc66f
Added GetProcAddress(IntPtr) overloads
...
This might allow us to improve startup performance, by avoiding string
marshaling during extension loading.
2013-11-28 23:21:19 +01:00
Stefanos A.
c369bfc75e
Use [AutoGenerated] only for generated methods
...
The rewriter will patch the body of methods marked with [AutoGenerated].
Methods that are implemented manually (e.g. various math helper
overloads) should avoid this attribute.
2013-11-27 08:27:52 +01:00
Stefanos A
da4de365e8
Regenerated bindings
2013-11-27 00:03:21 +01:00
Stefanos A
40f992b5bd
Rewrite support for [Slot] attribute
2013-11-26 01:31:10 +01:00
Stefanos A.
74159da199
Regenerated bindings
2013-11-25 00:19:18 +01:00
Stefanos A.
1e6a819b07
Removed GLObsolete.cs helper
...
This file must be recreated using the new loading mechanism.
2013-11-24 13:59:15 +01:00
Stefanos A.
811b04e880
Regenerated bindings with new loading mechanism
2013-11-24 13:58:54 +01:00
Stefanos A.
fec958c8dc
Hooked up new loading mechanism
2013-11-24 13:58:30 +01:00
Stefanos A.
825ed3621f
Implemented new loading mechanism
2013-11-24 13:57:43 +01:00
Stefanos A.
7a57c9c3d2
Clarified GetAddress documentation
2013-11-24 13:57:23 +01:00
Stefanos A.
1e71ca9122
Removed delegates and DllImports
2013-11-24 13:56:35 +01:00
Stefanos A
8ee2152709
Moved delegate loaders to the Delegates class
2013-11-23 17:23:26 +01:00
Stefanos A
03a26ed12f
Regenerated bindings with lazy loading
2013-11-22 20:07:01 +01:00
Stefanos A
ffe934fa5d
Added static GetExtensionDelegate implementation
2013-11-22 20:06:04 +01:00
Stefanos A
2ace001203
Implemented direct binding loading
...
OpenTK normally uses reflection to load bindings, instead of generating
huge constructors. Although reflection is faster on first load (thanks
to reduced JIT overhead), it fails to work correctly with monolinker.
This branch explores the performance of a direct binding.
2013-11-22 17:32:17 +01:00
Stefanos A.
b7af883cff
Fix exceptions on reused OpenGL context handles
...
Implementations may reuse OpenGL context handles that have been
destroyed. If a context is finalized but not Disposed, then OpenTK may
keep a reference to the old context handle, causing a crash when the
same handle is returned for a new context. To fix that, new context
handles will now replace old handles in case of a clash.
2013-11-21 09:34:06 +01:00
Stefanos A
255f4e9083
Completed compatibility overloads for OpenTK 1.0
2013-11-20 08:16:07 +01:00
Stefanos A
02120f429f
Do not trim 's' from Groups
2013-11-20 08:16:06 +01:00
Stefanos A.
8c5887e996
Aligned GL core and compat enums
2013-11-18 18:51:38 +01:00
Stefanos A
ac0fab7760
More compatibility overloads for OpenGL
2013-11-18 18:32:36 +01:00
Stefanos A.
e7f70330b2
Implemented IEquatable<ColorFormat>
...
This eliminates memory allocations when storing and comparing
ColorFormat structures.
2013-11-18 13:49:06 +01:00
Stefanos A
3d50554903
Added OpenGL overloads for OpenTK-1.0 compatibility
2013-11-18 13:28:44 +01:00
Stefanos A
e572f418af
Added compatibility overloads for ES 2.0
2013-11-18 01:10:01 +01:00
Stefanos A
01d40c551a
Aligned FBO API with desktop OpenGL
2013-11-17 23:57:38 +01:00
Stefanos A
358bcd4f88
Regenerated bindings
2013-11-17 01:49:10 +01:00
Stefanos A
f9deeaead7
Improved compatibility with OpenTK 1.0
...
Added overloads for enumerations with name changes. Reduced differences
between ES and GL APIs.
2013-11-15 01:59:50 +01:00
Stefanos A
431202d830
Corrected convenience wrappers for Get* and Delete*
...
GetBoolean, GetInteger6, GetFixedvOES and Delete* are now matched in
the convenience wrapper generator. Methods returning vectors of fixed
size (e.g. 4 ints) are no longer matched.
2013-11-14 17:40:06 +01:00
Stefanos A
4fd6347de7
Mark untyped overloads as obsolete
2013-11-14 14:10:19 +01:00
Stefanos A
b975eccd45
Regenerated bindings
2013-11-14 11:35:32 +01:00
thefiddler
1792f7bf29
Added Version20 overload to StencilFuncSeparate
...
Compatibility fix for OpenTK 1.0
2013-11-12 23:39:43 +01:00
thefiddler
8360b7a2ba
Generate overloads without strong enums for 1.0 compat
...
OpenTK 1.0 and Xamarin Android/iOS do not use strongly-typed enums for
OpenGL ES. Generate overloads with the "All" enum in order to maintain
compatibility.
2013-11-11 10:03:24 +01:00
thefiddler
2c9d574b08
Merge branch 'modes' of https://github.com/thefiddler/opentk
2013-11-10 19:11:05 +01:00
Stefanos A.
c66b22a1f3
Updated convenience overloads
2013-11-10 19:04:18 +01:00
Stefanos A.
8003d06315
Move convenience overloads to generator
...
The generator now handles the creation of convenience overloads. These
must be removed from the helper classes to avoid redefinition errors.
2013-11-10 15:36:53 +01:00
Stefanos A.
11c1071625
Corrected declarations in convenience overloads
2013-11-10 10:08:04 +01:00
Stefanos A.
089c108ea0
Corrected indentation
2013-11-10 09:20:54 +01:00
Stefanos A.
5aad11f6ee
Generate bindings for testing (WIP2)
2013-11-10 09:18:15 +01:00
Stefanos A.
06ad3bf1dc
Generate bindings for testing (WIP)
2013-11-10 09:14:30 +01:00
Stefanos A
ec2c64ee15
Remove static init of GetCurrentContext
...
The static initializer of GetCurrentContext would always default to the
desktop PlatformFactory, which caused problems when trying to run OpenGL
ES code on the desktop. The initializer is now removed and
GetCurrentContext is set in the context constructor, before creating any
contexts.
2013-11-09 15:07:17 +01:00
Stefanos A
440e3fe248
Load ES30 and OpenGL4 entry points
2013-11-09 15:07:16 +01:00
Stefanos A
5b5a395bbd
Merge branch 'master' of https://github.com/thefiddler/opentk into modes
2013-11-08 16:41:20 +01:00
Stefanos A
49df5ff453
Do not generate delegates for overloads
...
We should only generate delegates for actual OpenGL entry points, not
for overloaded functions that resolve to the same entry point. This
improves loading speeds and reduces the size of the compiled dll.
2013-11-08 16:40:43 +01:00
Stefanos A
eba7e59253
Fixed ES rendering.
2013-11-08 10:56:45 +01:00
Stefanos A.
2cd91bd0a0
Remove static init of GetCurrentContext
...
The static initializer of GetCurrentContext would always default to the
desktop PlatformFactory, which caused problems when trying to run OpenGL
ES code on the desktop. The initializer is now removed and
GetCurrentContext is set in the context constructor, before creating any
contexts.
2013-11-08 10:41:58 +01:00
Stefanos A.
a12b394607
Load ES30 and OpenGL4 entry points
2013-11-08 10:39:08 +01:00
Stefanos A.
03c04fd308
Workaround for issues #4 and #6
...
GraphicsMode.Default used to be set to
(DisplayDevice.Default.BitsPerPixel, 16, 0, 0, 0, 2, false) for improved
compatibility with older systems. However, this appears to be causing
issues with specific modern GPUs. Switch the default mode to (32, 24, 8)
until a more proper solution can be found.
2013-11-07 18:42:17 +01:00
Stefanos A
b6610001ea
Merged ES 2.0 extension tokens to ES 3.0
...
By adding ES 2.0 extensions tokens to ES 3.0, we have a very
straightforward update path to move an application from the older API
to the newer.
2013-11-07 16:54:39 +01:00
Stefanos A
be8f7c6311
Corrected ES 2.0 enums
...
After the previous commit, several ES 2.0 functions would refer to
enums found in ES 3.0. These enums have been copied to ES 2.0, either
as core enums or as extensions.
2013-11-07 16:25:19 +01:00
Stefanos A
735d05e496
Merged ES2.0 and ES3.0 replacements
...
ES 3.0 includes ES 2.0 verbatim. We can significantly reduce
duplication by using the same <replace> node for both APIs. Note that
the enumerations must remain separate, as ES 2.0 and 3.0 support
different tokens.
2013-11-07 11:37:51 +01:00
Stefanos A
7c54a19708
ES 3.0 fixed enums for GetIntegeri_v and GetInteger64i_v
...
These functions have a first parameter named "target", not "pname".
Fixed now.
2013-11-07 10:58:02 +01:00
Stefanos A
e59c95f2f9
ES 3.0 fixed enums for GetInteger64*
...
GetInteger64v should accept GetPName, while GetInteger64i_v should
accept GetIndexedPName.
2013-11-07 10:39:20 +01:00
Stefanos A
8de24c97fb
ES 3.0 strong enums for DrawBuffersEXT and NV
...
Relax the extension constraint in DrawBuffers, in order to add strong
enums to the extension varieties of this function.
2013-11-07 10:33:02 +01:00
Stefanos A
2d1df46d98
ES 3.0 strong enums for DrawArrays*() and Draw*Elements*()
...
The strongly-typed enums include core and extension varieties.
2013-11-07 10:17:33 +01:00
Stefanos A
0002b2e23e
Fixed typo in ES3Generator.cs
...
The DllImports file should be named ES30Core.cs, not ES3Core.cs. Fixed
now.
2013-11-07 10:09:17 +01:00
Stefanos A
0f98f0e00b
Fixed misspelled and missing enums
2013-11-07 09:47:27 +01:00
Stefanos A
93b8d4b86e
Fixed enums for (Get)ObjectLabel
...
ObjectLabel and GetObjectLabel are part of KHR_debug.
2013-11-07 09:34:48 +01:00
Stefanos A
0598e02140
Fixed enums for GetDebugMessageLog
...
GetDebugMessageLog was misspelled as GetMessageDebugLog. This is now
fixed.
2013-11-07 08:39:57 +01:00
Stefanos A
de38df8820
Fixed strong-enums for GetDebugMessageLog
...
GetDebugMessageLog is part of KHR_debug.
2013-11-07 08:36:23 +01:00
Stefanos A
a2f2ab29ea
Fixes for ES 3.0 strongly-typed enums
...
Fixed parameter mismatches in CopyBufferSubData and BlendFuncSeparate.
Implemented KHR_debug extension.
2013-11-07 08:33:17 +01:00
Stefanos A
2b4d10ffd7
Strongly-typed enums for ES 3.0 (complete)
...
Implemented sectiosn: Pixel Rectangles. Binding & Managing Framebuffer
Objects, Renderbuffer Objects, Attaching Renderbuffer Images to
Framebuffer, Attaching Texture Images to Framebuffer, Framebuffer
Completeness, Invaildating Framebuffer Contents, Renderbuffer Object
Queries, Simple Queries, String Queries.
2013-11-07 08:14:49 +01:00
Stefanos A
1a02457ddc
Strongly-typed enums for ES 3.0 (WIP8)
...
Implemented sections: Hints and Sync Object Quries.
Renamed SyncParameter to SyncParameterName, as per the OpenGL naming
conventions.
2013-11-05 10:23:25 +01:00
Stefanos A
167c97dd84
Strongly-typed enums for ES 3.0 (WIP7)
...
Implemented section: Sync Objects and Fences [5.2].
Fixed desktop OpenGL wrapper for ClientWaitSync and FenceSync.
2013-11-05 09:53:34 +01:00
Stefanos A
ad1755f58e
Moved overload to overrides.xml
...
Overloads for backwards compatibility should now be placed in an
<overload> element inside overrides.xml.
2013-11-05 09:44:20 +01:00
Stefanos A
2511cb1086
Implemented support for <overload> element
...
The <overload> element simplifies the addition of overloads for
backwards compatibility. It is defined similar to the <replace>
element, but instead of replacing the parameters of a function
in-place, it adds a new overload and modifies the overload instead.
2013-11-05 08:55:52 +01:00
Stefanos A
25b9939263
Strongly-typed enums for ES 3.0 (WIP6)
...
Implemented strongly-typed enums for sections: Selecting a Buffer for
Writing, Fine Control of Buffer Updates, Clearing the Buffers.
2013-11-04 23:25:02 +01:00
Stefanos A
372dac9c48
Strongly-typed enums for ES 3.0 (WIP5)
...
Implemented sections: Stencil Test, Depth Buffer Test, Blending.
2013-11-04 23:01:25 +01:00
Stefanos A
dcd2d03e59
Strongly-typed enums for ES 3.0 (WIP4)
...
Implemented sections: Texture Image Specification, Alternative Texture
Image Specification, Compressed Texture Images, Texture Parameters,
Manual Mipmap Generation and Enumerated Queries.
2013-11-04 22:27:06 +01:00
Stefanos A
20e70062f8
Strongly-typed enums for ES 3.0 (WIP3)
...
Implemented sections: Texturing, Sampler Objects, Sampler Queries,
Texture Image Specification.
2013-11-04 19:49:25 +01:00
Stefanos A
9b5be9300b
Strongly-typed enums for ES 3.0 (WIP2)
...
Added strongly-typed enums for sections: Vertices, Shaders and
Programs. Added a number of missing enums for ES 2.0. Normalized
several APIs between OpenGL and OpenGL ES.
2013-11-04 00:04:09 +01:00
Stefanos A
af78a01643
Strongly-typed enums for ES 3.0 (WIP)
...
Implemented strongly-typed enums for sections: Buffer Objects,
Asynchronous Queries, Transform Feedback, ReadingandCopying Pixels and
Rasterization.
2013-11-03 21:30:25 +01:00
Stefanos A
7978627ad4
Merge Delegate.Version
...
When a Delegate is defined multiple times in the spec, we should check
if any of these definitions contains a proper Delegate.Version and
store that. This improves the self-documentation aspect of the bindings.
2013-11-03 20:41:29 +01:00
Stefanos A
7322828304
Regenerated the bindings using the latest specs
2013-11-03 20:36:22 +01:00
Stefanos A.
6f08995963
Added PrimitiveType <=> BeginMode overloads
...
Khronos renamed BeginMode to PrimitiveType starting with GL 4.4.
OpenTK now has overloads for both flavors.
2013-11-03 16:11:39 +01:00
Stefanos A
60f971ffed
Updated to the latest gl4 specs and docs
...
Large code-drop from Khronos upstream.
2013-11-03 12:43:50 +01:00
Stefanos A
7c3e29012f
Bindings for GL4.4, ES1.1, ES2.0 and ES3.0
...
The new bindings are based on the fresh gl.xml registry by the Khronos
group.
2013-11-03 12:34:19 +01:00
Stefanos A
f835c63444
Added DebugProc for KHR_debug
2013-11-03 12:33:17 +01:00
Stefanos A.
6c16835d8c
Added doc comment on ColorFormat.Empty.
2013-11-03 01:44:31 +01:00
Stefanos A.
0746334ab3
Regenerated bindings with the latest generator
...
The new bindings have improved enum documentation and fix an issue with
incorrect overloads in wrappers with generic parameters.
2013-11-01 09:29:42 +01:00
Stefanos A.
97ca64121c
Made IsFlagsCollection read-write
...
The decision whether an Enum is a flags collection is now made either by
the spec reader or the enum processor (not the Enum class itself.)
2013-10-27 17:35:36 +01:00
Stefanos A.
2444ccf082
Improve override lookup for extension functions.
...
Function overrides are now looked up in the following order: specific
name (e.g. ProgramParameteriARB), extensionless name (e.g.
ProgramParameteri) and generic mame (e.g. ProgramParameter). This
improves the override resolution for functions with multiple extension
forms (core, ext, arb, etc).
2013-10-27 02:35:53 +02:00
Stefanos A.
816f1e5c7f
Fixed the DebugProc signatures.
...
The various DebugProc* delegates now conform to their specifications.
2013-10-27 01:32:08 +02:00
Stefanos A.
f57b53b677
Regenerated using latest generator.
2013-10-27 01:31:20 +02:00
Stefanos A.
1a1ef03396
The last parameter of GL.ShaderSource should be an array.
2013-10-25 16:30:50 +02:00
Stefanos A.
65ff060ca5
Corrected the values of the GL_NEXT_BUFFER_NV and
...
GL_SKIP_COMPONENTS_*_NV extensions.
2013-10-25 16:10:51 +02:00
Stefanos A
af9d6dd928
Fixed ClearTex[Sub]Image <type> parameter
...
As per bug #1006 on the public Khronos bugzilla, <type> corresponds to the PixelType accepted by TexImage3D. This is now fixed.
2013-10-24 09:01:59 +02:00
Stefanos A
d8089a7732
Updated documentation according to the latest GL4 manpages.
2013-10-23 20:19:16 +02:00
Stefanos A.
60afa79203
Updated documentation according to the latest available manpages.
2013-10-23 20:17:08 +02:00
Stefanos A.
eb84a29206
Implemented "Debug Output" and "State and State Requests"
...
functionality according to the OpenGL 4.4 specification, sections 20
and 22.
2013-10-23 20:12:05 +02:00
Stefanos A.
3037baa5ea
Implemented "Reading and Copying Pixels" functionality from the OpenGL
...
4.4 specification, sections 18.2 and 18.3.
2013-10-23 18:54:34 +02:00
Stefanos A.
b425bff682
Implemented Whole Framebuffer commands according to the OpenGL 4.4
...
specification, section 17.4.
2013-10-23 11:43:11 +02:00
Stefanos A.
86214ebc77
Implemented per-fragment operations according to the OpenGL 4.4
...
specification, section 17.
2013-10-23 10:49:29 +02:00