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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? cube.cpp

?? wxGTK 是 wxWidgets 的 linux GTK+ (>2.2.3)版本。wxWidgets 是一個(gè)跨平臺(tái)的 GUI 框架
?? CPP
字號(hào):
/////////////////////////////////////////////////////////////////////////////// Name:        cube.cpp// Purpose:     wxGLCanvas demo program// Author:      Julian Smart// Modified by:// Created:     04/01/98// RCS-ID:      $Id: cube.cpp,v 1.20 2005/09/23 12:52:04 MR Exp $// Copyright:   (c) Julian Smart// Licence:     wxWindows licence/////////////////////////////////////////////////////////////////////////////// For compilers that support precompilation, includes "wx.h".#include "wx/wxprec.h"#ifdef __BORLANDC__#pragma hdrstop#endif#ifndef WX_PRECOMP#include "wx/wx.h"#endif#if !wxUSE_GLCANVAS    #error "OpenGL required: set wxUSE_GLCANVAS to 1 and rebuild the library"#endif#include "cube.h"#include "../../sample.xpm"#ifndef __WXMSW__     // for StopWatch, see remark below  #if defined(__WXMAC__) && !defined(__DARWIN__)    #include <utime.h>    #include <unistd.h>  #else    #include <sys/time.h>    #include <sys/unistd.h>  #endif#else#include <sys/timeb.h>#endif#define ID_NEW_WINDOW 10000#define ID_DEF_ROTATE_LEFT_KEY 10001#define ID_DEF_ROTATE_RIGHT_KEY 10002/*----------------------------------------------------------  Control to get a keycode  ----------------------------------------------------------*/class ScanCodeCtrl : public wxTextCtrl{public:    ScanCodeCtrl( wxWindow* parent, wxWindowID id, int code,        const wxPoint& pos, const wxSize& size );    void OnChar( wxKeyEvent& WXUNUSED(event) )    {        // Do nothing    }    void OnKeyDown(wxKeyEvent& event);private:    // Any class wishing to process wxWidgets events must use this macro    DECLARE_EVENT_TABLE()};BEGIN_EVENT_TABLE( ScanCodeCtrl, wxTextCtrl )    EVT_CHAR( ScanCodeCtrl::OnChar )    EVT_KEY_DOWN( ScanCodeCtrl::OnKeyDown )END_EVENT_TABLE()ScanCodeCtrl::ScanCodeCtrl( wxWindow* parent, wxWindowID id, int code,    const wxPoint& pos, const wxSize& size )    : wxTextCtrl( parent, id, wxEmptyString, pos, size ){    SetValue( wxString::Format(wxT("0x%04x"), code) );}void ScanCodeCtrl::OnKeyDown( wxKeyEvent& event ){    SetValue( wxString::Format(wxT("0x%04x"), event.GetKeyCode()) );}/*------------------------------------------------------------------ Dialog for defining a keypress-------------------------------------------------------------------*/class ScanCodeDialog : public wxDialog{public:    ScanCodeDialog( wxWindow* parent, wxWindowID id, const int code,        const wxString &descr, const wxString& title );    int GetValue();private:    ScanCodeCtrl       *m_ScanCode;    wxTextCtrl         *m_Description;};ScanCodeDialog::ScanCodeDialog( wxWindow* parent, wxWindowID id,    const int code, const wxString &descr, const wxString& title )    : wxDialog( parent, id, title, wxDefaultPosition, wxSize(96*2,76*2) ){    new wxStaticText( this, wxID_ANY, _T("Scancode"), wxPoint(4*2,3*2),        wxSize(31*2,12*2) );    m_ScanCode = new ScanCodeCtrl( this, wxID_ANY, code, wxPoint(37*2,6*2),        wxSize(53*2,14*2) );    new wxStaticText( this, wxID_ANY, _T("Description"), wxPoint(4*2,24*2),        wxSize(32*2,12*2) );    m_Description = new wxTextCtrl( this, wxID_ANY, descr, wxPoint(37*2,27*2),        wxSize(53*2,14*2) );    new wxButton( this, wxID_OK, _T("Ok"), wxPoint(20*2,50*2), wxSize(20*2,13*2) );    new wxButton( this, wxID_CANCEL, _T("Cancel"), wxPoint(44*2,50*2),        wxSize(25*2,13*2) );}int ScanCodeDialog::GetValue(){    int code;    wxString buf = m_ScanCode->GetValue();    wxSscanf( buf.c_str(), _T("%i"), &code );    return code;}/*----------------------------------------------------------------------  Utility function to get the elapsed time (in msec) since a given point  in time (in sec)  (because current version of wxGetElapsedTime doesn磘  works right with glibc-2.1 and linux, at least for me)-----------------------------------------------------------------------*/unsigned long StopWatch( unsigned long *sec_base ){  unsigned long secs,msec;#if defined(__WXMSW__)  struct timeb tb;  ftime( &tb );  secs = tb.time;  msec = tb.millitm;#elif defined(__WXMAC__) && !defined(__DARWIN__)  wxLongLong tl = wxGetLocalTimeMillis();  secs = (unsigned long) (tl.GetValue() / 1000);  msec = (unsigned long) (tl.GetValue() - secs*1000);#else  // think every unice has gettimeofday  struct timeval tv;  gettimeofday( &tv, (struct timezone *)NULL );  secs = tv.tv_sec;  msec = tv.tv_usec/1000;#endif  if( *sec_base == 0 )    *sec_base = secs;  return( (secs-*sec_base)*1000 + msec );}/*----------------------------------------------------------------  Implementation of Test-GLCanvas-----------------------------------------------------------------*/BEGIN_EVENT_TABLE(TestGLCanvas, wxGLCanvas)    EVT_SIZE(TestGLCanvas::OnSize)    EVT_PAINT(TestGLCanvas::OnPaint)    EVT_ERASE_BACKGROUND(TestGLCanvas::OnEraseBackground)    EVT_KEY_DOWN( TestGLCanvas::OnKeyDown )    EVT_KEY_UP( TestGLCanvas::OnKeyUp )    EVT_ENTER_WINDOW( TestGLCanvas::OnEnterWindow )END_EVENT_TABLE()unsigned long  TestGLCanvas::m_secbase = 0;int            TestGLCanvas::m_TimeInitialized = 0;unsigned long  TestGLCanvas::m_xsynct;unsigned long  TestGLCanvas::m_gsynct;TestGLCanvas::TestGLCanvas(wxWindow *parent, wxWindowID id,    const wxPoint& pos, const wxSize& size, long style, const wxString& name)    : wxGLCanvas(parent, (wxGLCanvas*) NULL, id, pos, size, style|wxFULL_REPAINT_ON_RESIZE , name ){    m_init = false;    m_gllist = 0;    m_rleft = WXK_LEFT;    m_rright = WXK_RIGHT;}TestGLCanvas::TestGLCanvas(wxWindow *parent, const TestGLCanvas *other,    wxWindowID id, const wxPoint& pos, const wxSize& size, long style,    const wxString& name )    : wxGLCanvas(parent, other->GetContext(), id, pos, size, style|wxFULL_REPAINT_ON_RESIZE , name){    m_init = false;    m_gllist = other->m_gllist; // share display list    m_rleft = WXK_LEFT;    m_rright = WXK_RIGHT;}TestGLCanvas::~TestGLCanvas(){}void TestGLCanvas::Render(){    wxPaintDC dc(this);#ifndef __WXMOTIF__    if (!GetContext()) return;#endif    SetCurrent();    // Init OpenGL once, but after SetCurrent    if (!m_init)    {        InitGL();        m_init = true;    }    glMatrixMode(GL_PROJECTION);    glLoadIdentity();    glFrustum(-0.5f, 0.5f, -0.5f, 0.5f, 1.0f, 3.0f);    glMatrixMode(GL_MODELVIEW);    /* clear color and depth buffers */    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    if( m_gllist == 0 )    {        m_gllist = glGenLists( 1 );        glNewList( m_gllist, GL_COMPILE_AND_EXECUTE );        /* draw six faces of a cube */        glBegin(GL_QUADS);        glNormal3f( 0.0f, 0.0f, 1.0f);        glVertex3f( 0.5f, 0.5f, 0.5f); glVertex3f(-0.5f, 0.5f, 0.5f);        glVertex3f(-0.5f,-0.5f, 0.5f); glVertex3f( 0.5f,-0.5f, 0.5f);        glNormal3f( 0.0f, 0.0f,-1.0f);        glVertex3f(-0.5f,-0.5f,-0.5f); glVertex3f(-0.5f, 0.5f,-0.5f);        glVertex3f( 0.5f, 0.5f,-0.5f); glVertex3f( 0.5f,-0.5f,-0.5f);        glNormal3f( 0.0f, 1.0f, 0.0f);        glVertex3f( 0.5f, 0.5f, 0.5f); glVertex3f( 0.5f, 0.5f,-0.5f);        glVertex3f(-0.5f, 0.5f,-0.5f); glVertex3f(-0.5f, 0.5f, 0.5f);        glNormal3f( 0.0f,-1.0f, 0.0f);        glVertex3f(-0.5f,-0.5f,-0.5f); glVertex3f( 0.5f,-0.5f,-0.5f);        glVertex3f( 0.5f,-0.5f, 0.5f); glVertex3f(-0.5f,-0.5f, 0.5f);        glNormal3f( 1.0f, 0.0f, 0.0f);        glVertex3f( 0.5f, 0.5f, 0.5f); glVertex3f( 0.5f,-0.5f, 0.5f);        glVertex3f( 0.5f,-0.5f,-0.5f); glVertex3f( 0.5f, 0.5f,-0.5f);        glNormal3f(-1.0f, 0.0f, 0.0f);        glVertex3f(-0.5f,-0.5f,-0.5f); glVertex3f(-0.5f,-0.5f, 0.5f);        glVertex3f(-0.5f, 0.5f, 0.5f); glVertex3f(-0.5f, 0.5f,-0.5f);        glEnd();        glEndList();    }    else    {        glCallList(m_gllist);    }    glFlush();    SwapBuffers();}void TestGLCanvas::OnEnterWindow( wxMouseEvent& WXUNUSED(event) ){    SetFocus();}void TestGLCanvas::OnPaint( wxPaintEvent& WXUNUSED(event) ){    Render();}void TestGLCanvas::OnSize(wxSizeEvent& event){    // this is also necessary to update the context on some platforms    wxGLCanvas::OnSize(event);    // set GL viewport (not called by wxGLCanvas::OnSize on all platforms...)    int w, h;    GetClientSize(&w, &h);#ifndef __WXMOTIF__    if (GetContext())#endif    {        SetCurrent();        glViewport(0, 0, (GLint) w, (GLint) h);    }}void TestGLCanvas::OnEraseBackground(wxEraseEvent& WXUNUSED(event)){  // Do nothing, to avoid flashing.}void TestGLCanvas::InitGL(){    SetCurrent();    /* set viewing projection */    glMatrixMode(GL_PROJECTION);    glFrustum(-0.5f, 0.5f, -0.5f, 0.5f, 1.0f, 3.0f);    /* position viewer */    glMatrixMode(GL_MODELVIEW);    glTranslatef(0.0f, 0.0f, -2.0f);    /* position object */    glRotatef(30.0f, 1.0f, 0.0f, 0.0f);    glRotatef(30.0f, 0.0f, 1.0f, 0.0f);    glEnable(GL_DEPTH_TEST);    glEnable(GL_LIGHTING);    glEnable(GL_LIGHT0);}GLfloat TestGLCanvas::CalcRotateSpeed( unsigned long acceltime ){  GLfloat t,v;  t = ((GLfloat)acceltime) / 1000.0f;  if( t < 0.5f )    v = t;  else if( t < 1.0f )    v = t * (2.0f - t);  else    v = 0.75f;  return(v);}GLfloat TestGLCanvas::CalcRotateAngle( unsigned long lasttime,                                  unsigned long acceltime ){    GLfloat t,s1,s2;    t = ((GLfloat)(acceltime - lasttime)) / 1000.0f;    s1 = CalcRotateSpeed( lasttime );    s2 = CalcRotateSpeed( acceltime );    return( t * (s1 + s2) * 135.0f );}void TestGLCanvas::Action( long code, unsigned long lasttime,                           unsigned long acceltime ){    GLfloat angle = CalcRotateAngle( lasttime, acceltime );    if (code == m_rleft)        Rotate( angle );    else if (code == m_rright)            Rotate( -angle );}void TestGLCanvas::OnKeyDown( wxKeyEvent& event ){    long evkey = event.GetKeyCode();    if (evkey == 0) return;    if (!m_TimeInitialized)    {        m_TimeInitialized = 1;        m_xsynct = event.GetTimestamp();        m_gsynct = StopWatch(&m_secbase);        m_Key = evkey;        m_StartTime = 0;        m_LastTime = 0;        m_LastRedraw = 0;    }    unsigned long currTime = event.GetTimestamp() - m_xsynct;    if (evkey != m_Key)    {        m_Key = evkey;        m_LastRedraw = m_StartTime = m_LastTime = currTime;    }    if (currTime >= m_LastRedraw)      // Redraw:    {        Action( m_Key, m_LastTime-m_StartTime, currTime-m_StartTime );#if defined(__WXMAC__) && !defined(__DARWIN__)        m_LastRedraw = currTime;    // StopWatch() doesn't work on Mac...#else        m_LastRedraw = StopWatch(&m_secbase) - m_gsynct;#endif        m_LastTime = currTime;    }    event.Skip();}void TestGLCanvas::OnKeyUp( wxKeyEvent& event ){    m_Key = 0;    m_StartTime = 0;    m_LastTime = 0;    m_LastRedraw = 0;    event.Skip();}void TestGLCanvas::Rotate( GLfloat deg ){    SetCurrent();    glMatrixMode(GL_MODELVIEW);    glRotatef((GLfloat)deg, 0.0f, 0.0f, 1.0f);    Refresh(false);}/* -----------------------------------------------------------------------  Main Window-------------------------------------------------------------------------*/BEGIN_EVENT_TABLE(MyFrame, wxFrame)    EVT_MENU(wxID_EXIT, MyFrame::OnExit)    EVT_MENU( ID_NEW_WINDOW, MyFrame::OnNewWindow)    EVT_MENU( ID_DEF_ROTATE_LEFT_KEY, MyFrame::OnDefRotateLeftKey)    EVT_MENU( ID_DEF_ROTATE_RIGHT_KEY, MyFrame::OnDefRotateRightKey)END_EVENT_TABLE()// My frame constructorMyFrame::MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos,    const wxSize& size, long style)    : wxFrame(parent, wxID_ANY, title, pos, size, style){    m_canvas = NULL;    SetIcon(wxIcon(sample_xpm));}// Intercept menu commandsvoid MyFrame::OnExit( wxCommandEvent& WXUNUSED(event) ){    // true is to force the frame to close    Close(true);}/*static*/ MyFrame *MyFrame::Create(MyFrame *parentFrame, bool isCloneWindow){    wxString str = wxT("wxWidgets OpenGL Cube Sample");    if (isCloneWindow) str += wxT(" - Clone");    MyFrame *frame = new MyFrame(NULL, str, wxDefaultPosition,        wxSize(400, 300));    // Make a menubar    wxMenu *winMenu = new wxMenu;    winMenu->Append(wxID_EXIT, _T("&Close"));    winMenu->Append(ID_NEW_WINDOW, _T("&New") );    wxMenuBar *menuBar = new wxMenuBar;    menuBar->Append(winMenu, _T("&Window"));    winMenu = new wxMenu;    winMenu->Append(ID_DEF_ROTATE_LEFT_KEY, _T("Rotate &left"));    winMenu->Append(ID_DEF_ROTATE_RIGHT_KEY, _T("Rotate &right"));    menuBar->Append(winMenu, _T("&Key"));    frame->SetMenuBar(menuBar);    if (parentFrame)    {        frame->m_canvas = new TestGLCanvas( frame, parentFrame->m_canvas,            wxID_ANY, wxDefaultPosition, wxDefaultSize );    }    else    {        frame->m_canvas = new TestGLCanvas(frame, wxID_ANY,            wxDefaultPosition, wxDefaultSize);    }    // Show the frame    frame->Show(true);    return frame;}void MyFrame::OnNewWindow( wxCommandEvent& WXUNUSED(event) ){    (void) Create(this, true);}void MyFrame::OnDefRotateLeftKey( wxCommandEvent& WXUNUSED(event) ){    ScanCodeDialog dial( this, wxID_ANY, m_canvas->m_rleft,        wxString(_T("Left")), _T("Define key") );    int result = dial.ShowModal();    if( result == wxID_OK )        m_canvas->m_rleft = dial.GetValue();}void MyFrame::OnDefRotateRightKey( wxCommandEvent& WXUNUSED(event) ){    ScanCodeDialog dial( this, wxID_ANY, m_canvas->m_rright,        wxString(_T("Right")), _T("Define key") );    int result = dial.ShowModal();    if( result == wxID_OK )        m_canvas->m_rright = dial.GetValue();}/*------------------------------------------------------------------  Application object ( equivalent to main() )------------------------------------------------------------------ */IMPLEMENT_APP(MyApp)bool MyApp::OnInit(){    // Create the main frame window    (void) MyFrame::Create(NULL);    return true;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩精品一区二区三区在线| 国产精品亚洲第一区在线暖暖韩国 | 亚洲一区在线播放| 国产精品九色蝌蚪自拍| 国产精品久久久久一区二区三区 | 中文字幕精品在线不卡| 久久嫩草精品久久久精品一| 欧美精品一区在线观看| 久久久精品黄色| 欧美国产日韩亚洲一区| 亚洲欧洲一区二区三区| 亚洲精品第一国产综合野| 亚洲一区二区视频在线| 亚洲aaa精品| 青青草伊人久久| 久久成人久久鬼色| 国产一区在线看| 成人av资源下载| 色综合激情五月| 欧美日韩国产首页| 日韩欧美成人一区| 国产日韩v精品一区二区| 亚洲国产成人一区二区三区| 亚洲欧洲中文日韩久久av乱码| 一区二区三区久久久| 日本亚洲天堂网| 国产传媒日韩欧美成人| 91麻豆免费看| 制服丝袜激情欧洲亚洲| 精品国产成人在线影院| 国产精品久久久久桃色tv| 亚洲午夜av在线| 精品在线播放免费| av在线播放成人| 欧美日韩在线电影| 精品国产乱码久久| 亚洲免费在线观看| 蜜桃av噜噜一区| 北条麻妃国产九九精品视频| 欧美偷拍一区二区| 久久影院电视剧免费观看| 亚洲色大成网站www久久九九| 日本不卡123| www.99精品| 日韩午夜电影在线观看| 国产精品午夜在线| 午夜电影一区二区| 成人丝袜视频网| 制服丝袜日韩国产| 日韩伦理电影网| 黑人巨大精品欧美黑白配亚洲| 成人午夜伦理影院| 欧美精品欧美精品系列| 粉嫩aⅴ一区二区三区四区 | 成人av综合一区| 4438亚洲最大| 最新欧美精品一区二区三区| 首页综合国产亚洲丝袜| 成人av电影免费在线播放| 9191精品国产综合久久久久久| 国产精品欧美久久久久无广告 | 8x福利精品第一导航| 国产精品久久网站| 久久激情五月婷婷| 91搞黄在线观看| 午夜久久电影网| 精品视频在线视频| 在线视频国内自拍亚洲视频| 久久免费看少妇高潮| 一区二区三区欧美在线观看| 91国产免费看| 欧美一区二区啪啪| 国产精品久线在线观看| 美女尤物国产一区| 一本一道久久a久久精品 | 亚洲激情六月丁香| 久久99久久精品欧美| 欧美三级三级三级| 亚洲免费看黄网站| av一区二区不卡| 国产日韩精品一区二区三区| 久久99在线观看| 91精品国产欧美一区二区成人| 亚洲免费av高清| 91碰在线视频| 亚洲视频电影在线| www.久久精品| 中文字幕一区日韩精品欧美| 国产盗摄一区二区三区| 亚洲精品在线一区二区| 青青草原综合久久大伊人精品优势| 欧美日韩一区三区| 亚洲午夜在线电影| 成人激情校园春色| 日韩精品自拍偷拍| 蜜臀a∨国产成人精品| 51精品国自产在线| 日日夜夜精品视频免费| 精品视频色一区| 亚洲午夜电影网| 欧美老年两性高潮| 日韩专区一卡二卡| 欧美一区二区三区成人| 日本中文字幕不卡| 日韩无一区二区| 韩国精品在线观看| 久久精品人人做人人爽人人| 国产精品一区二区久激情瑜伽| 国产视频一区二区在线| 国产成人免费xxxxxxxx| 中文字幕av一区 二区| 成人免费精品视频| 亚洲乱码精品一二三四区日韩在线| 99久久婷婷国产精品综合| 亚洲卡通动漫在线| 欧美亚洲自拍偷拍| 亚洲123区在线观看| 日韩一区二区三区视频在线| 麻豆精品精品国产自在97香蕉| 精品国产自在久精品国产| 国产一区二区三区久久久| 国产欧美日韩综合精品一区二区| 成人免费视频免费观看| 亚洲精品视频一区二区| 欧美亚洲综合另类| 一区二区三区在线不卡| 99综合影院在线| 亚洲美女淫视频| 欧美日韩免费电影| 日本亚洲欧美天堂免费| 欧美刺激午夜性久久久久久久| 国产一区二三区| 中文字幕一区视频| 欧美美女一区二区在线观看| 毛片基地黄久久久久久天堂| 中文字幕第一区综合| 欧美日韩在线播| 狠狠狠色丁香婷婷综合久久五月| 中文字幕亚洲视频| 欧美伦理影视网| 国产白丝网站精品污在线入口| 亚洲精品高清视频在线观看| 日韩亚洲欧美一区二区三区| 成人av资源站| 日本视频中文字幕一区二区三区| 国产三区在线成人av| 色诱视频网站一区| 久久99国产精品久久99果冻传媒| 国产精品理论在线观看| 69久久99精品久久久久婷婷| 丰满少妇在线播放bd日韩电影| 成人黄色电影在线| 日韩一区欧美小说| 欧美一区中文字幕| 成人av电影在线网| 麻豆精品精品国产自在97香蕉| 最新国产精品久久精品| 欧美一区二区三区小说| 91一区二区三区在线观看| 精品一区二区在线免费观看| 亚洲精品高清在线| 久久精品一二三| 欧美精品丝袜中出| 99精品偷自拍| 国产精品911| 日韩av中文字幕一区二区| 国产精品国产自产拍高清av王其| 日韩一区二区三区电影在线观看 | 国产一区二区电影| 亚洲chinese男男1069| 国产精品视频观看| 精品成人一区二区三区| 欧美日韩激情在线| av色综合久久天堂av综合| 狠狠狠色丁香婷婷综合久久五月| 婷婷亚洲久悠悠色悠在线播放| 国产精品久久久久久久久快鸭 | 精品精品国产高清一毛片一天堂| 欧美性色欧美a在线播放| 国产成人欧美日韩在线电影| 老司机精品视频导航| 性欧美疯狂xxxxbbbb| 一区二区三区国产豹纹内裤在线| 亚洲国产成人午夜在线一区| 久久久久亚洲蜜桃| 日韩欧美国产午夜精品| 欧美影片第一页| 在线看日韩精品电影| www.欧美色图| thepron国产精品| 国产福利精品导航| 国产一区二区三区免费| 蜜桃久久av一区| 蜜臀av性久久久久蜜臀aⅴ流畅| 天天色天天操综合| 偷窥少妇高潮呻吟av久久免费| 亚洲国产成人av网| 五月综合激情婷婷六月色窝| 亚洲美女视频一区| 亚洲卡通动漫在线|