Jump to content
  • Advertisement
Sign in to follow this  
serratemplar

OpenGL Is the accumulation buffer supported on all hardware?

This topic is 4072 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

That's pretty much the long and short of it: I've got a game that runs in Linux on two machines and on three Windows machines, all different video cards, and it all looks good. On my MacBook Pro, no go. On the MacBook it runs at less than 3fps, while averaging 30fps on the other aforementioned systems. When I turn off the accum buffer however, it flies at well over 30fps (like, topping out at 60). My thinking is that its not a hardware issue...but that I'm not doing something right with initialization. To that end I've run the code in both GLUT and in an SDL skeleton I hacked up to make it work (from NeHe)...again, both work well on all systems other than my MacBook Pro. The MacBook is brand new...like literally a week out of the box. I run World of Warcraft on it, all settings maxed out, and it looks very good and gets a good framerate (40fps or so), but I don't know if WoW uses the Accum buffer, and none of the demos I've run (which all run well) purport to do so. Is this a hardware issue? Or am I possibly not initializing the accum buffer properly? It looks like in GLUT it's just a flag to pass to the init function, and in SDL you just set the size for each channel and you're done. Someone suggested I use "straight AGL", and to that end I've been looking for documentation for Apple's OpenGL thing. I'm still looking. I thought it couldn't hurt to post for help here though. Thank you in advance.

Share this post


Link to post
Share on other sites
Advertisement
Accumulation buffers are pretty standard - it is possible the the macbook doesn't have one, but I'd be surprised. I can't help you more without a rundown of the hardware specs on each machine - I would look at what type of card your windows box has vs your macbook. Another potential source of slowdown is the way you're drawing code works. One common mistake is to use glVertex to send each point or vertex to the video card - doing that will cause your code to run horribly slow.

Share this post


Link to post
Share on other sites
I used display lists for everything.

I can get you those specs once I get home, I think I'll have time. I have a tool on my Mac (OpenGL Profiler it's called) that lists all of the capabilities of my card, and while it's a big list, I don't see the letters "accum" anywhere. I don't have a similar tool for my other systems (which run in Windows and Linux), so I'm not sure if this Profiler just doesn't list the accum buffer (since it's standard), or what.

Thanks for the help =)

Share this post


Link to post
Share on other sites
They've all got ATI cards (I'd give you more but I didn't make it home this evening), and expensive ones. The one in the laptop is actually no longer supported (it's an ATI rage card) and it runs the code fine.

Not only does the code on the Mac run abyssmally slowly, but the picture is like jaggy swiss cheese instead of, well, the solid scene I see on the other systems.

The ATI in my desktop has has 512MB, and the one in my MacBook has 128MB, it's an ATIX1600.

Share this post


Link to post
Share on other sites
This problem intrigued me for some reason (I'm not even a MacBook guy). I googled around for you and found this at the apple developer's site:

http://developer.apple.com/technotes/tn/tn2014.html


The interesting bit is:
Quote:

Buffer Allocation on Mac OS 9 and OS X

OS 9 allocates buffers on a per-context basis; each next context that is created has its own set of independent buffers that are exclusive to that context. Buffers can be shared among contexts on Mac OS 9 by specifying context to share with in aglCreateContext().

Stencil, AUX (auxiliary) and accumulation buffers are not supported in hardware on Mac OS 9.

Mac OS X allocates buffers on a per-surface basis; a "surface" is the equivalent of a drawable on Mac OS X. You may create and attach multiple contexts to a single surface in Mac OS X. All contexts created on a given surface will share the same set of buffers.

Mac OS X also supports AUX (auxiliary) buffers and an 8-bit stencil buffer. Accumulation buffers are not supported in hardware on Mac OS X.



Be advised this is from March of 2001, and if I recall correctly Mac OS X is still the latest mac? (please don't kill me if I'm wrong!)

Hope this is informative in some way for you...

Share this post


Link to post
Share on other sites
Mac OS X is in fact my OS; it's 10.4 now, and I would like to have thought they'd fixed such a thing, but so far experimentation suggests they have not. Thanks for finding that for me, disappointing though it is =
Ah well. Plenty of other powers to play with. I suppose I can live without the accumulation buffer for now =)

Share this post


Link to post
Share on other sites
Definitely don't give up yet though, my source is so old, it'd just be awkward if they still didn't fix something like that (although from what I hear, accumulation buffer isn't always necessary and is slow anyways.)

Go to a mac forum that deals with OpenGL programming, and post this question.

Then post your findings here so others can see it :-)

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!