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

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

?? example5.cpp

?? c++源程序
?? CPP
字號:
/****************************************************************************

  example5.cpp

  A GLUI program demonstrating subwindows, rotation controls,
	translation controls, and listboxes

  -----------------------------------------------------------------------
	   
  7/10/98 Paul Rademacher (rademach@cs.unc.edu)

****************************************************************************/

#include <string.h>
#include <GL/glut.h>
#include "glui.h"

float xy_aspect;
int   last_x, last_y;
float rotationX = 0.0, rotationY = 0.0;

/** These are the live variables passed into GLUI ***/
int   wireframe = 0;
int   obj_type = 1;
int   segments = 8;
int   segments2 = 8;
int   light0_enabled = 1;
int   light1_enabled = 1;
float light0_intensity = 1.0;
float light1_intensity = .4;
int   main_window;
float scale = 1.0;
int   show_sphere=1;
int   show_torus=1;
int   show_axes = 1;
int   show_text = 1;
float sphere_rotate[16] = { 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 };
float torus_rotate[16] = { 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 };
float view_rotate[16] = { 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 };
float obj_pos[] = { 0.0, 0.0, 0.0 };
char *string_list[] = { "Hello World!", "Foo", "Testing...", "Bounding box: on" };
int   curr_string = 0;

/** Pointers to the windows and some of the controls we'll create **/
GLUI *glui, *glui2;
GLUI_Checkbox   *checkbox;
GLUI_Spinner    *spinner, *light0_spinner, *light1_spinner;
GLUI_RadioGroup *radio;
GLUI_Panel      *obj_panel;

/********** User IDs for callbacks ********/
#define LIGHT0_ENABLED_ID    200
#define LIGHT1_ENABLED_ID    201
#define LIGHT0_INTENSITY_ID  250
#define LIGHT1_INTENSITY_ID  251
#define ENABLE_ID            300
#define DISABLE_ID           301
#define SHOW_ID              302
#define HIDE_ID              303


/********** Miscellaneous global variables **********/

GLfloat light0_ambient[] =  {0.1f, 0.1f, 0.3f, 1.0f};
GLfloat light0_diffuse[] =  {.6f, .6f, 1.0f, 1.0f};
GLfloat light0_position[] = {.5f, .5f, 1.0f, 0.0f};

GLfloat light1_ambient[] =  {0.1f, 0.1f, 0.3f, 1.0f};
GLfloat light1_diffuse[] =  {.9f, .6f, 0.0f, 1.0f};
GLfloat light1_position[] = {-1.0f, -1.0f, 1.0f, 0.0f};

GLfloat lights_rotation[16] = {1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 };

/**************************************** control_cb() *******************/
/* GLUI control callback                                                 */

void control_cb( int control )
{
  if ( control == LIGHT0_ENABLED_ID ) {
    if ( light0_enabled ) {
      glEnable( GL_LIGHT0 );
      light0_spinner->enable();
    }
    else {
      glDisable( GL_LIGHT0 ); 
      light0_spinner->disable();
    }
  }
  else if ( control == LIGHT1_ENABLED_ID ) {
    if ( light1_enabled ) {
      glEnable( GL_LIGHT1 );
      light1_spinner->enable();
    }
    else {
      glDisable( GL_LIGHT1 ); 
      light1_spinner->disable();
    }
  }
  else if ( control == LIGHT0_INTENSITY_ID ) {
    float v[] = { light0_diffuse[0],  light0_diffuse[1],
		  light0_diffuse[2],  light0_diffuse[3] };
    
    v[0] *= light0_intensity;
    v[1] *= light0_intensity;
    v[2] *= light0_intensity;

    glLightfv(GL_LIGHT0, GL_DIFFUSE, v );
  }
  else if ( control == LIGHT1_INTENSITY_ID ) {
    float v[] = { light1_diffuse[0],  light1_diffuse[1],
		  light1_diffuse[2],  light1_diffuse[3] };
    
    v[0] *= light1_intensity;
    v[1] *= light1_intensity;
    v[2] *= light1_intensity;

    glLightfv(GL_LIGHT1, GL_DIFFUSE, v );
  }
  else if ( control == ENABLE_ID )
  {
    glui2->enable();
  }
  else if ( control == DISABLE_ID )
  {
    glui2->disable();
  }
  else if ( control == SHOW_ID )
  {
    glui2->show();
  }
  else if ( control == HIDE_ID )
  {
    glui2->hide();
  }
}

