Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 03 Jun 2003
Online Last Active Today, 04:10 PM

Topics I've Started

Updating D3D11 renderer from Oculus SDK 0.2 to 0.4 support

24 January 2015 - 01:05 PM

I tried to post this on the "help wanted" section, but that seems to be only for "real jobs."

I have a project demo that uses the Oculus SDK version 0.2.
It no longer works with Oculus SDK version 0.4 (like most Oculus projects.)
I want to update the integration into the graphics engine to target Oculus SDK 0.4.x now.
The integration is contained in the D3D11 rendering back-end, which is contained in a small number of files that build a self-contained DLL.
Development is in Microsoft Visual Studio version 2010, 2012, or 2013 (have not tested 2015.)
I could do it myself, but I am totally slammed with other work! Here's where you come in :-)

This is a small, self-contained piece of work, although checking out the entire project is a significant amount of source files, most of which are needed to build it but you don't need to understand them for this work :-)
This is a paid contracting opportunity -- I'd expect 20-40 hours of work for someone who knows what they're doing.

Send me a PM if you're interested!

Dealing with the latency and chattiness of REST

27 December 2014 - 11:58 AM

Writing responsive web pages (games, and other interactive experiences) should be easy.
Anyone who has tried to do this, realizes that it's actually hard, because each layer in the stack gets in your way.
At work, we've built out all the different library support and back-end infrastructure needed to make really responsive web services, working around various caching and scalability problems.


What the article doesn't say is that we also use the underlying message queue for non-HTTP data, for various games and experiences. But the article was already long enough :-)

glGetError() causes 5-second stalls?

11 September 2014 - 02:06 PM

I'm working on a toy project using GLFW and GLAD. The project renders a UI composited by simple 2D sprites, using GLFW for the main window and GLAD for GL extension/version loading/handling. This is on Windows 8.1, x64, using NVIDIA GTX 870M graphics and an Intel HD4600 framebuffer. The CPU is a Core i7-4702HQ.
The program also spawns two threads for background audio, but all communication with those is done through a non-blocking FIFO.

The project runs in windowed mode, and uses the regular Windows cursor for mouse input; the GLFW callbacks in my program then turns input events into data I can poll in the actual main loop. The main loop runs at 60 Hz just fine when I use glfwPollEvents(), and I've also tried glfwWaitEvents() (because this is a GUI-style app, no real-time simulation going on.)

The problem is that, occasionally (every 10-20 seconds perhaps) my proejct stalls the main thread. Clicking on things on the screen doesn't register until I wait for the stall to complete. These stalls are sometimes less -- from a few hundred milliseconds, often 1-2 seconds, and sometimes as big as 5 seconds.

I've traced the stall down to specific calls to glGetError(). When I remove all glGetError() calls, the stalls move to a call to glReadPixels() that I do right before glfwSwapBuffers() to prevent the GPU from running ahead of the program. I *want* this synchronization. As I said, it runs at 60 Hz just fine, most of the time.

So, the first level of advice I expect I'll get is "never read anything back." I understand that advice, and I don't think it's applicable here. If the only problem was that reading something back flushes/stalls the GPU, then I'd expect the maximum stall to be at most 16 milliseconds -- the game runs at 60 Hz just fine, and the fill rate used just isn't that much (and this is a very fast machine. It runs Unreal Engine 4 demos just fine :-)

Secondly, glGetError() doesn't necessarily have to stall or flush the pipeline. Indeed, the whole point of GL is that the application pushes commands into a command stream, and glGetError() reports the fact that "I couldn't put this command into the stream because you called it wrong." Anything that happens on the other end of that stream is not readable through glGetError() -- at least, in the platonic model of the API. I understand that IHVs may do other crazy stuff in their drivers. But not stalling for 5 seconds.

Stalls that behave like this kind-of feel like a thread priority inversion problem. I can't quite see how that would happen, though. At most, the CPU load on my system is 50% (and usually lower,) and my application only spawns a total of three threads, out of 8 hardware threads available on the 4 CPU cores.

Note that when I remove both the glGetError() calls and the glReadPixels() calls, the stalls happen less often, but they do still happen, at the glfwSwapBuffers() call in that case. Occasionally.

So -- has anyone seen stalls like this? Any idea what it could be, and what I could do to fix it?

Cocos2d-x on Visual Studio 2012 Pro?

29 March 2013 - 11:45 AM

See, this is why I dislike and distrust "wizards" and other such tomfoolery.

I want to set up a cocos2d-x project for visual studio 2012 pro. However, all the documentation I have found just says "run the wizard" and the wizard is for visual studio 2010.

Is there a good resource for "here's how to manually set up a cocos2d-x project" or, worst case, a version of the wizard for 2012?

Finding good people to port an OpenGL engine?

31 January 2013 - 11:28 PM

I have an engine written in C++ for OpenGL ES that currently compiles for WebGL using clang and Emscripten. (Yeah, I know, crazy, right? :-)
Now, I'd like to compile it for/port it to iOS using Apple tools, but I have very little experience on iOS, and very little time available to actually do that.
This sounds like the kind of thing that could easily be outsourced for some amount of money, but I've tried oDesk and Freelancer, and the quality of the contractors I find there are ... not what I'd hope so far.
Does anyone have a good idea of where to find some solid help that can do this not-too-complicated task for a not-outrageous amount of money, and help accelerate this port?