欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

Delphi

當(dāng)前位置:主頁 > 軟件編程 > Delphi >

Delphi下OpenGL2d繪圖之畫線的方法

來源:本站原創(chuàng)|時間:2020-01-10|欄目:Delphi|點擊: 次

一、前言:

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

二、畫線步驟:

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

畫線可能用到以下函數(shù):

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

procedure TForm1.Draw;
begin
  // 清空緩沖區(qū)
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  // ----------- GL_LINES -----------
  // 設(shè)置線寬
  glLineWidth(5);
  // 兩點間漸變色
  glShadeModel(GL_SMOOTH);
  glBegin(GL_LINES);  // 畫線
  // 設(shè)置起點線的顏色
  glColor3f(1, 0, 0);
  // 繪制起點
  glVertex2f(50, 50);
  // 設(shè)置末點線的顏色
  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ū)內(nèi)容,這將把剛繪制的圖形翻印到屏幕上。
end;

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

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

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

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

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

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

完整代碼點此下載

上一篇:Delphi實現(xiàn)毫秒級別的倒計時實例代碼

欄    目:Delphi

下一篇:Delphi實現(xiàn)判斷網(wǎng)址是否存在及是否可以打開的方法

本文標(biāo)題:Delphi下OpenGL2d繪圖之畫線的方法

本文地址:http://mengdiqiu.com.cn/a1/Delphi/8643.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有