/**************************************** myGlutKeyboard() **********/

void myGlutKeyboard(unsigned char Key, int x, int y)
{
  switch(Key)
  {
  case 27: 
  case 'q':
    exit(0);
    break;
  };
  
  glutPostRedisplay();
}


/***************************************** myGlutMenu() ***********/

void myGlutMenu( int value )
{
  myGlutKeyboard( value, 0, 0 );
}


/***************************************** myGlutIdle() ***********/

void myGlutIdle( void )
{
  /* According to the GLUT specification, the current window is 
     undefined during an idle callback.  So we need to explicitly change
     it if necessary */
  if ( glutGetWindow() != main_window ) 
    glutSetWindow(main_window);  

  /*  GLUI_Master.sync_live_all();  -- not needed - nothing to sync in this
                                       application  */

  glutPostRedisplay();
}

/***************************************** myGlutMouse() **********/

void myGlutMouse(int button, int button_state, int x, int y )
{
}


/***************************************** myGlutMotion() **********/

void myGlutMotion(int x, int y )
{
  glutPostRedisplay(); 
}

/**************************************** myGlutReshape() *************/

void myGlutReshape( int x, int y )
{
  int tx, ty, tw, th;
  GLUI_Master.get_viewport_area( &tx, &ty, &tw, &th );
  glViewport( tx, ty, tw, th );

  xy_aspect = (float)tw / (float)th;

  glutPostRedisplay();
}


/************************************************** draw_axes() **********/
/* Disables lighting, then draws RGB axes                                */

void draw_axes( float scale )
{
  glDisable( GL_LIGHTING );

  glPushMatrix();
  glScalef( scale, scale, scale );

  glBegin( GL_LINES );
 
  glColor3f( 1.0, 0.0, 0.0 );
  glVertex3f( .8f, 0.05f, 0.0 );  glVertex3f( 1.0, 0.25f, 0.0 ); /* Letter X */
  glVertex3f( 0.8f, .25f, 0.0 );  glVertex3f( 1.0, 0.05f, 0.0 );
  glVertex3f( 0.0, 0.0, 0.0 );  glVertex3f( 1.0, 0.0, 0.0 ); /* X axis      */

  glColor3f( 0.0, 1.0, 0.0 );
  glVertex3f( 0.0, 0.0, 0.0 );  glVertex3f( 0.0, 1.0, 0.0 ); /* Y axis      */

  glColor3f( 0.0, 0.0, 1.0 );
  glVertex3f( 0.0, 0.0, 0.0 );  glVertex3f( 0.0, 0.0, 1.0 ); /* Z axis    */
  glEnd();

  glPopMatrix();

  glEnable( GL_LIGHTING );
}


/***************************************** myGlutDisplay() *****************/

