Jump to content
  • Advertisement
Sign in to follow this  
Vortez

OpenGL Am i doing this right? (OpenGL 3.0+ context)

This topic is 1957 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

Hi, i've been trying to add some code to my engine to create an opengl 3.1 context, to keep up to date with current technology. However, it's dosen't seem to do anything different... I though depreciated features where phased out in 3.1, and that you absolutely needed shaders to render anything, but all my old code still work and i can even render stuff without shaders. Is there a way to be sure the context i am creating is what i am trying to do?

 

For example, i added this pieces of code in my engine initialization procedure:

 

    if(!SetupPixelFormatDescriptor(hDC)){
	PostQuitMessage(0);
	return false;
    }

    #ifndef COMPILE_FOR_OPENGL_3_1_
        hRC = wglCreateContext(hDC);
        wglMakeCurrent(hDC, hRC);
    #else
        GLenum err = glewInit();
        HGLRC tempContext = wglCreateContext(hDC);
        wglMakeCurrent(hDC, tempContext);

	int attribs[] =
	{
        WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
        WGL_CONTEXT_MINOR_VERSION_ARB, 1,
        WGL_CONTEXT_FLAGS_ARB, 0,
        0};

	PFNWGLCREATECONTEXTATTRIBSARBPROC CreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)wglGetProcAddress("wglCreateContextAttribsARB");
	
        hRC = CreateContextAttribsARB(hDC, 0, attribs);
	wglMakeCurrent(NULL,NULL);
	wglDeleteContext(tempContext);
	wglMakeCurrent(hDC, hRC);
    #endif

 

But for the reasons listed above, it dosen't seem to do much... I followed the new red book instruction (OpenGL Programming guide 7th edition).

 

Am i doing this right?

Edited by Vortez

Share this post


Link to post
Share on other sites
Advertisement

The WGL_CONTEXT_FLAG_ARG option needs the WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB flag to produce a forward-compatible rendering context. Without the flag, you get a backward compatible context with all the old functions as well as the new ones.

Share this post


Link to post
Share on other sites

So, i would have to do

 

WGL_CONTEXT_FLAG_ARG | WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB

 

?

 

What's the point of using WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB if all it does is remove depreciated stuff?

 

And how something can be "foward compatible"?!? I mean, backward compatible make sense, but foward compatible sound like

"this is compatible with things that don't exist yet"!

 

i know what they mean, but it's weird...

Edited by Vortez

Share this post


Link to post
Share on other sites

So, i would have do

 

WGL_CONTEXT_FLAG_ARG | WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB

 

?

The bit goes into the value, not the option.

WGL_CONTEXT_FLAG_ARG, WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB

 

What's the point of using WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB if all it does is remove depreciated stuff?

You asked how to get rid of the deprecated stuff, and that bit gets rid of the deprecated stuff. So the point of it should be obvious to you :)

Share this post


Link to post
Share on other sites

Ahh, i think i just got how the attriblist array work... so, aren't i am missing a 0 at the end of my example above?

 

For example, this code terminate it with 2 zeros. I mean, mine too... but isin't the parameters working in pair? Mine have an uneven number of elements, does it matter?

 

I can't find any good documentation on this wglCreateContextAttribsARB function that explain the arguments properly.

Edited by Vortez

Share this post


Link to post
Share on other sites

No, the specification says that the list of option/value pairs are terminated by a zero value, so one zero is enough.

 

However, I do terminate it with a double zero myself simply because I look at it as a list of option/value pairs, and the single terminating zero is only half a option/value pair. It is unnecessary, but I feels better to end it with a whole option/value pair since that is my view of it.

Edited by Brother Bob

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!