Skip to content

Instantly share code, notes, and snippets.

@LordTocs
Last active August 29, 2015 14:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LordTocs/f227528a729986df9643 to your computer and use it in GitHub Desktop.
Save LordTocs/f227528a729986df9643 to your computer and use it in GitHub Desktop.
Original Context Creation
GraphicsContext::GraphicsContext(ContextTarget &target)
: Target (target)
{
PIXELFORMATDESCRIPTOR pfd= // pfd Tells Windows How We Want Things To Be
{
sizeof(PIXELFORMATDESCRIPTOR), // Size Of This Pixel Format Descriptor
1, // Version Number
PFD_DRAW_TO_WINDOW | // Format Must Support Window
PFD_SUPPORT_OPENGL | // Format Must Support OpenGL
PFD_DOUBLEBUFFER, // Must Support Double Buffering
PFD_TYPE_RGBA, // Request An RGBA Format
32, // Select Our Color Depth
0, 0, 0, 0, 0, 0, // Color Bits Ignored
0, // No Alpha Buffer
0, // Shift Bit Ignored
0, // No Accumulation Buffer
0, 0, 0, 0, // Accumulation Bits Ignored
32, // 32Bit Z-Buffer (Depth Buffer)
0, // No Stencil Buffer
0, // No Auxiliary Buffer
PFD_MAIN_PLANE, // Main Drawing Layer
0, // Reserved
0, 0, 0 // Layer Masks Ignored
};
if (!(PixelFormat = ChoosePixelFormat (target.GetHDC (), &pfd)))
{
cout << "Failed to choose pixel format." << endl;
}
if (!SetPixelFormat(target.GetHDC(),PixelFormat, &pfd))
{
//DestroyGameWindow (); //Insert Error
cout << "Failed to set pixel format." << endl;
}
HGLRC temp;
if (!(temp = wglCreateContext (target.GetHDC ())))
{
//DestroyGameWindow (); //Insert Error
cout << "Failed to create context" << endl;
}
if (!wglMakeCurrent(target.GetHDC (), temp))
{
//DestroyGameWindow ();
cout << "Failed to make current." << endl;
}
GLenum err = glewInit();
if (err != GLEW_OK)
{
char *error = (char *)glewGetErrorString(err);
cout << "GLEW INIT FAIL: " << error << endl;
}
int attribs [] =
{
WGL_CONTEXT_MAJOR_VERSION_ARB, 4,
WGL_CONTEXT_MINOR_VERSION_ARB, 2,
WGL_CONTEXT_FLAGS_ARB,
#ifdef _DEBUG
WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB | WGL_CONTEXT_DEBUG_BIT_ARB,
#else
WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,
#endif
0
};
if (wglewIsSupported ("WGL_ARB_create_context") == 1)
{
if (!(hRC = (wglCreateContextAttribsARB(Target.GetHDC(), 0, attribs))))
{
std::cout << "Failed to create context." << std::endl;
}
GLErrorCheck();
MakeCurrent ();
wglDeleteContext (temp);
wglMakeCurrent (Target.GetHDC (),hRC);
}
else
{
cout << "Failed to create context again..." << endl;
}
#ifdef _DEBUG
glEnable(GL_DEBUG_OUTPUT);
glDebugMessageCallback(dbgcallback, nullptr);
#endif
char *shadeversion = (char *)glGetString (GL_SHADING_LANGUAGE_VERSION);
//GLErrorCheck;
char *version = (char *)glGetString(GL_VERSION);
//GLErrorCheck;
std::cout << "Version: " << version << std::endl << "Shading Version: " << shadeversion << std::endl;
glViewport (0,0,Target.GetWidth (), Target.GetHeight ());
GLErrorCheck ();
SetClearColor (Color(0,0,0,0));
SetClearDepth(1000.0f);
//EnableDepthBuffering ();
//DisableDepthTest ();
NormalBlending ();
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST); //Doesn't get Abstracted
GLErrorCheck();
//glLoadIdentity ();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment