Last active
August 29, 2015 14:03
-
-
Save LordTocs/f227528a729986df9643 to your computer and use it in GitHub Desktop.
Original Context Creation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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