天天看點

基于glut庫的openGl的機器人手臂代碼詳解

基于glut庫的openGl的機器人手臂代碼詳解

機器人手臂源代碼網址:

https://blog.csdn.net/yueyansheng2/article/details/54095346?utm_source=blogxgwz4

Study Process

glClearColor(0.0, 0.0, 0.0, 0.0);
           

【glClearColor ( ) 就是用來設定這個 “ 底色 ” 的,即所謂的背景顔色。glClearColor ( ) 隻起到Set 的作用,并不Clear 任何。

void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);紅、綠、藍和 alpha 值,alpha 指定顔色中的α成分,指定值範圍均為[ 0.0f,1.0f ]

glClearColor(1.0, 0.0, 0.0, 1.0);//紅色

參考CSDN網址:https://blog.csdn.net/hebbely/article/details/69951068

glShadeModel(GL_FLAT);
           

【glShadeModel ( ) 函數用于控制顔色的過渡模式。 繪制指定兩點間其他點顔色的過渡模式。

參數一般為 GL_SMOOTH ( 預設 ) 或 GL_FLAT。GL_SMOOTH 會出現過渡效果】

glClear(GL_COLOR_BUFFER_BIT);
           

【glClear ( ) 是用來清除螢幕顔色,即将螢幕的所有像素點都還原為 “底色 ”

void glClear(GLbitfield mask);mask 對指定需要清除的緩存進行按位或屏蔽操作,值如下表:

GL_COLOR_BUFFER_BIT 指定目前被激活為寫操作的顔色緩存

GL_DEPTH_BUFFER_BIT 深度緩存

GL_ACCUM_BUFFER_BIT 累加緩存

GL_STENCIL_BUFFER_BIT 模闆緩存】

glPushMatrix();
           

【功能是将目前矩陣堆棧推送,用法是void WINAPI glPushMatrix(void)

将需要執行的縮放、平移等操作放在glPushMatrix和glPopMatrix之間

https://blog.csdn.net/qq_16334327/article/details/78258183

glTranslatef(-1.0, 0.0, 0.0);
           

【沿着 X, Y 和 Z 軸移動。

1.X坐标軸從左至右,Y坐标軸從下至上,Z坐标軸從裡至外。

2.OpenGL螢幕中心的坐标值是X和Y軸上的0.0f點。

3.中心左面的坐标值是負值,右面是正值。 移向螢幕頂端是正值,移向螢幕底端是負值。 移入螢幕深處是負值,移出螢幕則是正值。

https://blog.csdn.net/code_ac/article/details/60970103

glRotatef((GLfloat)shoulder, 0.0, 0.0, 1.0);
           

【glRotatef(angle, x, y, z) 】

glScalef(2.0, 0.4, 1.0);
           

【模型縮放函數,這個物體的每個點的x,y,z坐标與對應的xyz參數相乘。

void glScalef(GLfloat x, GLfloat y, GLfloat z);

如glScalef(2.0f,3.0f,4.0f);将模型按x,y,z方向分别拉伸了2,3,4倍。

參數也可取負數,也可以了解為先關于某軸翻轉180°,再縮放

如glScalef(1.0f,1.0f,-2.0f);将模型關于z軸翻轉了180°,再拉伸2倍。

https://blog.csdn.net/code_ac/article/details/62054366

glutWireCube(1.0);
           

【畫線框立方體

void glutWireCube(GLdouble size);

https://blog.csdn.net/Augusdi/article/details/7076734

glutSwapBuffers()
           

【實作雙緩沖技術,該函數的功能是交換兩個緩沖區指針。

緩沖explain:通常, 我們所看到的窗體、文字、圖像,從根本上來說都是“畫”出來的。比如,制作一個簡單的五子棋, 我們可能先要繪制棋盤,然後繪制棋子,我們可能還要繪制一些提示資訊。雖然這些繪制操作有一定的先後順序,通常情況下,作業系統的這些繪制速度非常的快,使人眼誤認為這些繪制操作是同時完成的。但當我們進行複雜的繪圖操作時,畫面便可能有明顯的閃爍。解決這個問題的關鍵在于使繪制的東西同時出現在螢幕上。所謂雙緩沖技術, 是指使用兩個緩沖區: 前台緩沖和背景緩沖。前台緩沖即我們看到的螢幕,背景緩沖則在記憶體當中,對我們來說是不可見的。每次的所有繪圖操作都在背景緩沖中進行, 當繪制完成時, 把繪制的最終結果複制到螢幕上, 這樣, 我們看到所有GDI元素同時出現在螢幕上,進而解決了頻繁重新整理導緻的畫面閃爍問題。

https://blog.csdn.net/u012442207/article/details/45223261

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

【在OpenGL初始化完成之後,我們應該進行一些視圖設定。首先是設定視見區域,調用glViewPort函數來決定視見區域,即告訴OpenGL應把渲染之後的圖形繪制在窗體的哪個部位

參數X,Y指定了視見區域的左下角在視窗中的位置,一般情況下為(0,0),Width和Height指定了視見區域的寬度和高度。

glViewport(GLint x,GLint y,GLsizei width,GLsizei height)為其函數原型。https://blog.csdn.net/sj19890401/article/details/19976667

glMatrixMode(GL_PROJECTION);
           

【這個函數其實就是對接下來要做什麼進行一下聲明

也就是在要做下一步之前告訴計算機我要對“什麼”進行操作了,這個“什麼”在glMatrixMode的“()”裡的選項(參數)有3種模式: GL_PROJECTION 投影, GL_MODELVIEW 模型視圖, GL_TEXTURE 紋理.

在操作投影矩陣以前,需要調用函數:glMatrixMode(GL_PROJECTION); //将目前矩陣指定為投影矩陣

然後把矩陣設為機關矩陣:glLoadIdentity();

然後調gluPerspective(),它們生成的矩陣會與目前的矩陣相乘,生成透視的效果;

https://blog.csdn.net/jing16337305/article/details/80337800

glLoadIdentity();
           

【函數的功能是重置目前指定的矩陣為機關矩陣 機關矩陣就是對角線上都是1,其餘元素皆為0的矩陣。

是用一個4×4的機關矩陣來替換目前矩陣,實際上就是對目前矩陣進行初始化,也就是說,在該指令執行後,目前矩陣均恢複成一個機關矩陣

當您調用glLoadIdentity()之後,您實際上将目前點移到了螢幕中心:類似于一個複位操作

https://blog.csdn.net/caoshangpa/article/details/80264007

gluPerspective(65.0, (GLfloat)w / (GLfloat)h, 1.0, 20.0)
           

【fovy,眼睛睜開的角度,如果為180,那麼可以認為你的視界很廣闊;

aspect,這個好了解,就是實際視窗的縱橫比,即x/y,影響到視野的截面有多大。

zNear,近裁剪面到眼睛的距離

zFar表示遠裁剪面到眼睛的距離

gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

https://blog.csdn.net/tyxkzzf/article/details/40921713

glMatrixMode(GL_MODELVIEW);
           

【GL_MODELVIEW是對模型視景矩陣操作 接下來的語句描繪一個以模型為基礎的适應

glMatrixMode是用來指定哪一個矩陣是目前矩陣,而它的參數代表要操作的目标,GL_PROJECTION是對投影矩陣操作,GL_TEXTURE是對紋理矩陣進行随後的操作。

切換目前矩陣,置透視投影設定完成後開始畫圖,需要切換到 模型視圖矩陣 才能正确畫圖.glMatrixMode(GL_MODELVIEW);

https://blog.csdn.net/siyue0211/article/details/74784170

繼續閱讀