Methodology rending large amount of objects openGL

Hello all,

I have been looking into methodologies on renderign a large number of Objects. These objects are really simple. Arcs (which are composed of lines), lines, and “nodes” will be rendered on the screen. There will be no texture applied to any of these shapes. For the application, I am not sure how many arcs, lines, or nodes the user will want to draw. For the sake of discussion, lets say we need to render 10,000 lines, 10,000 arcs, and 10,000 nodes.

I was looking into multi-threading openGL but I did not get very far since OpenGL doesn’t support multi-threading.

With this in mind, are there tips/tricks/methodologies that I can employ to render a large number of objects? Or am I stuck on using a single-core for this?

Support for multi-threading can vary by platform, but all of the most common platforms (Windows, MacOS X, Linux) support multi-threading. However, this won’t improve performance; on consumer-grade hardware, it will typically have a negative effect upon performance.

CPU cores aren’t likely to be relevant. You can saturate the GPU with a single core.

The main factors for performance are to avoid unnecessary synchronisation and to minimise the number of draw calls.

Hello thank you for your response. I apologize for the delay on this. I got a little busy for awhile and I haven’t had a time to check this.

I am just concerned that if I have 10,000 lines, 10,000 arcs, and 10,000 nodes, then a single cpu will take a significant amount of time to load the OpenGL buffer with all of that data. I am not concerned about the GPU rendering. I am mainly concerned with the time that it takes for the cpu to load all of that data.

The user is able to manipulate the viewing screen which is a 2D plane. I am not using any 3D objects or animations. I am literally drawing lines, arcs, and nodes. Each time the user changes the view by panning or zooming, the program needs to redraw all of the geometry. I was thinking if there was some way to manipulate the camera so that the camera moves about the geometry and the model view does not need to be redrawn?

But that’s only done once; the whole point of buffer objects is that the data is stored on the GPU, so it doesn’t need to be transferred each frame.

That’s handled by either the model-view matrix (in the fixed-function pipeline) or the vertex shader (in the programmable pipeline). Either way, the transformations are performed by the GPU. The CPU just needs to set the transformation and issue one or more draw calls.

Ok so it sounds like that what I am doing, there is no need for “multi-threading”. This is something that a single core should be able to handle?

That’s correct.

OK, thank you. I guess that I will not worry about this and continue on with the project