void myGlutDisplay( void )
{
  glClearColor( .9f, .9f, .9f, 1.0f );
  glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

  glMatrixMode( GL_PROJECTION );
  glLoadIdentity();
  glFrustum( -xy_aspect*.04, xy_aspect*.04, -.04, .04, .1, 15.0 );

  glMatrixMode( GL_MODELVIEW );

  glLoadIdentity();
  glMultMatrixf( lights_rotation );
  glLightfv(GL_LIGHT0, GL_POSITION, light0_position);
  
  glLoadIdentity();
  glTranslatef( 0.0, 0.0, -2.6f );
  glTranslatef( obj_pos[0], obj_pos[1], -obj_pos[2] ); 
  glMultMatrixf( view_rotate );

  glScalef( scale, scale, scale );

  /*** Now we render object, using the variables 'obj_type', 'segments', and
    'wireframe'.  These are _live_ variables, which are transparently 
    updated by GLUI ***/

  glPushMatrix();
  glTranslatef( -.5, 0.0, 0.0 );
  glMultMatrixf( sphere_rotate );
  if ( wireframe && show_sphere)
    glutWireSphere( .4, segments, segments );
  else if ( show_sphere )
    glutSolidSphere( .4, segments, segments );
  if ( show_axes )
    draw_axes(.52f);
  glPopMatrix();

  glPushMatrix();
  glTranslatef( .5, 0.0, 0.0 );
  glMultMatrixf( torus_rotate );
  if ( wireframe && show_torus )
    glutWireTorus( .15,.3,16,segments );
  else if ( show_torus )
    glutSolidTorus( .15,.3,16,segments );
  if ( show_axes )
    draw_axes(.52f);
  glPopMatrix();

  if ( show_text ) 
  {
    glDisable( GL_LIGHTING );  /* Disable lighting while we render text */
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    gluOrtho2D( 0.0, 100.0, 0.0, 100.0  );
    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();
    glColor3ub( 0, 0, 0 );
    glRasterPos2i( 10, 10 );

    /*  printf( "text: %s\n", text );              */

    /*** Render the live character array 'text' ***/
    int i;
    for( i=0; i<(int)strlen( string_list[curr_string] ); i++ )
      glutBitmapCharacter( GLUT_BITMAP_HELVETICA_18, string_list[curr_string][i] );
  }

  glEnable( GL_LIGHTING );


  glutSwapBuffers(); 
}


/**************************************** main() ********************/

