OpenGL學習總結(2)

2021-06-28 22:50:42 字數 1880 閱讀 4027

在opengl中,當我們需要繪製點、直線和多邊形時,我們需要用「點」來填充畫素,從而將影象顯示出來。因此,「點 」是一切的基礎,在opengl中,提供了一系列的函式來指定點,這些函式的共同點如下:

都以glvertex為開頭,後面跟乙個數字和1-2個字母。例如:

glvertex2d

glvertex2f

glvertex3f

glvertex3fv

等等。數字表示引數的個數,2表示有兩個引數,3表示三個,4表示四個(我知道有點羅嗦~)。

字母表示引數的型別,s表示16位整數(opengl中將這個型別定義為glshort),

i表示32位整數(opengl中將這個型別定義為glint和glsizei),

f表示32位浮點數(opengl中將這個型別定義為glfloat和glclampf),

d表示64位浮點數(opengl中將這個型別定義為gldouble和glclampd)。

v表示傳遞的幾個引數將使用指標的方式,見下面的例子。

這些函式除了引數的型別和個數不同以外,功能是相同的。例如,以下五個**段的功能是等效的:

(一)glvertex2i(1, 3);

(二)glvertex2f(1.0f, 3.0f);

(三)glvertex3f(1.0f, 3.0f, 0.0f);

(四)glvertex4f(1.0f, 3.0f, 0.0f, 1.0f);

(五)glfloat vertexarr3 = ;

glvertex3fv(vertexarr3);

我們可以用glvertex*來表示這一系列函式。

我們在設定好若干個點之後,這些點將按照什麼標準來連線在一起呢?

為了解決這一問題,opengl要求:指定頂點的命令必須包含在glbegin函式之後,glend函式之前(否則指定的頂點將被忽略)。並由glbegin來指明如何使用這些點。

例如我寫:

glbegin(gl_points);

glvertex2f(0.0f, 0.0f);

glvertex2f(0.5f, 0.0f);

glend();

則這兩個點將分別被畫出來。如果將gl_points替換成gl_lines,則兩個點將被認為是直線的兩個端點,opengl將會畫出一條直線。

我們還可以指定更多的頂點,然後畫出更複雜的圖形。

另一方面,glbegin支援的方式除了gl_points和gl_lines,還有gl_line_strip,gl_line_loop,gl_********s,gl_********_strip,gl_********_fan等。

關於哥哥巨集的具體含義可以參考如下:巨集定義含義

下面我們將舉例畫乙個圓形: /*

正四邊形,正五邊形,正六邊形,……,直到正n邊形,當n越大時,這個圖形就越接近圓

當n大到一定程度後,人眼將無法把它跟真正的圓相區別

這時我們已經成功的畫出了乙個「圓」

(注:畫圓的方法很多,這裡使用的是比較簡單,但效率較低的一種)

試修改下面的const int n的值,觀察當n=3,4,5,8,10,15,20,30,50等不同數值時輸出的變化情況

將gl_polygon改為gl_line_loop、gl_points等其它方式,觀察輸出的變化情況*/

include #include const int n = 20;

const glfloat r = 0.5f;

const glfloat pi = 3.1415926536f;

void mydisplay(void)

{

int i;

glclear(gl_color_buffer_bit);

glbegin(gl_polygon);

for(i=0; i

openGL 學習筆記 2

藍寶書 第二章 1 windows平台使用標頭檔案 根據環境不同會有變化 include include include 2 opengl變數型別與c語言變數型別對應表 表2.1 第81頁 3 api函式命名規則 庫字首 根命令 引數數量 引數型別 glcolor3f 4 常見rgb復合顏色表 表2...

openGL學習筆記(2)

x,y,z 組合起來表示兩個重要的值,乙個是方向,乙個是向量 多邊形面積公式 float s 0.0 for i 0 i0 順時針給予點 a是背面的面積 a 0 ab bc ac ab ac cb 共同起點指向被減 已知兩個非零向量a,b 作 oa a ob b 則角aob稱為向量a和向量b的夾角 ...

學習OpenGL總結三

學習opengl總結三 drawglscene 3d.h 內容如下 include drawglscene 3d.h pragma once modify date 2009 01 08 vp hsg include windows的標頭檔案 include 標準輸入 輸出庫的標頭檔案 新增 inc...