真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

glutSolidSphere用例

glutSolidSphere是GLUT工具包中的一個(gè)函數(shù),該函數(shù)用于渲染一個(gè)球體。球體球心位于

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的湖南網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

原點(diǎn)。在OpenGL中默認(rèn)的原點(diǎn)就是窗口客戶區(qū)的中心。

1 怎么將球體進(jìn)行移動(dòng)?

可以使用glPushMatrix,glPopMatrix保存一個(gè)移位矩陣,就可以移動(dòng)球體

    glPushMatrix();

    glTranslatef(1.0, 0.0, 0.0);

    GLfloat mat_ambient[] = { 0.021500, 0.174500, 0.021500, 0.550000};

    GLfloat mat_diffuse[] = { 0.075680, 0.614240, 0.075680, 0.550000};

    GLfloat mat_specular[] = { 0.633000, 0.727811, 0.633000, 0.550000 };

    GLfloat mat_shininess[] = { 76.800003}; //材質(zhì)RGBA鏡面指數(shù),數(shù)值在0~128范圍內(nèi)

    glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);

    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);

    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);

    glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);

    glutSolidSphere (1.0, 40, 50);    //半徑為 1,40 條緯線,50 條經(jīng)線

    glPopMatrix();

    glFlush (); 

2 已經(jīng)設(shè)置材質(zhì),光照,球體還是黑色的平面圖?

必須設(shè)置投影矩陣,建立裁剪的矩陣區(qū)域,才能夠看到立體,這時(shí)候需要調(diào)用glOrtho

/* 定義 GLUT 的 reshape 函數(shù),w、h 分別是輸出圖形的窗口的寬和高*/ 

void reshape (int w, int h) 

  glViewport (0, 0, (GLsizei) w, (GLsizei) h); 

  glMatrixMode (GL_PROJECTION); 

  glLoadIdentity ( ); 

  if (w <= h) 

    glOrtho (-1.5, 1.5, -1.5 * ( GLfloat ) h / ( GLfloat ) w, 

    1.5* ( GLfloat ) h / ( GLfloat ) w, -10.0, 10.0 ); //創(chuàng)建平行視景體

  else 

    glOrtho (-1.5 * ( GLfloat ) w / ( GLfloat ) h,1.5 * ( GLfloat ) 

    w/( GLfloat ) h, -1.5, 1.5, -10.0, 10.0); 

  glMatrixMode ( GL_MODELVIEW ); 

  glLoadIdentity ( ) ; 

代碼

# include < GL/glut.h > 

/* 初始化材料屬性、光源屬性、光照模型,打開深度緩沖區(qū)等 */ 

void init(void) 

  GLfloat light_position [ ] = { 0., 1.5, 1.5, 0.0 }; 

  glClearColor ( 0.0, 0.0, 1.0, 0.0 ); //設(shè)置背景色為藍(lán)色

  glShadeModel ( GL_SMOOTH ); 

  glLightfv ( GL_LIGHT0, GL_POSITION, light_position); 

  glEnable (GL_LIGHTING); 

  glEnable (GL_LIGHT0); 

  glEnable (GL_DEPTH_TEST); 

/*調(diào)用 GLUT 函數(shù),繪制一個(gè)球*/ 

void display ( void ) 

  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

  {

    glPushMatrix();

    glTranslatef(1.0, 0.0, 0.0);

    GLfloat mat_ambient[] = { 0.021500, 0.174500, 0.021500, 0.550000};

    GLfloat mat_diffuse[] = { 0.075680, 0.614240, 0.075680, 0.550000};

    GLfloat mat_specular[] = { 0.633000, 0.727811, 0.633000, 0.550000 };

    GLfloat mat_shininess[] = { 76.800003}; //材質(zhì)RGBA鏡面指數(shù),數(shù)值在0~128范

圍內(nèi)

    glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);

    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);

    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);

    glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);

    glutSolidSphere (1.0, 40, 50);    //半徑為 1,40 條緯線,50 條經(jīng)線

    glPopMatrix();

    glFlush (); 

  }

  {

    glPushMatrix();

    glTranslatef(-1.0, 0.0, 0.0);

    GLfloat mat_ambient[] = {  0.247250, 0.199500, 0.074500, 1.000000};

    GLfloat mat_diffuse[] = { 0.751640, 0.606480, 0.226480, 1.000000};

    GLfloat mat_specular[] = { 0.628281, 0.555802, 0.366065, 1.000000 };

    GLfloat mat_shininess[] = { 51.200001}; //材質(zhì)RGBA鏡面指數(shù),數(shù)值在0~128范

圍內(nèi)

    glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);

    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);

    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);

    glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);

    glutSolidSphere (1.0, 40, 50);    //半徑為 1,40 條緯線,50 條經(jīng)線

    glPopMatrix();

  }

  glFlush (); 

/* 定義 GLUT 的 reshape 函數(shù),w、h 分別是輸出圖形的窗口的寬和高*/ 

void reshape (int w, int h) 

  glViewport (0, 0, (GLsizei) w, (GLsizei) h); 

  glMatrixMode (GL_PROJECTION); 

  glLoadIdentity ( ); 

  if (w <= h) 

    glOrtho (-1.5, 1.5, -1.5 * ( GLfloat ) h / ( GLfloat ) w, 

    1.5* ( GLfloat ) h / ( GLfloat ) w, -10.0, 10.0 ); //創(chuàng)建平行視景體

  else 

    glOrtho (-1.5 * ( GLfloat ) w / ( GLfloat ) h,1.5 * ( GLfloat ) 

    w/( GLfloat ) h, -1.5, 1.5, -10.0, 10.0); 

  glMatrixMode ( GL_MODELVIEW ); 

  glLoadIdentity ( ) ; 

int main(int argc, char** argv) 

  glutInit (&argc, argv);     // GLUT 環(huán)境初始化

  glutInitDisplayMode (GLUT_SINGLE |GLUT_RGB |GLUT_DEPTH); // 顯示模式初始化

  glutInitWindowSize (300, 300);       // 定義窗口大小

  glutInitWindowPosition (100, 100);   // 定義窗口位置  

  glutCreateWindow ( argv [ 0 ] );   // 顯示窗口,窗口標(biāo)題為執(zhí)行函數(shù)名

  init( );

  glutDisplayFunc ( display ); // 注冊(cè) OpenGL 繪圖函數(shù)(一種特殊的調(diào)用方式,下

同) 

  glutReshapeFunc ( reshape );   // 注冊(cè)窗口大小改變時(shí)的響應(yīng)函數(shù)

  glutMainLoop( );      // 進(jìn)入 GLUT 消息循環(huán),開始執(zhí)行程序

  return 0; 


本文題目:glutSolidSphere用例
本文鏈接:http://weahome.cn/article/ipeceh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部