void main(int argc, char* argv[])
{
  /****************************************/
  /*   Initialize GLUT and create window  */
  /****************************************/

  glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
  glutInitWindowPosition( 50, 50 );
  glutInitWindowSize( 800, 600 );
 
  main_window = glutCreateWindow( "GLUI Example 5" );
  glutDisplayFunc( myGlutDisplay );
  GLUI_Master.set_glutReshapeFunc( myGlutReshape );  
  GLUI_Master.set_glutKeyboardFunc( myGlutKeyboard );
  GLUI_Master.set_glutSpecialFunc( NULL );
  GLUI_Master.set_glutMouseFunc( myGlutMouse );
  glutMotionFunc( myGlutMotion );

  /****************************************/
  /*       Set up OpenGL lights           */
  /****************************************/

  glEnable(GL_LIGHTING);
  glEnable( GL_NORMALIZE );

  glEnable(GL_LIGHT0);
  glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient);
  glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse);
  glLightfv(GL_LIGHT0, GL_POSITION, light0_position);

  glEnable(GL_LIGHT1);
  glLightfv(GL_LIGHT1, GL_AMBIENT, light1_ambient);
  glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse);
  glLightfv(GL_LIGHT1, GL_POSITION, light1_position);

  /****************************************/
  /*          Enable z-buferring          */
  /****************************************/

  glEnable(GL_DEPTH_TEST);

  /****************************************/
  /*         Here's the GLUI code         */
  /****************************************/

  printf( "GLUI version: %3.2f\n", GLUI_Master.get_version() );

  /*** Create the side subwindow ***/
  glui = GLUI_Master.create_glui_subwindow( main_window, 
					    GLUI_SUBWINDOW_RIGHT );

  obj_panel = glui->add_rollout( "Properties", false );

  /***** Control for object params *****/

  checkbox = 
    glui->add_checkbox_to_panel( obj_panel, "Wireframe", &wireframe, 1, 
				 control_cb );
  spinner  = glui->add_spinner_to_panel( obj_panel, "Segments:",
					 GLUI_SPINNER_INT, &segments);
  spinner->set_int_limits( 3, 60 );
  spinner->set_alignment( GLUI_ALIGN_RIGHT );

  GLUI_Spinner *scale_spinner = 
    glui->add_spinner_to_panel( obj_panel, "Scale:",
				GLUI_SPINNER_FLOAT, &scale);
  scale_spinner->set_float_limits( .2f, 4.0 );
  scale_spinner->set_alignment( GLUI_ALIGN_RIGHT );


  /******** Add some controls for lights ********/

  GLUI_Rollout *roll_lights = glui->add_rollout( "Lights", false );

  GLUI_Panel *light0 = glui->add_panel_to_panel( roll_lights, "Light 1" );
  GLUI_Panel *light1 = glui->add_panel_to_panel( roll_lights, "Light 2" );

  glui->add_checkbox_to_panel( light0, "Enabled", &light0_enabled,
			       LIGHT0_ENABLED_ID, control_cb );
  light0_spinner = 
    glui->add_spinner_to_panel( light0, "Intensity:", GLUI_SPINNER_FLOAT,
				&light0_intensity, LIGHT0_INTENSITY_ID,
				control_cb );
  light0_spinner->set_float_limits( 0.0, 1.0 );

  glui->add_checkbox_to_panel( light1, "Enabled", &light1_enabled,
			       LIGHT1_ENABLED_ID, control_cb );
  light1_spinner = 
    glui->add_spinner_to_panel( light1, "Intensity:", GLUI_SPINNER_FLOAT,
				&light1_intensity, LIGHT1_INTENSITY_ID,
				control_cb );
  light1_spinner->set_float_limits( 0.0, 1.0 );


  /*** Add another rollout ***/
  GLUI_Rollout *options = glui->add_rollout( "Options", true );
  glui->add_checkbox_to_panel( options, "Draw sphere", &show_sphere );
  glui->add_checkbox_to_panel( options, "Draw torus", &show_torus );
  glui->add_checkbox_to_panel( options, "Draw axes", &show_axes );
  glui->add_checkbox_to_panel( options, "Draw text", &show_text );


  /**** Add listbox ****/
  glui->add_statictext( "" );
  GLUI_Listbox *list = glui->add_listbox( "Text:", &curr_string );
  int i;
  for( i=0; i<4; i++ )
    list->add_item( i, string_list[i] );

  glui->add_statictext( "" );


  /*** Disable/Enable buttons ***/
  glui->add_button( "Disable movement", DISABLE_ID, control_cb );
  glui->add_button( "Enable movement", ENABLE_ID, control_cb );
  glui->add_button( "Hide", HIDE_ID, control_cb );
  glui->add_button( "Show", SHOW_ID, control_cb );

  glui->add_statictext( "" );

  /****** A 'quit' button *****/
  glui->add_button( "Quit", 0,(GLUI_Update_CB)exit );


  /**** Link windows to GLUI, and register idle callback ******/
  
  glui->set_main_gfx_window( main_window );


  /*** Create the bottom subwindow ***/
  glui2 = GLUI_Master.create_glui_subwindow( main_window, 
					     GLUI_SUBWINDOW_BOTTOM );
  glui2->set_main_gfx_window( main_window );

  GLUI_Rotation *view_rot = glui2->add_rotation( "Objects", view_rotate );
  view_rot->set_spin( 1.0 );
  glui2->add_column( false );
  GLUI_Rotation *sph_rot = glui2->add_rotation( "Sphere", sphere_rotate );
  sph_rot->set_spin( .98 );
  glui2->add_column( false );
  GLUI_Rotation *tor_rot = glui2->add_rotation( "Torus", torus_rotate );
  tor_rot->set_spin( .98 );
  glui2->add_column( false );
  GLUI_Rotation *lights_rot = glui2->add_rotation( "Blue Light", lights_rotation );
  lights_rot->set_spin( .82 );
  glui2->add_column( false );
  GLUI_Translation *trans_xy = 
    glui2->add_translation( "Objects XY", GLUI_TRANSLATION_XY, obj_pos );
  trans_xy->set_speed( .005 );
  glui2->add_column( false );
  GLUI_Translation *trans_x = 
    glui2->add_translation( "Objects X", GLUI_TRANSLATION_X, obj_pos );
  trans_x->set_speed( .005 );
  glui2->add_column( false );
  GLUI_Translation *trans_y = 
    glui2->add_translation( "Objects Y", GLUI_TRANSLATION_Y, &obj_pos[1] );
  trans_y->set_speed( .005 );
  glui2->add_column( false );
  GLUI_Translation *trans_z = 
    glui2->add_translation( "Objects Z", GLUI_TRANSLATION_Z, &obj_pos[2] );
  trans_z->set_speed( .005 );

  /**** We register the idle callback with GLUI, *not* with GLUT ****/
  GLUI_Master.set_glutIdleFunc( myGlutIdle );

  /**** Regular GLUT main loop ****/
  
  glutMainLoop();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频三区在线播放| 91免费观看在线| 成人97人人超碰人人99| 中文字幕不卡在线| 国产成a人亚洲精品| 欧美极品美女视频| 国产丶欧美丶日本不卡视频| 国产婷婷色一区二区三区四区| 日韩精品国产欧美| 日韩一区二区三区免费观看 | 久久久国产精品麻豆| 麻豆精品在线看| 亚洲一区影音先锋| va亚洲va日韩不卡在线观看| 欧美性大战久久久久久久蜜臀| 国产亚洲一区二区三区在线观看| 丝袜亚洲另类欧美综合| 在线看日韩精品电影| 亚洲电影一级片| 99久久国产免费看| 久久激情五月激情| 91麻豆视频网站| 色噜噜狠狠色综合欧洲selulu| 在线免费精品视频| 欧美三级电影网站| 欧美大片在线观看| 亚洲综合久久久| 麻豆91在线观看| 国产91对白在线观看九色| 欧洲av在线精品| 欧美刺激午夜性久久久久久久| 亚洲欧洲精品天堂一级| 精品亚洲成av人在线观看| 久久se这里有精品| 欧美草草影院在线视频| 久久久精品一品道一区| 国内久久婷婷综合| 一区二区欧美视频| 国产女人aaa级久久久级| 美女网站视频久久| 亚洲欧美日韩国产成人精品影院| 欧美伊人久久久久久久久影院| 精品一区二区三区免费视频| 国产精品久久夜| 日韩欧美在线网站| 不卡视频在线看| 国产日韩欧美a| 日本 国产 欧美色综合| 国产精品污污网站在线观看| 日韩一区二区高清| 日韩欧美国产系列| 日日欢夜夜爽一区| 日韩小视频在线观看专区| 亚洲一区在线观看网站| 欧美国产视频在线| 91老师国产黑色丝袜在线| 欧美一卡二卡三卡| 丁香婷婷综合激情五月色| 一区二区三区欧美在线观看| 欧美国产国产综合| 亚洲精品一区二区三区福利| 老色鬼精品视频在线观看播放| 色综合久久综合网欧美综合网 | 日韩国产在线一| 亚洲视频电影在线| 欧美大片一区二区| 9i看片成人免费高清| 国产成人自拍网| 久久精品国产99| 日本aⅴ亚洲精品中文乱码| 亚洲精品久久嫩草网站秘色| 欧美日韩久久久久久| 成人手机电影网| 国产精品888| 国产露脸91国语对白| 日韩高清不卡在线| 日韩国产精品久久久| 亚洲在线视频网站| 国产色一区二区| 日本一区二区综合亚洲| 欧美精品一区二区不卡| 26uuu久久综合| 日韩一区二区精品在线观看| 欧美另类高清zo欧美| 欧美三级中文字| 91国偷自产一区二区开放时间| 在线视频一区二区三| 99精品视频中文字幕| 在线观看成人免费视频| 在线精品视频免费观看| 91在线小视频| 欧美日韩免费观看一区三区| 91福利在线导航| 欧美男同性恋视频网站| 青青草成人在线观看| 一区二区三区中文字幕电影 | k8久久久一区二区三区| 国产成人亚洲综合色影视 | 成人一区二区三区中文字幕| 国产精品99久久久久久久vr| 成人免费va视频| 97久久精品人人做人人爽 | 色88888久久久久久影院按摩| 成人在线综合网| 99视频国产精品| 裸体健美xxxx欧美裸体表演| 精品影院一区二区久久久| 久久99日本精品| 成人中文字幕电影| 色偷偷久久人人79超碰人人澡| 3d动漫精品啪啪1区2区免费 | 亚洲国产日韩一级| 久久激情综合网| 高清不卡一区二区在线| 欧美色大人视频| 精品久久久久久久人人人人传媒 | 国产美女视频一区| 国产精品羞羞答答xxdd| 国产高清无密码一区二区三区| 99国产精品久久久久久久久久久 | 国产精品久久久久婷婷| 亚洲综合免费观看高清完整版 | 日韩欧美精品三级| 久久久av毛片精品| 中文字幕av在线一区二区三区| 亚洲欧美视频在线观看| 日韩av网站免费在线| 99久久综合精品| 7799精品视频| 亚洲免费观看视频| 开心九九激情九九欧美日韩精美视频电影 | 中文字幕欧美日韩一区| 天天色 色综合| 国产成人啪午夜精品网站男同| 一本色道久久综合亚洲91| 精品国产乱码久久久久久久| 亚洲精品中文字幕乱码三区| 国产一区二区三区黄视频| 色偷偷久久一区二区三区| 久久综合色天天久久综合图片| 国产精品家庭影院| 一区二区三区免费看视频| 国产成人亚洲综合a∨婷婷| 欧美日韩专区在线| 中文字幕在线不卡视频| 青青草91视频| 欧美绝品在线观看成人午夜影视| 国产亚洲午夜高清国产拍精品| 日日嗨av一区二区三区四区| 99久久精品国产麻豆演员表| 色天使色偷偷av一区二区| 日本一区二区免费在线观看视频| 性感美女久久精品| 色综合久久88色综合天天6 | 国产成人自拍网| 欧美一区二区观看视频| 亚洲电影在线免费观看| 亚洲男人的天堂一区二区| 国产成人精品三级| 欧美tk—视频vk| 久久99久久精品欧美| 欧美吻胸吃奶大尺度电影 | av在线免费不卡| 中文无字幕一区二区三区| 久久精品国产精品亚洲红杏| 在线不卡中文字幕播放| 亚洲制服丝袜av| www.欧美色图| 亚洲区小说区图片区qvod| 国产成人99久久亚洲综合精品| 国产欧美综合在线观看第十页| 免费观看日韩av| 欧美tickling挠脚心丨vk| 男女男精品网站| 欧美成人一区二区三区在线观看| 日韩国产欧美视频| 一本色道亚洲精品aⅴ| 亚洲一区二区三区中文字幕在线| 99精品在线免费| 亚洲一区二区三区四区中文字幕| 色婷婷综合久久久中文字幕| 一区二区成人在线视频| 亚洲高清不卡在线| 欧美成人午夜电影| 麻豆91免费观看| 久久久不卡影院| 9久草视频在线视频精品| 亚洲自拍与偷拍| 欧美男男青年gay1069videost| 久久久av毛片精品| 91免费看片在线观看| 国产精品国产三级国产a | 韩国av一区二区三区四区| 国产精品中文欧美| 最近日韩中文字幕| 欧洲色大大久久| 激情五月婷婷综合网| 精品欧美黑人一区二区三区| 成人午夜av在线| 亚洲在线视频一区|