opengl - WGL: No double buffering + multi sampling = FAIL? -
I usually use wglChoosePixelFormatARB ()
with these arguments (among others) Create a pixel format:
WGL_DOUBLE_BUFFER_ARB = GL_TRUE WGL_SAMPLE_BUFFERS_ARB = GL_TRUE WGL_SAMPLES_ARB = 4
i.e. double buffering ON and X4 multisamming works just fine .
But when I try to turn on double buffering:
WGL_DOUBLE_BUFFER_ARB = GL_FALSE WGL_SAMPLE_BUFFERS_ARB = GL_TRUE WGL_SAMPLES_ARB = 4
to make a call wglChoosePixelFormatARB ()
fails (or indicates that it has not created anything)
When I turn off multisampling effectively:
WGL_DOUBLE_BUFFER_ARB = GL_FALSE WGL_SAMPLE_BUFFERS_ARB = GL_TRUE WGL_SAMPLES_ARB = 1
I work fine again
Is there something underlying that works with multisamming Prevents non-double-buffer pixel format?
This is because I'm discontinuing double buffering to get unrestricted frame rate, with double buffering of the frame rate I get, up to only 60 fps (this laptop works on LCD 60Hz is). But with double buffering, I can reach 1500 FPS. Is there any way to achieve this with double buffering?
In theory, drawing mode in single-buffer means that you are being presented directly on the screen (Front buffer aka) are revised. Since that memory is already in a specific format, you do not have to choose another. (I'm saying in principle because the platform delights in behavior though. Arrow, for example, does not allow access to front-buffer).
In addition to this, multisamming, this step converts X sample / pixel to 1 pixel, when the back-buffer is copied to the front buffer (called the resolution phase) is. In single buffer mode, there is no such step.
As your 60 FPS locking, you probably want to see it. The point here is that you do not want to update the updates shown on the screen, while the data in the screen is refreshed; It tearing, by default, swap updates only when the screen is vertically synchronized (aka Viscink), so that you can lock the screen's refresh rate.
If you do not see your display as separate frames, you can turn it off.
For completeness, triple buffering is an alternate mode, in which the GPU ping-pong rendering is basically between 2 back buffers behind the buffer, while the front buffer is shown. This is dependent on the GPU to select the end-ended back-buffer when the time shown on the screen (the Wiener) comes at a time. Unfortunately, I'm not aware of the WGL method to ask for triple buffering.
Comments
Post a Comment