CXO2's picture

Is OpenTK Development still alive (yes, it is)

I just wondering the OpenTK Development...
is there will be new version of OpenTK later?

Or development ended up here... :(


Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
the Fiddler's picture

Yes, it is alive and kicking. You can find the latest source at https://github.com/opentk/opentk or download a (not-quite) nightly build here.

There is a new release coming up in this week, with 3 years worth of improvements (including OpenGL 4.4, OpenGL ES 3.0, a brand new SDL2 backend, huge updates to the math library, bugfixes and more.)

CXO2's picture

WOWWWW! GLAD TO HEAR THAT! :D

the Fiddler's picture

OpenTK 1.1 beta1 has been released.

puklaus's picture

Grrrrreat! :)

One question:
Can I/how to create .dll file without these new gl4 (and gl3) api stuff, I dont use them (and the .dll is quite big to small project)?

the Fiddler's picture

Your best bet right now is to use the linker utility. This will strip away unused code and will give you a minimal dll tailored specifically to your project. (At least in theory, it used to crash with OpenTK a couple of years ago.)

Alternatively, you could always load OpenTK.sln and carve away parts by hand, but that's not really scalable.

Other than that, I am working on three parallel approaches to reduce the dll size for future releases:

  1. Strip generated code to the absolute essentials (strips around 1.5MB from OpenTK.dll)
  2. Add #ifdef annotations to the generated code, so you can choose APIs at compile-time (e.g. if you don't use anything from GL.Ext you can remove the whole Ext namespace. This includes OpenGL versions, too.)
  3. Split APIs per-module, so you can mix and match the ones you need (e.g. OpenTK.Platform.SDL + OpenTK.Math + OpenTK.Graphics.ES20) The monolithic OpenTK.dll will of course remain for people who need it.

If the linker fails to work for whatever reason, please let me know.

the Fiddler's picture

You might be interested in the no-reflect branch which uses a different loading method that works better with the linker utility.

Using this branch, I go from 7.5MB -> 2.0MB using the linker (the original dll is slightly larger than git master due to the different loading method.)

the Fiddler's picture

You might be interested in the no-reflect branch which uses a different loading method that works better with the linker utility.

Using this branch, I go from 7.5MB -> 2.0MB using the linker (the original dll is slightly larger than git master due to the different loading method.) Loading time falls from ~400ms to 2.9ms on my system!

puklaus's picture

Hei thanks for the tips. And your ideas for smaller size is good, (2) #ifdef would work maybe best, but hopefully your linker can put these then automatically

(and in docs/wiki, define GL2, GL3, GL4 when needed and it opens them then).

And other ideas good too. No hurry, should investigate which is the best way to reduce the size because it is quile large atm (and it will be larger so something must be done, if one want use only gl1.x-2.0)