亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fl_gl_window.cxx

?? flnx 0.17 是做嵌入linux gui 必備工具箱
?? CXX
字號:
//// "$Id: Fl_Gl_Window.cxx,v 1.1.1.1 2003/08/07 21:18:40 jasonk Exp $"//// OpenGL window code for the Fast Light Tool Kit (FLTK).//// Copyright 1998-1999 by Bill Spitzak and others.//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Library General Public// License as published by the Free Software Foundation; either// version 2 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU// Library General Public License for more details.//// You should have received a copy of the GNU Library General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307// USA.//// Please report all bugs and problems to "fltk-bugs@easysw.com".//#include <config.h>#if HAVE_GL#include <FL/Fl.H>#include <FL/x.H>#include <FL/Fl_Gl_Window.H>#include "Fl_Gl_Choice.H"////////////////////////////////////////////////////////////////// The symbol SWAP_TYPE defines what is in the back buffer after doing// a glXSwapBuffers().// The OpenGl documentation says that the contents of the backbuffer// are "undefined" after glXSwapBuffers().  However, if we know what// is in the backbuffers then we can save a good deal of time.  For// this reason you can define some symbols to describe what is left in// the back buffer.// The default of SWAP_SWAP works on an SGI, and will also work (but// is sub-optimal) on machines that should be SWAP_COPY or SWAP_NODAMAGE.// The win32 emulation of OpenGL can use COPY, but some (all?) OpenGL// cards use SWAP.// contents of back buffer after glXSwapBuffers():#define UNDEFINED 0 	// unknown#define SWAP 1		// former front buffer#define COPY 2		// unchanged#define NODAMAGE 3	// unchanged even by X expose() events#ifdef MESA#define SWAP_TYPE NODAMAGE#else#define SWAP_TYPE SWAP#endif//// Windows may need a different color palette...//#if defined(WIN32) && HAVE_GLextern HPALETTE fl_gl_palette;#endif////////////////////////////////////////////////////////////////int Fl_Gl_Window::can_do(int a, const int *b) {#ifdef WIN32  Fl_Gl_Choice *g = Fl_Gl_Choice::find(a,b);/*  Is this necessary? Don't all windows have the same   support for pixel formats?  HWND w = GetDesktopWindow();  HDC dc = GetDC(w);*/  if (!fl_gc) fl_GetDC(0);  int r = ChoosePixelFormat(fl_gc, &g->pfd);  return r != 0;#else  return Fl_Gl_Choice::find(a,b) != 0;#endif}void Fl_Gl_Window::show() {#ifndef WIN32  if (!shown()) {    if (!g) {      g = Fl_Gl_Choice::find(mode_,alist);      if (!g) {Fl::error("Insufficient GL support"); return;}    }    Fl_X::make_xid(this, g->vis, g->colormap);    if (overlay && overlay != this) ((Fl_Gl_Window*)overlay)->show();  }#endif  Fl_Window::show();}void Fl_Gl_Window::invalidate() {  valid(0);#ifndef WIN32  if (overlay) ((Fl_Gl_Window*)overlay)->valid(0);#endif}int Fl_Gl_Window::mode(int m, const int *a) {  if (m == mode_ && a == alist) return 0;  mode_ = m; alist = a;#ifdef WIN32  // destroy context and g:  if (shown()) {hide(); show();}#else  // under X, if the visual changes we must make a new X window (!):  if (shown()) {    Fl_Gl_Choice *g1 = g;    g = Fl_Gl_Choice::find(mode_,alist);    if (!g || g->vis->visualid != g1->vis->visualid || g->d != g1->d) {      hide(); show();    }  }#endif  return 1;}void Fl_Gl_Window::make_current() {  if (!context) {#ifdef WIN32    context = wglCreateContext(fl_private_dc(this, mode_,&g));    if (fl_first_context) wglShareLists(fl_first_context, (GLXContext)context);    else fl_first_context = (GLXContext)context;#else    context = glXCreateContext(fl_display, g->vis, fl_first_context, 1);    if (!fl_first_context) fl_first_context = (GLXContext)context;#endif    valid(0);  }  fl_set_gl_context(this, (GLXContext)context);#if defined(WIN32) && USE_COLORMAP  if (fl_palette) {    fl_GetDC(fl_xid(this));    SelectPalette(fl_gc, fl_palette, FALSE);    RealizePalette(fl_gc);  }#endif // USE_COLORMAP  glDrawBuffer(GL_BACK);}void Fl_Gl_Window::ortho() {  int p[2];  glGetIntegerv(GL_MAX_VIEWPORT_DIMS, p);  glLoadIdentity();  glViewport(w()-p[0], h()-p[1], p[0], p[1]);  glOrtho(w()-p[0], w(), h()-p[1], h(), -1, 1);}void Fl_Gl_Window::swap_buffers() {#ifdef WIN32  SwapBuffers(Fl_X::i(this)->private_dc);#else  glXSwapBuffers(fl_display, fl_xid(this));#endif}#if HAVE_GL_OVERLAY#ifdef WIN32uchar fl_overlay; // changes how fl_color() works#endif#endifvoid Fl_Gl_Window::flush() {  make_current();#if HAVE_GL_OVERLAY#ifdef WIN32  uchar save_valid = valid_;  if (overlay && overlay!= this && damage() == FL_DAMAGE_OVERLAY) goto DRAW_OVERLAY_ONLY;#endif#endif  if (g->d) {#if SWAP_TYPE == NODAMAGE    // don't draw if only overlay damage or expose events:    if ((damage()&~(FL_DAMAGE_OVERLAY|FL_DAMAGE_EXPOSE)) || !valid()) draw();    swap_buffers();#elif SWAP_TYPE == COPY    // don't draw if only the overlay is damaged:    if (damage() != FL_DAMAGE_OVERLAY || !valid()) draw();    swap_buffers();#else // SWAP_TYPE == SWAP || SWAP_TYPE == UNDEFINED    if (overlay == this) { // Use CopyPixels to act like SWAP_TYPE == COPY      // don't draw if only the overlay is damaged:      if (damage1_ || damage() != FL_DAMAGE_OVERLAY || !valid()) draw();      // we use a seperate context for the copy because rasterpos must be 0      // and depth test needs to be off:      static GLXContext ortho_context;      int init = !ortho_context;#ifdef WIN32      if (init) ortho_context = wglCreateContext(Fl_X::i(this)->private_dc);#else      if (init)	ortho_context = glXCreateContext(fl_display,g->vis,fl_first_context,1);#endif      fl_set_gl_context(this, ortho_context);      if (init) {	glDisable(GL_DEPTH_TEST);	glReadBuffer(GL_BACK);	glDrawBuffer(GL_FRONT);      }      glCopyPixels(0,0,w(),h(),GL_COLOR);      make_current(); // set current context back to draw overlay      damage1_ = 0;    } else {#if SWAP_TYPE == SWAP      uchar old_damage = damage();      clear_damage(damage1_|old_damage); draw();      swap_buffers();      damage1_ = old_damage;#else // SWAP_TYPE == UNDEFINED      clear_damage(~0); draw();      swap_buffers();      damage1_ = ~0;#endif    }#endif    if (overlay==this) { // fake overlay in front buffer      glDrawBuffer(GL_FRONT);      draw_overlay();      glDrawBuffer(GL_BACK);      glFlush();    }  } else {	// single-buffered context is simpler:    draw();    if (overlay == this) draw_overlay();    glFlush();  }#if HAVE_GL_OVERLAY#ifdef WIN32  if (overlay && overlay != this) {  DRAW_OVERLAY_ONLY:    valid_ = save_valid;    fl_set_gl_context(this, (GLXContext)overlay);    glDisable(GL_SCISSOR_TEST);    fl_overlay = 1;    glClear(GL_COLOR_BUFFER_BIT);    draw_overlay();    wglSwapLayerBuffers(Fl_X::i(this)->private_dc,WGL_SWAP_OVERLAY1);    fl_overlay = 0;  }#endif#endif  valid(1);}void Fl_Gl_Window::resize(int X,int Y,int W,int H) {  if (W != w() || H != h()) valid(0);  Fl_Window::resize(X,Y,W,H);}void Fl_Gl_Window::hide() {  if (context) {    fl_no_gl_context();#ifdef WIN32    if (context && context != fl_first_context)      wglDeleteContext((GLXContext)context);    g = 0;#else    if (context != fl_first_context)      glXDestroyContext(fl_display, (GLXContext)context);#ifdef GLX_MESA_release_buffers    glXReleaseBuffersMESA(fl_display, fl_xid(this));#endif#endif    context = 0;  }  Fl_Window::hide();}Fl_Gl_Window::~Fl_Gl_Window() {  hide();//  delete overlay; this is done by ~Fl_Group}void Fl_Gl_Window::init() {  end(); // we probably don't want any children  box(FL_NO_BOX);  mode_ = FL_RGB | FL_DEPTH | FL_DOUBLE;  alist = 0;  context = 0;  g = 0;  overlay = 0;  damage1_ = 0;}void Fl_Gl_Window::draw_overlay() {}#endif//// End of "$Id: Fl_Gl_Window.cxx,v 1.1.1.1 2003/08/07 21:18:40 jasonk Exp $".//

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
自拍偷拍国产精品| 亚洲欧美一区二区三区极速播放| 精品国一区二区三区| 国产欧美日韩久久| 亚洲欧美偷拍三级| 日本最新不卡在线| 国产成人精品三级麻豆| 色综合天天综合色综合av | 国产在线播放一区三区四| 高清成人免费视频| 欧美日韩一区二区三区视频| 久久精品国产一区二区三 | 国产米奇在线777精品观看| hitomi一区二区三区精品| 欧美午夜电影网| 国产午夜精品一区二区三区视频| 一区二区三区国产精华| 男女性色大片免费观看一区二区| 成人av网站免费| 91麻豆精品国产91久久久使用方法 | 久久久亚洲精华液精华液精华液| 中文字幕亚洲电影| 美女被吸乳得到大胸91| 成人午夜免费电影| 日韩欧美精品三级| 亚洲一二三专区| 国内外成人在线| 欧美日韩在线不卡| 亚洲精品视频免费看| 欧美一区二区女人| 国产色综合一区| 免费看欧美美女黄的网站| 97se亚洲国产综合自在线| 久久女同性恋中文字幕| 日本亚洲天堂网| 欧美亚洲国产一区在线观看网站| 亚洲第一二三四区| 亚洲一区二区三区在线| 99久久精品一区| 国产目拍亚洲精品99久久精品| 青青草原综合久久大伊人精品优势| 欧美最猛黑人xxxxx猛交| 国产精品高潮呻吟久久| 国产一区二区在线观看免费| 日韩精品一区国产麻豆| 青娱乐精品在线视频| 91精品国产麻豆国产自产在线| 亚洲永久免费av| 在线观看日产精品| 亚洲精品久久久蜜桃| jlzzjlzz欧美大全| 亚洲欧洲综合另类| 国产精品亚洲专一区二区三区| 5月丁香婷婷综合| 日韩av一二三| 日韩精品中文字幕一区| 经典三级一区二区| 国产色一区二区| 国产精品一区免费视频| 国产三级精品视频| 不卡av免费在线观看| 亚洲天堂免费在线观看视频| 欧美影院一区二区三区| 亚洲国产成人91porn| 欧美裸体一区二区三区| 日韩精品高清不卡| 国产一区二区三区四区五区入口| 精品少妇一区二区| 国产在线一区二区| 亚洲欧美综合另类在线卡通| 91美女片黄在线观看91美女| 一区二区三区日韩| 91免费看`日韩一区二区| 亚洲最大成人综合| 欧美一区二区在线观看| 麻豆免费看一区二区三区| 欧美精品一区二区三区在线播放| 国产激情一区二区三区桃花岛亚洲| 国产精品网站在线| 91麻豆国产在线观看| 性欧美疯狂xxxxbbbb| 欧美tickling挠脚心丨vk| av电影在线观看完整版一区二区| 亚洲一区二区成人在线观看| 日韩免费高清电影| 成人午夜私人影院| 天堂影院一区二区| 国产亚洲福利社区一区| 欧洲精品视频在线观看| 久久精品国产77777蜜臀| 中文字幕在线观看不卡视频| 欧美日本国产视频| 国产电影精品久久禁18| 亚洲综合激情另类小说区| 日韩欧美一区二区视频| av一区二区三区黑人| 性做久久久久久久久| 国产精品日韩精品欧美在线| 欧美日韩1234| 在线一区二区视频| 91麻豆精品视频| av中文字幕亚洲| 国产成人精品免费一区二区| 精品一区二区免费视频| 日韩 欧美一区二区三区| 亚洲最大色网站| 一区二区激情视频| 亚洲综合一区二区精品导航| 亚洲欧洲国产日韩| 国产精品二区一区二区aⅴ污介绍| 欧美成人免费网站| 精品免费一区二区三区| 欧美mv日韩mv亚洲| 欧美一级免费大片| 日韩一级二级三级| 日韩欧美成人一区二区| 欧美一区二区三区四区五区| 9191成人精品久久| 欧美一区二区三区在线| 精品嫩草影院久久| 久久人人爽人人爽| 国产网红主播福利一区二区| 26uuu欧美| 欧美极品aⅴ影院| 国产精品久久久久久久第一福利| 国产精品久久久久影院亚瑟| 中文成人综合网| 亚洲人123区| 亚洲午夜在线观看视频在线| 日韩精品亚洲专区| 精品一区二区三区香蕉蜜桃 | 制服丝袜中文字幕亚洲| 欧美日韩免费高清一区色橹橹 | 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 91影院在线免费观看| 欧美最新大片在线看| 欧美一级视频精品观看| 久久蜜桃av一区二区天堂| 国产色爱av资源综合区| 亚洲免费看黄网站| 日韩国产一二三区| 国产自产视频一区二区三区| 成人小视频在线| 欧美亚洲高清一区| 欧美精品一区二区三区很污很色的 | 91麻豆精品国产无毒不卡在线观看| 日韩视频一区二区在线观看| 久久久久97国产精华液好用吗| 亚洲国产岛国毛片在线| 亚洲一区二区综合| 爽爽淫人综合网网站| hitomi一区二区三区精品| 国产亚洲精品中文字幕| 亚洲精品亚洲人成人网在线播放| 亚洲一区二区欧美激情| 黄色成人免费在线| 91视频在线观看| 欧美一级片在线观看| 中文字幕在线不卡一区| 日韩中文字幕91| av一区二区不卡| 日韩视频永久免费| 亚洲欧美一区二区不卡| 久久99精品久久久久久国产越南 | 国产色产综合产在线视频| 亚洲va韩国va欧美va精品| 国产白丝网站精品污在线入口| 欧美自拍偷拍午夜视频| 亚洲国产精品激情在线观看 | 欧美日韩不卡在线| 国产精品免费人成网站| 捆绑紧缚一区二区三区视频| 99国产精品国产精品毛片| 欧美xxx久久| 五月婷婷综合在线| 色婷婷亚洲综合| 国产欧美一区二区三区在线看蜜臀| 日日摸夜夜添夜夜添国产精品| 99精品久久只有精品| 久久久久99精品一区| 麻豆成人久久精品二区三区小说| 欧美日韩综合在线| 亚洲人精品一区| 成人91在线观看| 国产欧美日韩视频在线观看| 男女激情视频一区| 欧美片网站yy| 亚洲成人av中文| 欧美手机在线视频| 亚洲特黄一级片| 成人黄色在线看| 国产情人综合久久777777| 国产精品系列在线观看| 精品成人一区二区| 狠狠久久亚洲欧美| 久久毛片高清国产| 国产精品白丝av| 国产精品三级在线观看| 成人自拍视频在线| 亚洲色图色小说|