I have an Tao.OpenGL / Tao.SDL / Tao.Devil application that I built for testing. Aside from using it to help troubleshoot some Axiom problems, I've been using it to get performance benchmarks of Tao.OpenGL vs XNA. Although there are many factors such as drivers that make direct comparison "unfair". The end result is a users FPS and that is fungible.
I have ported this app to OpenTK. The port was trivial as OpenTK is very close to Tao. I really like the typesafe enums under OpenTK. This is a great example of how .NET standards should be applied to API wrappers.
Thus far I have noticed 3 things that I was hoping someone could comment about.
1) Using exactly the same OpenGL calls, the OpenTK version is running at 80% of the framerate of my Tao version. I have triple checked and I am sure these are 1:1 ports in terms of my OpenGL calls.
2) When I call game.Run(60.0, 60.0), it appears the framework is spinning during the idle time instead of sleeping. (IE 1 CPU is pinned) Is this intended? At only 60 FPS, my CPU appears idle under my Tao based test app. (I put the thread to sleep between frames)
3) (This is probably an error on my part) I am using both vertex and fragment shaders to draw a textured quad, under OpenTK, the image appears very dark (not black, the texture is visible) . I use the same shaders in my Tao app and the texture looks correct. I am thinking this is a mistake on my part. Maybe something relating to my fragment shader, but I figured I'd put it out there in case it rings a bell for anyone.
FIXED. OpenTK's PixelInternalFormat.CompressedSrgbAlphaS3tcDxt1Ext is not a match for DevIL's IL.DXT1 format.
Would it be possible to add
CompressedRgbAlphaS3tcDxt1Ext = ((int)0X83F1),
CompressedRgbAlphaS3tcDxt3Ext = ((int)0X83F2),
CompressedRgbAlphaS3tcDxt5Ext = ((int)0X83F3),
to the PixelInternalFormat enumeration?