Dark Bit Factory & Gravity
PROGRAMMING => C / C++ /C# => Topic started by: marlon on April 30, 2012
-
Hello all you mighty DBF'ers! =)
Before my code is running I am initializing some stuff..
Loading my heightmap into the grid and calcing all the normals for that..
Then I do that Icosahedron for my jellyball..
And loading textures for those..
But when all those things are in progress I can not see anything on screen.. Just white screen..
I would like to print out some text and maybe a progressbar so I can follow what is going on..
But it is like I do not get anything on screen except when I run things from my MainWinLoop...
Anyone got any clues on how to do this..?
-marlon
-
I suggest loading assets and pre-calcing in a separate background thread. Your 'loader' thread can then update a variable to indicate percentage complete and finally set a flag (bool variable) when everything is loaded.
In your main thread, just check if [complete] is false, and if so, draw a progress bar to indicate the percentage complete value. When [complete] is set to true by the background thread (because everything is loaded), you can start your demo/intro.
IQ's 64k intro framework (http://www.iquilezles.org/www/material/framework64k/framework64k.htm) already includes something like this. It's worth checking out.
-
ok.. thanks Raizor
I will take a look at it! =)
-
I am thinking of it is possible to run my Initialize thread from my MainMessageLoop?
All that thru a CreateThread...
The CreateThread Function will initialize all the stuff and then put the Status/Progress in some global variable/variables and then let the MainMessageLoop print that to the screen.. When the thread is finished the Intro/Demo will continue..
Yes?
-marlon
-
The CreateThread Function will initialize all the stuff and then put the Status/Progress in some global variable/variables and then let the MainMessageLoop print that to the screen.. When the thread is finished the Intro/Demo will continue..
Yes?
Yes. That's it.
If you are using the C runtime libraries in your initialisation code, you need to use _beginthread or _beginthreadex instead of CreateThread so that it all works properly.
Jim
-
First I setup Opengl in some PreInitialization...
When that is done I use a window to print what is Calculating and Loading..
The Calculations and Loading routines are called from the Thread..
..
So..
1. Initialize OpenGL
2. Start a Setup Routine That is calling a Thread to do the Calculation and Loaidng.. (The Thread is calling several routines)
3. The Setup Routine also Prints out the Status of the Thread..
4. When The Setup Routine is Done my SceneDrawing is Starting up instead..
It looks like everything is loading and calculating.. but..
Then it comes to setting up the VBO in the Thread..
Boom.. =(
-> glGenBuffers( 1, &cJellyBall->vBuf);
glBindBuffer( GL_ARRAY_BUFFER_ARB, cJellyBall->vBuf );
glBufferData( GL_ARRAY_BUFFER_ARB, cJellyBall->m_iNumVertices * sizeof(VECTOR3D), cJellyBall->m_rgsVertices, GL_STATIC_DRAW_ARB );
This is where it stops.. All my objects are created dynamically..
But says that it got some adress violation.. Humm.. =(