static sk_sp<GrContext> create_grcontext() { // We just leak the OSMesaContext... the process will die soon anyway. if (OSMesaContext osMesaContext = OSMesaCreateContextExt(OSMESA_BGRA, 0, 0, 0, nullptr)) { static uint32_t buffer[16 * 16]; OSMesaMakeCurrent(osMesaContext, &buffer, GL_UNSIGNED_BYTE, 16, 16); } auto osmesa_get = [](void* ctx, const char name[]) { SkASSERT(nullptr == ctx); SkASSERT(OSMesaGetCurrentContext()); return OSMesaGetProcAddress(name); }; sk_sp<const GrGLInterface> mesa(GrGLAssembleInterface(nullptr, osmesa_get)); if (!mesa) { return nullptr; } return sk_sp<GrContext>(GrContext::Create( kOpenGL_GrBackend, reinterpret_cast<intptr_t>(mesa.get()))); }
int main(int argc, char **argv) { // inicializaçao dragging = false; dragx = 0; dragy = 0; camx = 1; camy = 5; glutInit(&argc, argv); ilInit(); glutInitDisplayMode(GLUT_DEPTH|GLUT_DOUBLE|GLUT_RGBA); glutInitWindowPosition(0,100); glutInitWindowSize(1280,800); glutCreateWindow("Rock Bar UM"); // registo de funçoes glutDisplayFunc(renderScene); glutIdleFunc(renderScene); glutReshapeFunc(changeSize); // por aqui registo da funções do teclado e rato glutIgnoreKeyRepeat(1); glutKeyboardFunc(processNormalKeys); glutSpecialFunc(pressKeySpecial); glutSpecialUpFunc(releaseKeySpecial); glutKeyboardUpFunc(releaseKeyNormal); // por aqui a criaçao do menu glewInit(); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glEnable(GL_TEXTURE_2D); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); //Texturas genTextureMadeira(); genTextureMadeira2(); genTextureMesa(); genTextureMetal(); genTextureVidro(); genTextureChao(); genTextureParede(); genTextureTeto(); genPoster1(); genPoster2(); genPoster3(); genPoster4(); genPoster5(); genPoster6(); genTextureBook(); genPoster7(); genSink(); //Objectos mesa(); cadeira(); candeeirodemesa(); candeeirodetecto(); candeeirodeparede(); mesalta(); cadeiralta(); cup(); copoalto(); chao(); paredes(); palco(); balcao(); armario(); posters(); bookshelf(); // entrar no ciclo do GLUT glutMainLoop(); return 1; }