OpenGL學習 設置點大小、線寬度、畫虛線、多邊形繪制(正反面)


http://blog.sina.com.cn/s/blog_986c47a70101humi.html

點的大小默認為1個像素,但也可以改變之。改變的命令為glPointSize,其函數原型如下:
void glPointSize(GLfloat size);
size必須大於0.0f,默認值為1.0f,單位為“像素”。
 
 
直線可以指定寬度:
void glLineWidth(GLfloat width);
其用法跟glPointSize類似
 
 
畫虛線:
首先,使用glEnable(GL_LINE_STIPPLE);來啟動虛線模式(使用glDisable(GL_LINE_STIPPLE)可以關閉之)。
然后,使用glLineStipple來設置虛線的樣式。
void glLineStipple(GLint factor, GLushort pattern);
pattern是由1和0組成的長度為16的序列,從最低位開始看,如果為1,則直線上接下來應該畫的factor個點將被畫為實的;如果為0,則直線上接下來應該畫的factor個點將被畫為虛的。
 
 
關於多邊形
(1)多邊形的兩面以及繪制方式。
雖然我們目前還沒有真正的使用三維坐標來畫圖,但是建立一些三維的概念還是必要的。
從三維的角度來看,一個多邊形具有兩個面。每一個面都可以設置不同的繪制方式:填充、只繪制邊緣輪廓線、只繪制頂點,其中“填充”是默認的方式。可以為兩個面分別設置不同的方式。
glPolygonMode(GL_FRONT, GL_FILL);            // 設置正面為填充方式
glPolygonMode(GL_BACK, GL_LINE);             // 設置反面為邊緣繪制方式
glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); // 設置兩面均為頂點繪制方式
(2)反轉
可以通過glFrontFace函數來交換“正面”和“反面”的概念。
glFrontFace(GL_CCW);   // 設置CCW方向為“正面”,CCW即CounterClockWise,逆時針
glFrontFace(GL_CW);    // 設置CW方向為“正面”,CW即ClockWise,順時針
下面是一個示例程序,請用它替換第一課中的myDisplay函數,並將glFrontFace(GL_CCW)修改為glFrontFace(GL_CW),並觀察結果的變化。
void myDisplay(void)
{
     glClear(GL_COLOR_BUFFER_BIT);
     glPolygonMode(GL_FRONT, GL_FILL); // 設置正面為填充模式
     glPolygonMode(GL_BACK, GL_LINE);   // 設置反面為線形模式
     glFrontFace(GL_CCW);               // 設置逆時針方向為正面
     glBegin(GL_POLYGON);               // 按逆時針繪制一個正方形,在左下方
         glVertex2f(-0.5f, -0.5f);
         glVertex2f(0.0f, -0.5f);
         glVertex2f(0.0f, 0.0f);
         glVertex2f(-0.5f, 0.0f);
     glEnd();
     glBegin(GL_POLYGON);               // 按順時針繪制一個正方形,在右上方
         glVertex2f(0.0f, 0.0f);
         glVertex2f(0.0f, 0.5f);
         glVertex2f(0.5f, 0.5f);
         glVertex2f(0.5f, 0.0f);
     glEnd();
     glFlush();
}
 
注意,默認逆時針是正面,而且默認填充,要改變的話,通過 
glPolygonMode(GL_FRONT, GL_FILL);
glFrontFace(GL_CCW);               // 設置逆時針方向為正面
而且他們的設置,要放在多邊形繪制之前,即glBegin(GL_POLYGON); 前面
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM