OpenGL學習(一) OpenGL簡介

2021-07-10 17:02:41 字數 2117 閱讀 5201

opengl是乙個開放式的、與硬體無關的圖形軟體包。

opengl是乙個專業的、功能強大、呼叫方便的底層三圍圖形函式庫。

opengl是乙個圖形與硬體的介面。

建模變換

著色光照處理和材質設定

位圖顯示、影象增強和紋理對映

雙快取動畫

根據基本圖形單元(點、線、多邊形、影象和點陣圖)建立景物模型,並且對所建立的模型進行數學描述。

把景物模型放置於三圍空間中的適當位置,設定視點即觀察位置。

計算模型中所有物體的顏色,同時確定光照條件、紋理對映方式等。

進行圖形的光柵化,即把景物模型的數學描述及其顏色資訊經消隱和光柵掃瞄轉換使其適合於光柵掃瞄顯示器上顯示的畫素。

windowns下的opengl元件由如下3部分組成。

opengl的庫函式採用c語言風格,他們分別屬於以下不同的庫。

1. opengl核心庫,函式名字首gl。

2. opengl實用庫,函式名字首glu。

3. opengl輔助庫,函式名字首aux。

4. opengl工具庫,函式名字首glut。

5. windows專用庫,函式名字首wgl。

6. win32 api 函式庫。

glclearcolor(0.0, 0.0, 0.0, 0.0);   //設定視窗clear的顏色  黑色 

glclear(gl_color_buffer_bit); //clear視窗

glcolor3f(1.0, 1.0, 1.0); //設定繪製物體的顏色 白色

//glortho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);

glbegin(gl_polygon); //設定繪製的模式

glvertex3f(0.25, 0.25, 0.0);

glvertex3f(0.75, 0.25, 0.0);

glvertex3f(0.75, 0.75, 0.0);

glvertex3f(0.25, 0.75, 0.0);

glend();

glflush();

這一段程式繪製出了乙個簡單的正方形。

在上乙個程式中,opengl的函式使用了字首」gl」,並把組成函式的每個單詞首字母用大寫形式表示。除此之外openggl的函式中有一些不相關的字母(例如glcolor3f()和glvertex3f中的「3f」)。這個字尾中的「3」表示這個函式接受3個引數,「f」表示這些引數都是浮點數。

opengl的c++或ada實現不需要完全遵循這種方案。

函式字尾和引數資料型別

字尾

資料型別

典型的對應c語言型別

opengl型別定義

b8位整數

signed char

glbyte

s16位整數

short

glshort

i32位整數

int or long

glint,glsizei

f32位浮點數

float

glfloat,glclampf

d64位浮點數

double

gldouble,glclampd

ub8位無符號整數

unsigned char

glubyte,glboolean

us16位無符號整數

unsigned short

glushort

ui32位無符號整數

unsigned int or unsigned long

gluint,glenum,glbitfield

常見狀態變數有

許多表示模式的狀態變數可以用glenable()和gldisable()函式進行啟用和禁用。

絕大多數opengl實現都有相似的操作順序,一系列相關的處理階段叫做opengl渲染管線。如下圖:

OpenGL學習筆記(一)初識OpenGL

早期的opengl使用立即渲染模式 immediate mode,也就是固定渲染管線 從opengl3.2開始,規範文件開始廢棄立即渲染模式,並鼓勵開發者在opengl的核心模式 core profile 下進行開發。opengl的一大特性就是對擴充套件 extension 的支援。opengl自身...

opengl碗狀 OpenGL學習

一 opengl的基本語法 1.vbo vertex buffer object 頂點緩衝物件,這個是用來儲存大量頂點 2.vao vertex array object 頂點陣列物件 3.ibo index buffer object 索引緩衝物件 二 opengl的基本使用方法 1.獲取頂點 片...

OpenGL學習筆記(一)

opengl是一種在計算機上進行2d 3d圖形繪製的技術規範,嚴格上來說不能算作一種具體技術。不過,現在有opengl庫來提供了對這種規範的封裝,於是也演變為今天對opengl api的使用。opengl需要硬體支援的,就如同對微軟directx的支援一樣。上層應用軟體都是通過opengl的庫介面,...