void render(CGLContextObj cgl_ctx) { float fXOffset = 0.0f, fYOffset = 0.0f; ComputePositionOffsets(fXOffset, fYOffset); AdjustVertexData(fXOffset, fYOffset); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT); glUseProgram(shader_program); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer_object); glEnableVertexAttribArray(0); glEnableVertexAttribArray(1); glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0); glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, 0, (void *) (sizeof(float)*3*4)); glDrawArrays(GL_TRIANGLES, 0, 3); glDisableVertexAttribArray(0); glDisableVertexAttribArray(1); glUseProgram(0); CGLFlushDrawable(cgl_ctx); }
VOID GL3OSXRenderWindow::flush() { if(m_pContextObj) { CGLFlushDrawable(m_pContextObj); } // return GL3RenderWindow::flush(); }
void _glfwPlatformSwapBuffers( void ) { if( !_glfwWin.Fullscreen ) { aglSwapBuffers( _glfwWin.AGLContext ); } else { CGLFlushDrawable( _glfwWin.CGLContext ); } }
void _glfwPlatformSwapBuffers( void ) { if( _glfwWin.fullscreen ) { CGLFlushDrawable( _glfwWin.cglContext ); } else { aglSwapBuffers( _glfwWin.aglContext ); } }
void DarwinGlContext::flush() { if ( iContext ) { GreResourceAutolock ; if ( CGLFlushDrawable(iContext) != kCGLNoError ) { GreDebugPretty() << "Can't flush CGLContext '" << getName() << "'." << std::endl; } } }
void send_all() { if (event_queue.empty()) { return; } while (!event_queue.empty()) { event_queue.front()->send(&event_tracker); event_queue.front()->send(main_loop.top()); event_queue.pop(); } main_loop.draw(); CGLFlushDrawable(context.c_obj()); }
//-------------------------------------------------------------------------------------------------// void OSXWindow::swapCGLBuffers(void) { CGLFlushDrawable(mCGLContext); CGLContextObj curCtx = CGLGetCurrentContext(); if(curCtx != mCGLContext) { CGLSetCurrentContext(mCGLContext); #if defined(MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 CGLSetFullScreenOnDisplay(mCGLContext, CGDisplayIDToOpenGLDisplayMask(kCGDirectMainDisplay)); #else CGLSetFullScreen(mCGLContext); #endif } }
/* * PsychOSFlipWindowBuffers() -- OS-X swapbuffers call. */ void PsychOSFlipWindowBuffers(PsychWindowRecordType *windowRecord) { CGLError cglerr; psych_bool oldStyle = (PsychPrefStateGet_ConserveVRAM() & kPsychUseOldStyleAsyncFlips) ? TRUE : FALSE; // Execute OS neutral bufferswap code first: PsychExecuteBufferSwapPrefix(windowRecord); // Trigger the "Front <-> Back buffer swap (flip) (on next vertical retrace)": if ((cglerr = CGLFlushDrawable((oldStyle || PsychIsMasterThread()) ? windowRecord->targetSpecific.contextObject : windowRecord->targetSpecific.glswapcontextObject))) { // Failed! This is an internal OpenGL/CGL error. We can't do anything about it, just report it: printf("PTB-ERROR: Doublebuffer-Swap failed (probably during 'Flip')! Internal OpenGL subsystem/driver error: %s. System misconfigured or driver/operating system bug?!?\n", CGLErrorString(cglerr)); } }
static void gfx_ctx_cgl_swap_buffers(void *data) { gfx_ctx_cgl_data_t *cgl = (gfx_ctx_cgl_data_t*)data; CGLFlushDrawable(cgl->glCtx); }
void syncTestGLContext(void) { CGLFlushDrawable(g_context); }
static void RLXAPI Flip(void) { CGLFlushDrawable(g_pCGLC); }
void CocoaVideoDriver::loop(Card* initial) { CGLPixelFormatAttribute attrs[] = { kCGLPFAOpenGLProfile, (CGLPixelFormatAttribute)kCGLOGLPVersion_3_2_Core, kCGLPFADisplayMask, static_cast<CGLPixelFormatAttribute>( CGDisplayIDToOpenGLDisplayMask(kCGDirectMainDisplay)), kCGLPFAColorSize, static_cast<CGLPixelFormatAttribute>(24), kCGLPFADoubleBuffer, kCGLPFAAccelerated, static_cast<CGLPixelFormatAttribute>(0), }; cgl::PixelFormat pixel_format(attrs); cgl::Context context(pixel_format.c_obj(), NULL); unique_ptr<CocoaFullscreen> fullscreen; unique_ptr<CocoaWindowed> windowed; if (_fullscreen) { fullscreen.reset(new CocoaFullscreen(pixel_format, context, _screen_size)); antares_event_translator_set_window(_translator.c_obj(), fullscreen->window()); _viewport_size = fullscreen->viewport_size(); } else { windowed.reset(new CocoaWindowed(pixel_format, context, _screen_size, false, true)); antares_event_translator_set_window(_translator.c_obj(), windowed->window()); _viewport_size = windowed->viewport_size(); } GLint swap_interval = 1; CGLSetParameter(context.c_obj(), kCGLCPSwapInterval, &swap_interval); CGLSetCurrentContext(context.c_obj()); MainLoop main_loop(*this, initial); main_loop.draw(); CGLFlushDrawable(context.c_obj()); EventBridge bridge = {_event_tracker, main_loop, context, _translator}; antares_event_translator_set_mouse_down_callback( _translator.c_obj(), EventBridge::mouse_down, &bridge); antares_event_translator_set_mouse_up_callback( _translator.c_obj(), EventBridge::mouse_up, &bridge); antares_event_translator_set_mouse_move_callback( _translator.c_obj(), EventBridge::mouse_move, &bridge); antares_event_translator_set_caps_lock_callback( _translator.c_obj(), EventBridge::caps_lock, &bridge); antares_event_translator_set_caps_unlock_callback( _translator.c_obj(), EventBridge::caps_unlock, &bridge); cf::MutableDictionary keyboard(CFDictionaryCreateMutable( NULL, 0, &kCFCopyStringDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)); keyboard.set(CFSTR(kIOHIDDeviceUsagePageKey), cf::wrap(kHIDPage_GenericDesktop).c_obj()); keyboard.set(CFSTR(kIOHIDDeviceUsageKey), cf::wrap(kHIDUsage_GD_Keyboard).c_obj()); cf::MutableDictionary gamepad(CFDictionaryCreateMutable( NULL, 0, &kCFCopyStringDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)); gamepad.set(CFSTR(kIOHIDDeviceUsagePageKey), cf::wrap(kHIDPage_GenericDesktop).c_obj()); gamepad.set(CFSTR(kIOHIDDeviceUsageKey), cf::wrap(kHIDUsage_GD_GamePad).c_obj()); cf::MutableArray criteria(CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks)); criteria.append(keyboard.c_obj()); criteria.append(gamepad.c_obj()); auto hid_manager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone); IOHIDManagerSetDeviceMatchingMultiple(hid_manager, criteria.c_obj()); IOHIDManagerScheduleWithRunLoop(hid_manager, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); IOReturn r = IOHIDManagerOpen(hid_manager, kIOHIDOptionsTypeNone); if (r != 0) { throw Exception("IOHIDManagerOpen"); } IOHIDManagerRegisterInputValueCallback(hid_manager, EventBridge::hid_event, &bridge); while (!main_loop.done()) { int64_t at; if (main_loop.top()->next_timer(at)) { at += _start_time; if (antares_event_translator_next(_translator.c_obj(), at)) { bridge.send_all(); } else { main_loop.top()->fire_timer(); main_loop.draw(); CGLFlushDrawable(context.c_obj()); } } else { at = std::numeric_limits<int64_t>::max(); antares_event_translator_next(_translator.c_obj(), at); bridge.send_all(); } } }
void LLWindowMacOSX::swapBuffers() { CGLFlushDrawable(mContext); }