欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Delphi下OpenGL2d繪圖之畫線的方法

 更新時間:2014年07月14日 14:44:50   投稿:shichen2014  
這篇文章主要介紹了Delphi下OpenGL2d繪圖之畫線的方法,需要的朋友可以參考下

一、前言:

Delphi畫線方法與畫點基本上是相同的。區(qū)別在于glBegin()的參數。繪制的框架代碼可以參考Delphi下OpenGL2d繪圖初始化中的代碼,地址為http://www.dbjr.com.cn/article/52141.htm。修改的部份為 Draw 函數的內容。

二、畫線步驟:

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條線段

畫線可能用到以下函數:

glLineWidth() 設置線條寬度
glShadeModel() 設置顏色過渡模式
glColor3f() 設置線條顏色

procedure TForm1.Draw;
begin
  // 清空緩沖區(qū)
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  // ----------- GL_LINES -----------
  // 設置線寬
  glLineWidth(5);
  // 兩點間漸變色
  glShadeModel(GL_SMOOTH);
  glBegin(GL_LINES);  // 畫線
  // 設置起點線的顏色
  glColor3f(1, 0, 0);
  // 繪制起點
  glVertex2f(50, 50);
  // 設置末點線的顏色
  glColor3f(0, 0, 1);
  // 繪畫末點
  glVertex2f(200, 200);
  glEnd;
  // 兩點間同顏色
  glShadeModel(GL_FLAT);
  glBegin(GL_LINES);
  glColor3f(0, 1, 0);
  glVertex2f(200, 50);
  glColor3f(1, 1, 0);
  glVertex2f(50, 200);
  glEnd;
  // ----------- GL_LINE_LOOP -----------
  // 三個點閉環(huán)形成一個三角形  glShadeModel(GL_SMOOTH); 不起作用
  glLineWidth(1);
  glBegin(GL_LINE_LOOP);
  glColor3f(0, 0, 1);
  glVertex2f(250, 50);
  glVertex2f(250, 200);
  glVertex2f(280, 150);
  glEnd;
  // ----------- GL_LINE_STRIP -----------
  // 多點折線    glShadeModel(GL_SMOOTH); 不起作用
  glLineWidth(1);
  glBegin(GL_LINE_STRIP);
  glColor3f(1, 0, 255);
  glVertex2f(350, 50);
  glVertex2f(400, 200);
  glVertex2f(480, 150);
  glVertex2f(490, 60);
  glEnd;
  SwapBuffers(FDC); //交換雙緩沖區(qū)內容,這將把剛繪制的圖形翻印到屏幕上。
end;

可以看到第一個X線條顏色漸變的,OpenGL默認情況下是這種樣式。opengl中提供了一個函數glShadeModel來決定如何處理這種不同顏色的情況。

glShadeModel(GL_SMOOTH); // 平滑方式,這也是opengl的默認處理方式,實現顏色漸變的效果
glShadeModel(GL_FLAT);  // 單色方式,線段的顏色以某一個頂點的顏色為準,由具體實現決定。為了避免不確定性,應盡量在多邊形中使用同一種顏色

經過測試后發(fā)現,在GL_LINE_LOOP與GL_LINE_STRIP樣式下,漸變效果無效!具體原因有待進一步查明。

另外,OpenGL提供了抗鋸齒的功能,函數為

glEnable(GL_LINE_SMOOTH); //啟用
glHint(GL_LINE_SMOOTH,GL_NICEST);
glDisable(GL_LINE_SMOOTH); //關閉

使用后發(fā)現抗鋸齒效果不明顯。有待進一步繼續(xù)再研究。

完整代碼點此下載

相關文章

  • Delphi Command模式

    Delphi Command模式

    最近學習模式入迷, 所以就想寫一篇關于模式的文章,這篇文章是<<Java 與模式>> (閻宏 著)里的一個例子, 我把它改成Delphi的.第一次寫東西, 有不足之處希望大家可以諒解.
    2008-03-03
  • 插件管理框架 for Delphi(二)

    插件管理框架 for Delphi(二)

    插件管理框架2.2 實現代碼
    2008-03-03
  • Delphi遠程連接Mysql的實現方法

    Delphi遠程連接Mysql的實現方法

    這篇文章主要介紹了Delphi遠程連接Mysql的實現方法,需要的朋友可以參考下
    2014-09-09
  • Delphi實現樹型結構具體實例

    Delphi實現樹型結構具體實例

    這篇文章介紹了Delphi實現樹型結構具體實例,有需要的朋友可以參考一下
    2013-10-10
  • Delphi實現限定軟件使用時間的方法

    Delphi實現限定軟件使用時間的方法

    這篇文章主要介紹了Delphi實現限定軟件使用時間的方法,商業(yè)軟件開發(fā)中非常實用的功能,需要的朋友可以參考下
    2014-07-07
  • Delphi 中內存映射對于大文件的使用

    Delphi 中內存映射對于大文件的使用

    這篇文章主要介紹了Delphi 中內存映射對于大文件的使用的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • delphi實現保存和讀取圖片的方法

    delphi實現保存和讀取圖片的方法

    這篇文章主要介紹了delphi實現保存和讀取圖片的方法,主要包括了顯示圖片、保存圖片和讀取圖片的實現方法,是非常實用的技巧,需要的朋友可以參考下
    2014-09-09
  • springboot如何完美通過token獲取用戶信息

    springboot如何完美通過token獲取用戶信息

    這篇文章主要給大家介紹了關于springboot如何完美通過token獲取用戶信息的相關資料, Token是在服務端產生的,如果前端使用用戶名/密碼向服務端請求認證,服務端認證成功,那么在服務端會返回Token給前端,需要的朋友可以參考下
    2023-12-12
  • Delphi 實現軟件自動升級的功能

    Delphi 實現軟件自動升級的功能

    這篇文章主要介紹了Delphi 實現軟件自動升級的功能的相關資料,希望通過本文能幫助到大家實現這樣的功能,需要的朋友可以參考下
    2017-09-09
  • Windows API GetLastError()函數返回值含義解釋

    Windows API GetLastError()函數返回值含義解釋

    這篇文章主要介紹了Windows API GetLastError()函數返回值含義解釋,本文羅列了所有錯誤代碼及中文注釋,需要的朋友可以參考下
    2015-05-05

最新評論