OpenGL之路(三)基本練習

來源:互聯網
上載者:User

標籤:opengl   基本操作   畫圖   

glBegin()參數可有

GL_POINTS:把每一個頂點作為一個點進行處理,頂點n即定義了點n,共繪製N個點

  GL_LINES:把每一個頂點作為一個獨立的線段,頂點2n-1和2n之間共定義了n條線段,總共繪製N/2條線段
  GL_LINE_STRIP:繪製從第一個頂點到最後一個頂點依次相連的一組線段,第n和n+1個頂點定義了線段n,總共繪製n-1條線段
  GL_LINE_LOOP:繪製從第一個頂點到最後一個頂點依次相連的一組線段,然後最後一個頂點和第一個頂點相連,第n和n+1個頂點定義了線段n,總共繪製n條線段
  GL_TRIANGLES:把每個頂點作為一個獨立的三角形,頂點3n-2、3n-1和3n定義了第n個三角形,總共繪製N/3個三角形
  GL_TRIANGLE_STRIP:繪製一組相連的三角形,對於奇數n,頂點n、n+1和n+2定義了第n個三角形;對於偶數n,頂點n+1、n和n+2定義了第n個三角形,總共繪製N-2個三角形
  GL_TRIANGLE_FAN:繪製一組相連的三角形,三角形是由第一個頂點及其後給定的頂點確定,頂點1、n+1和n+2定義了第n個三角形,總共繪製N-2個三角形
  GL_QUADS:繪製由四個頂點組成的一組單獨的四邊形。頂點4n-3、4n-2、4n-1和4n定義了第n個四邊形。總共繪製N/4個四邊形
  GL_QUAD_STRIP:繪製一組相連的四邊形。每個四邊形是由一對頂點及其後給定的一對頂點共同確定的。頂點2n-1、2n、2n+2和2n+1定義了第n個四邊形,總共繪製N/2-1個四邊形

  GL_POLYGON:繪製一個凸多邊形。頂點1到n定義了這個多邊形。

樣本如下:

#include <gl/glut.h>#include <gl/GLU.h>#include <gl/GL.h>#pragma comment(lib, "opengl32.lib")#pragma comment(lib, "glut32.lib")#pragma comment(lib, "glu32.lib")#pragma comment(lib, "glut.lib")void renderScene(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glBegin(GL_POINTS);//多組點glVertex3f(-1.0, 0.0, 0.0);glVertex3f(-1.2, 0.0, 0.0);glEnd();glBegin(GL_LINES);//多組線段glVertex3f(-0.9, 0.9, 0.0);glVertex3f(-0.7, 1.9, 0.0);glVertex3f(-0.8, 0.7, 0.0);glVertex3f(-0.8, 0.2, 0.0);glEnd();glBegin(GL_LINE_STRIP);//不閉合折線glVertex3f(-1, 1.4, 0.0);glVertex3f(-0.5, 0.1, 0.0);glVertex3f(0.0, 0.0, 0.0);glEnd();glBegin(GL_TRIANGLES);//多組填充三角形glVertex3f(0.0, 0.0, 0.0);glVertex3f(0.5, 0.0, 0.0);glVertex3f(0.0, 0.5, 0.0);glEnd();glBegin(GL_QUADS);//多組填充四邊形glVertex3f(1.0, 1.0, 0.0);glVertex3f(2.0, 1.0, 0.0);glVertex3f(2.0, 0.0, 0.0);glVertex3f(1.0, 0.0, 0.0);glEnd();glutSwapBuffers();}void changeSize(int w, int h) {// 防止除數即高度為0// (你可以設定視窗寬度為0).if (h == 0)h = 1;float ratio = 1.0* w / h;// 單位化投影矩陣。glMatrixMode(GL_PROJECTION);glLoadIdentity();// 設定視口大小為整個視窗大小glViewport(0, 0, w, h);// 設定正確的投影矩陣gluPerspective(45, ratio, 1, 1000);//下面是設定模型視圖矩陣glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, -1.0, 0.0f, 1.0f, 0.0f);//設定觀測點}int main(int argc, char * argv[]){glutInit(&argc, argv);glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);glutInitWindowPosition(100, 100);glutInitWindowSize(320, 320);glutCreateWindow("Hello OpenGL");glutDisplayFunc(renderScene);glutIdleFunc(renderScene); //指定程式空閑時調用函數glutReshapeFunc(changeSize); //指定視窗形狀變化時的回呼函數glEnable(GL_DEPTH_TEST);glutMainLoop();return 0;}


結果



OpenGL之路(三)基本練習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.