I'm developing a multiplatform game (PC/Mac/Linux eventually) using OpenGL and SDL2. My project works as expected on Mac (AMD gpu) and another Windows PC with an Intel Adom/nVidia Ion chipset with the same codebase, but when I run the Windows executable on my Core i5-4690K using the onboard HD Graphics 4600 gpu I experience a couple of strange problems...
Firstly, I have a number of models being drawn into the scene. Ordinarily on other machines, they all appear at once, but one of the models appears a second or two after the program has been started when running on HD Graphics 4600.
Secondly, I have a fairly dynamic model representing water, which is updated every frame as new cells are added to the volume, and water is spread about according to the rules of the simulation. After a certain amount of new geometry is added, then I start to see weird glitchy behaviour, such as the lines representing the debug geometry for collision detection changing colour, then part of one of the character models appears as part of the water volume (from what I can tell), and get random triangles between scenery and debug geometry, etc...
Strangely enough, as even more geometry is added to the water model, the glitches stop and everything carries on as normal!
I've uploaded a short video showing the issue here:
Geometry is being drawn via vertex arrays (i.e. calls to glDrawArrays()) and does not use any fixed pipeline stuff - shaders only. It doesn't matter which context version of OpenGL I request from SDL, the issue still happens regardless.
Has anyone seen anything like this before? Can anyone suggest trying anything in my code? (already tried glFinish() in my rendering loop to see if waiting until all draw commands for each model finished being executed did anything - it didn't)
Is there some buffer resizing issue happening in the drivers or something (may explain why lines change colour, or bits of models appear in other models until the buffer gets to a certain size and gets reallocated...?) Pure guesswork obviously, but i'm curious as to why the problem goes away when more geometry is added to the scene - you'd think that adding more geometry to an already glitchy situation would make things worse rather than better!
Core i5-4690K CPU @ 3.5GHz
8GB DDR3 RAM
Gigabyte Z97X-UD5H-BK motherboard
Windows 7 Professional
HD Graphics 4600 GPU, video bios version 2179.0, driver version 10.18.10.3621