OpenGL之繪畫頂點

OpenGL之繪畫頂點

OpenGL支持基本幾何頂點繪畫,使用glVertex()生成畫點的演示程式如上圖:下載

  1. 按鼠標左鍵繪畫頂點
  2. 按+鍵加大頂點尺寸
  3. 按-鍵減小頂點尺寸
  4. 按S鍵切換抗鋸齒功能
  5. 按1鍵切換為白色
  6. 按2鍵切換為黃色
  7. 按3鍵切換為紅色

繪畫單個頂點

  1. glPointSize(size);設置頂點的大小
  2. glBegin(GL_POINTS); 準備繪畫
  3. glVertex3f(x,y,z); 繪畫頂點(浮點數版)
  4. glVertex3i(x,y,z); 繪畫頂點(整數版)
  5. glEnd(); 結束繪畫

因屏幕由像素組成,縮放頂點時邊緣會產生鋸齒,OpenGL有其抗鋸齒算法,啟用後頂定會由方變圓,並修改邊緣像素的顏色:

if (glIsEnabled(GL_POINT_SMOOTH) == false)// 判斷抗鋸齒是否已啟用

{

glEnable(GL_POINT_SMOOTH); // 啟用頂點的平滑模式(抗鋸齒功能)

glEnable(GL_BLEND);// 需啟用混合

}

開啟抗鋸齒算法後,頂點尺寸範圍受到限制,若輸入不受支持頂點的尺寸,會改為最接近的支持數值:

  1. GLfloat sizes[2];浮點數數組
  2. glGetFloatv(GL_POINT_SIZE_RANGE,sizes);提取頂點尺寸的範圍
  3. GLfloat min = sizes[0];最小
  4. GLfloat max = sizes[1];最大
  5. GLfloat granularity;
  6. glGetFloatv(GL_POINT_SIZE_GRANULARITY,&granularity);提取頂點尺寸的粒度
  7. GLfloat size;
  8. glGetFloatv(GL_POINT_SIZE,&size);獲取當前頂點尺寸
  9. size = size + granularity;加大
  • size = size – granularity;減小
  • glPointSize(size);設置當前頂點的大小,但不能在glBegin()與glEnd()之間調用

評論