程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Delphi下OpenGL2d畫圖之畫線的辦法

Delphi下OpenGL2d畫圖之畫線的辦法

編輯:更多關於編程

Delphi下OpenGL2d畫圖之畫線的辦法。本站提示廣大學習愛好者:(Delphi下OpenGL2d畫圖之畫線的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Delphi下OpenGL2d畫圖之畫線的辦法正文


1、媒介:

Delphi畫線辦法與畫點根本上是雷同的。差別在於glBegin()的參數。繪制的框架代碼可以參考Delphi下OpenGL2d畫圖初始化中的代碼,地址為http://www.jb51.net/article/52141.htm。修正的部分為 Draw 函數的內容。

2、畫線步調:

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
  // 清空緩沖區
  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 -----------
  // 三個點閉環構成一個三角形  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); //交流雙緩沖區內容,這將把剛繪制的圖形翻印到屏幕上。
end;

可以看到第一個X線條色彩突變的,OpenGL默許情形下是這類款式。opengl中供給了一個函數glShadeModel來決議若何處置這類分歧色彩的情形。

glShadeModel(GL_SMOOTH); // 膩滑方法,這也是opengl的默許處置方法,完成色彩突變的後果
glShadeModel(GL_FLAT);  // 單色方法,線段的色彩以某一個極點的色彩為准,由詳細完成決議。為了不不肯定性,應盡可能在多邊形中應用統一種色彩

經由測試後發明,在GL_LINE_LOOP與GL_LINE_STRIP款式下,突變後果有效!詳細緣由有待進一步查明。

別的,OpenGL供給了抗鋸齒的功效,函數為

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

應用後發明抗鋸齒後果不顯著。有待進一步持續再研討。

完全代碼點此下載

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved