ccReturn ccGLContextBind(void) { int pixelFormatIndex; ccAssert(ccWindowExists()); _CC_WINDOW_DATA->hdc = GetDC(_CC_WINDOW_DATA->winHandle); if(_CC_WINDOW_DATA->hdc == NULL) { ccErrorPush(CC_ERROR_GL_CONTEXT); return CC_FAIL; } PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0 }; pixelFormatIndex = ChoosePixelFormat(_CC_WINDOW_DATA->hdc, &pfd); if(pixelFormatIndex == 0) { ccErrorPush(CC_ERROR_GL_CONTEXT); return CC_FAIL; } if(SetPixelFormat(_CC_WINDOW_DATA->hdc, pixelFormatIndex, &pfd) == FALSE) { ccErrorPush(CC_ERROR_GL_CONTEXT); return CC_FAIL; } _CC_WINDOW_DATA->renderContext = wglCreateContext(_CC_WINDOW_DATA->hdc); if(_CC_WINDOW_DATA->renderContext == NULL) { ccErrorPush(CC_ERROR_GL_CONTEXT); return CC_FAIL; } //Make window the current context if(wglMakeCurrent(_CC_WINDOW_DATA->hdc, _CC_WINDOW_DATA->renderContext) == FALSE) { ccErrorPush(CC_ERROR_GL_CONTEXT); return CC_FAIL; } return CC_SUCCESS; }
MC_API int mc_ccore_create(struct mc_console *con) { if(!ccWindowExists()){ return -1; } if(mc_create(con)){ return -2; } ccRect s = ccWindowGetRect(); if(mc_set_texture_size(con, s.width, s.height)){ return -3; } return 0; }
ccReturn ccGLContextBind(int glVersionMajor, int glVersionMinor) { int pixelFormatIndex; int glVerMajor, glVerMinor; ccAssert(ccWindowExists()); WINDOW_DATA->hdc = GetDC(WINDOW_DATA->winHandle); if(WINDOW_DATA->hdc == NULL) { ccErrorPush(CC_ERROR_GL_CONTEXT); return CC_FAIL; } PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0 }; pixelFormatIndex = ChoosePixelFormat(WINDOW_DATA->hdc, &pfd); if(pixelFormatIndex == 0) { ccErrorPush(CC_ERROR_GL_CONTEXT); return CC_FAIL; } if(SetPixelFormat(WINDOW_DATA->hdc, pixelFormatIndex, &pfd) == FALSE) { ccErrorPush(CC_ERROR_GL_CONTEXT); return CC_FAIL; } WINDOW_DATA->renderContext = wglCreateContext(WINDOW_DATA->hdc); if(WINDOW_DATA->renderContext == NULL) { ccErrorPush(CC_ERROR_GL_CONTEXT); return CC_FAIL; } //Make window the current context if(wglMakeCurrent(WINDOW_DATA->hdc, WINDOW_DATA->renderContext) == FALSE) { ccErrorPush(CC_ERROR_GL_CONTEXT); return CC_FAIL; } //Version check glGetIntegerv(GL_MAJOR_VERSION, &glVerMajor); glGetIntegerv(GL_MINOR_VERSION, &glVerMinor); if(glVerMajor < glVersionMajor || (glVerMajor == glVersionMajor && glVerMinor < glVersionMinor)) { ccErrorPush(CC_ERROR_GL_VERSION); return CC_FAIL; } //Fetch extentions after context creation if(glewInit() != GLEW_OK) { ccErrorPush(CC_ERROR_GL_GLEWINIT); return CC_FAIL; } return CC_SUCCESS; }