[gameprogrammer] Re: OpenGL + SDL + multi-threading + Theora
- From: "richard sabbarton" <richard.sabbarton@xxxxxxxxx>
- To: gameprogrammer@xxxxxxxxxxxxx
- Date: Wed, 22 Aug 2007 13:14:37 +0100
Hi There,
I ran into similar problem with OpenGL and Multi-Threading. I was able to
generate textures without errors but they never displayed correctly in the
application. I think you run into problems because of the glBegin() and
glEnd() in your Main Thread. You can't manipulate Textures between these (I
think from memory) and you cannot guaranty the current status of you main
thread when generating the texture.
What you could try is decoding the video frames to a Memory Bitmap and then
generate the Texture in your main thread from the memory BMP. Also, you
could use a BMP pair and alternate between them for each frame. You can
then set a flag to show which one the main thread should use. This will
avoid errors as you are likely to render each frame a different number of
times depending on the speed of your main thread.
I have not done this myself but it should be possible. This was my planned
workaround but I never got as far as coding it. My wife had a baby and I
haven't looked at a line of code since! He's two months old now. Maybe I
can start sneaking back to the keyboard while my wife isn't looking...
Let me know if it works or if you try it.
Rich
On 22/08/07, Husam Zakaria <hzcppff@xxxxxxxxx> wrote:
>
> Hi, every one
>
> I am working on an application that can play theora ogg file using
> OpenGL and SDL, and I looked at the Nebula Device 2 nOggTheoraplayer
> class at this link:
>
>
> http://nebuladevice.cubik.org/documentation/nebula2/classnOggTheoraPlayer.shtml
>
> and build my class the same way they build it, but the problem is that
> I don't know how to play the video with such heirarcy.
> so I decide to create a thread that decode the video frames and render
> the decoded frames to a texture, and in the main thread I will render
> this texture to the screen for every frame.
>
> the problem is that I created the texture in the main thread and then
> I created the thread that will render to this texture, and when I want
> to render to this texture I call the following code to be sure that
> the texture has been created:
>
> assert(glIsTexture(texture_id));
>
> when the application run the assertion will cut the program indecating
> that the texture isn't valid, so why does that happend?!! I am sure
> that I create the texture in the main thread with the same id, so what
> I can do to solve this?
>
> ---------------------
> To unsubscribe go to http://gameprogrammer.com/mailinglist.html
>
>
>
- Follow-Ups:
- [gameprogrammer] Re: OpenGL + SDL + multi-threading + Theora
- From: Husam Zakaria
- References:
- [gameprogrammer] OpenGL + SDL + multi-threading + Theora
- From: Husam Zakaria
Other related posts:
- » [gameprogrammer] OpenGL + SDL + multi-threading + Theora
- » [gameprogrammer] Re: OpenGL + SDL + multi-threading + Theora
- » [gameprogrammer] Re: OpenGL + SDL + multi-threading + Theora
- » [gameprogrammer] Re: OpenGL + SDL + multi-threading + Theora
- » [gameprogrammer] Re: OpenGL + SDL + multi-threading + Theora
- » [gameprogrammer] Re: OpenGL + SDL + multi-threading + Theora
- » [gameprogrammer] Re: OpenGL + SDL + multi-threading + Theora
- [gameprogrammer] Re: OpenGL + SDL + multi-threading + Theora
- From: Husam Zakaria
- [gameprogrammer] OpenGL + SDL + multi-threading + Theora
- From: Husam Zakaria