void kgmUnit::remove() { clear(); if(getBody()) getBody()->remove(); if(getVisual()) getVisual()->remove(); m_remove = true; m_valid = false; m_visible = false; }
void RigidBody::draw(Interface* interface) { ResourceManager* rm = interface->getResourceManager(); if(!rm || !isVisible()) { return; } Visual& model = getVisual(); if(!&model) { return; } if(!body_) { Object::draw(interface); return; } glPushMatrix(); btScalar m[16]; btTransform &transform = body_->getWorldTransform(); transform.getOpenGLMatrix(m); glMultMatrixf(m); /*glDisable(GL_LIGHTING); drawCube(); glEnable(GL_LIGHTING);*/ preDraw(interface); model.draw(interface); postDraw(interface); glPopMatrix(); }
int screenDepth(Widget* widget) { GdkVisual* visual = getVisual(widget); if (!visual) return 24; return gdk_visual_get_depth(visual); }
int screenDepth(Widget* widget) { GdkVisual* visual = getVisual(widget); if (!visual) return 24; return visual->depth; }
int screenDepthPerComponent(Widget* widget) { GdkVisual* visual = getVisual(widget); if (!visual) return 8; return gdk_visual_get_bits_per_rgb(visual); }
int screenDepthPerComponent(Widget* widget) { GdkVisual* visual = getVisual(widget); if (!visual) return 8; return visual->bits_per_rgb; }
static glws::Drawable * createDrawableHelper(glws::Profile profile, int width = 32, int height = 32, bool pbuffer = false) { glws::Visual *visual = getVisual(profile); glws::Drawable *draw = glws::createDrawable(visual, width, height, pbuffer); if (!draw) { std::cerr << "error: failed to create OpenGL drawable\n"; exit(1); } return draw; }
glws::Drawable * createDrawable(glws::Profile profile) { glws::Drawable *draw = glws::createDrawable(getVisual(profile)); if (!draw) { std::cerr << "error: failed to create OpenGL drawable\n"; exit(1); return NULL; } return draw; }
Context * createContext(Context *shareContext, glfeatures::Profile profile) { glws::Visual *visual = getVisual(profile); glws::Context *shareWsContext = shareContext ? shareContext->wsContext : NULL; glws::Context *ctx = glws::createContext(visual, shareWsContext, retrace::debug); if (!ctx) { std::cerr << "error: failed to create " << profile << " context.\n"; exit(1); } return new Context(ctx); }
Context * createContext(Context *shareContext, glws::Profile profile) { glws::Context *shareWsContext = shareContext ? shareContext->wsContext : NULL; glws::Context *ctx = glws::createContext(getVisual(profile), shareWsContext, profile, retrace::debug); if (!ctx) { std::cerr << "error: failed to create OpenGL context\n"; exit(1); return NULL; } return new Context(ctx); }
static glws::Drawable * createDrawableHelper(glfeatures::Profile profile, int width = 32, int height = 32, const glws::pbuffer_info *pbInfo = NULL) { glws::Visual *visual = getVisual(profile); glws::Drawable *draw = glws::createDrawable(visual, width, height, pbInfo); if (!draw) { std::cerr << "error: failed to create OpenGL drawable\n"; exit(1); } if (pbInfo) draw->pbInfo = *pbInfo; return draw; }
int puglCreateWindow(PuglView* view, const char* title) { PuglInternals* const impl = view->impl; impl->display = XOpenDisplay(NULL); impl->screen = DefaultScreen(impl->display); XVisualInfo* const vi = getVisual(view); if (!vi) { XCloseDisplay(impl->display); impl->display = NULL; return 1; } #ifdef PUGL_HAVE_GL int glxMajor, glxMinor; glXQueryVersion(impl->display, &glxMajor, &glxMinor); PUGL_LOGF("GLX Version %d.%d\n", glxMajor, glxMinor); #endif Window xParent = view->parent ? (Window)view->parent : RootWindow(impl->display, impl->screen); Colormap cmap = XCreateColormap( impl->display, xParent, vi->visual, AllocNone); XSetWindowAttributes attr; memset(&attr, 0, sizeof(XSetWindowAttributes)); attr.background_pixel = BlackPixel(impl->display, impl->screen); attr.border_pixel = BlackPixel(impl->display, impl->screen); attr.colormap = cmap; attr.event_mask = (ExposureMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask | FocusChangeMask); impl->win = XCreateWindow( impl->display, xParent, 0, 0, view->width, view->height, 0, vi->depth, InputOutput, vi->visual, CWBackPixel | CWBorderPixel | CWColormap | CWEventMask, &attr); if (!createContext(view, vi)) { XDestroyWindow(impl->display, impl->win); impl->win = 0; XCloseDisplay(impl->display); impl->display = NULL; return 1; } XSizeHints sizeHints; memset(&sizeHints, 0, sizeof(sizeHints)); if (!view->resizable) { sizeHints.flags = PMinSize|PMaxSize; sizeHints.min_width = view->width; sizeHints.min_height = view->height; sizeHints.max_width = view->width; sizeHints.max_height = view->height; XSetNormalHints(impl->display, impl->win, &sizeHints); } else if (view->min_width > 0 && view->min_height > 0) { sizeHints.flags = PMinSize; sizeHints.min_width = view->min_width; sizeHints.min_height = view->min_height; XSetNormalHints(impl->display, impl->win, &sizeHints); } if (title) { XStoreName(impl->display, impl->win, title); } if (!view->parent) { Atom wmDelete = XInternAtom(impl->display, "WM_DELETE_WINDOW", True); XSetWMProtocols(impl->display, impl->win, &wmDelete, 1); } if (glXIsDirect(impl->display, impl->ctx)) { PUGL_LOG("DRI enabled (to disable, set LIBGL_ALWAYS_INDIRECT=1\n"); } else { PUGL_LOG("No DRI available\n"); } XFree(vi); return PUGL_SUCCESS; }
void initSpace(Window window) { Display *display = dsp; XWindowAttributes xwa; (void) XGetWindowAttributes(dsp, window, &xwa); int n; XVisualInfo *wantVis, vTemplate; int VisualClassWanted=-1; vTemplate.screen = screen; vTemplate.depth = xwa.depth; if (VisualClassWanted == -1) { vTemplate.c_class = DefaultVisual(display, screen)->c_class; } else { vTemplate.c_class = VisualClassWanted; } wantVis = XGetVisualInfo(display, VisualScreenMask | VisualDepthMask | VisualClassMask, &vTemplate, &n); if (VisualClassWanted != -1 && n == 0) { /* Wanted visual not found so use default */ vTemplate.c_class = DefaultVisual(display, screen)->c_class; wantVis = XGetVisualInfo(display, VisualScreenMask | VisualDepthMask | VisualClassMask, &vTemplate, &n); } /* if User asked for color, try that first, then try mono */ /* if User asked for mono. Might fail on 16/24 bit displays, so fall back on color, but keep the mono "look & feel". */ if (!getVisual(wantVis, n)) { if (!getVisual(wantVis, n)) { kdError() << i18n("GL can not render with root visual\n") << endl; return; } } /* PURIFY 3.0a on SunOS4 reports a 104 byte memory leak on the next line each * time that morph3d mode is run in random mode. */ glx_context = glXCreateContext(display, wantVis, 0, True); XFree((char *) wantVis); glXMakeCurrent(display, window, glx_context); glDrawBuffer(GL_FRONT); if (mono) { glIndexi(WhitePixel(display, screen)); glClearIndex(BlackPixel(display, screen)); } retqshape(xwa.width, xwa.height); Init(); }