1. 程式人生 > >點基礎知識——OpenGL ES Common/Common-Lite 規範(版本 1.1.12)

點基礎知識——OpenGL ES Common/Common-Lite 規範(版本 1.1.12)

3.3點

點的光柵化由下兩個函式控制:

Void  PointSize(float  size);

Void  PointSizex(fixed  size);

Size定義了點的尺寸。預設值是1.0。一個小於或等於0的值會導致錯誤INVALID_VALUE。

點的尺寸會乘上一個距離衰減因子,固定於由PointParameter定義的尺寸範圍,參看下面敘述,更固定於依賴執行的點範圍去推匯出衍生的點尺寸:

{33B531D7-9F63-44D4-A058-D3B74D131085}

這裡d是眼座標中眼和頂點座標的距離,(0,0,0,1)是眼的座標,a、b和c是距離衰減函式係數。

點精靈的“能”或“不能”是通過呼叫POINT_SPRITE_OES符號常量的Enable或Disable設定。點精靈狀態的預設值是“不能”。當點精靈是不能時,點的抗鋸齒狀態是被忽略的。

點精靈的紋理座標的復位模式由以下命令設定

Void  TexEnv{ixf}(enum  target, enum  pname, T  param);

Void  TexEnv{ixf}(enum  target, enum  pname, T  params);

Target的值是POINT_SPRITE_OES而且pname是COORD_REPLACE_OES。param可能的值是FALSE和TRUE。點精靈的紋理座標復位的各紋理單元的預設值是disabled。

如果重取樣不是enable,源尺寸被當做點寬度傳給光柵。

如果重取樣是enable,一個執行將隨機的淡化點的alpha(參看3.10)值,以取代允許點寬度gobelow給定的極值。在那種情況下,光柵化的點的寬度為:

{A7EAC510-D8CC-4946-94EA-B8D4267AC25C}

淡化因子按如下方法計算:

{6C6728CC-F8DD-487A-A946-9CD3E15F95AC}

距離衰減函式的係數a,b和c,第一個點的尺寸範圍,點的淡化極限,由以下函式定義:

Void PointParameter{xf}(enum pname, T  param);

Void PointParameter{xf}v(enum pname,const  T  params);

如果pname是POINT_SIZE_MIN或者POINT_SIZE_MAX,那麼param或者params各自指定了更低或者更高的源點尺寸固定的範圍。如果更低的範圍比更高的範圍更大,點尺寸固定值之後的值沒有定義。如果pname的值是POINT_DISTANCE_ATTENUATION,那麼params指向了引數a,b,c。如果pname是POINT_FADE_THRESHOLD_SIZE,那麼param定義的或者params指向的是點的淡出極限。POINT_SIZE_MIN值、POINT_SIZE_MAX值和POINT_FADE_THRESHOLD_SIZE值低於0會導致INVALID_VALUE錯誤。

點抗鋸齒的“能”或“不能”是通過呼叫POINT_SMOOTH符號常量的Enable或Disable設定。點抗鋸齒狀態的預設值是“不能”。

3.3.1點光柵化基礎

在預設狀態,點的光柵化是裁剪它的xw和yw座標(注意,下標表明這是x和y的視窗座標)到整數。這個(x,y)的地址,隨同與點相應的頂點相關聯的資料生成的資料,被作為單個的片元被傳遞到GL的片元舞臺。

寬度不為1.0的點的效果依賴於點抗鋸齒和點精靈的狀態。

不抗鋸齒的點

如果抗鋸齒和點精靈都為disable,真實的寬度通過將寬度取整到最近的整數來決定,然後固定到依賴於執行的最大的不抗鋸齒的寬度。這個依賴於執行的值必須不小於依賴於執行的最大的抗鋸齒點寬,取整到最近的整數值,並且無論如何都不低於1。如果對指定寬度取整得到0值,將會將之置為1。如果結果寬度為基數,那麼點

{7E24B2C1-738D-4F83-AF94-27D103F281C0}

是由頂點的xw和yw計算出的,並且基數寬度的方形柵格在(x,y)的中心定義了光柵片元的中心(注意,片元中心取值為半整數的視窗座標值)。如果寬度是偶數,那麼中心點是

{207DE182-4CBF-426A-A815-2064FCE05CC3}

光柵化片元中心是半整數的視窗座標值,在偶數寬度中心的方形中,在(x,y)。參看圖3.2。

{A3736097-AFE9-45FE-A66E-AC7DB2BEEA0C}

圖3.2不抗鋸齒點的光柵化。叉代表陰影區域中的點背光柵化後產生的片元中心。虛線代表半整型座標。

所有的片元都是通過光柵化一個不抗鋸齒的點而生產的,它們被分派了相同的關聯資料,這些資料是伴隨點的頂點,分別用紋理座標s,t和r來取代s/q,t/q,和r/q。如果q小於等於0,那麼結果是未定義的。

抗鋸齒的點

如果抗鋸齒的值是enable,並且點精靈的值是disable,那麼點光柵化為每個片元區域生產一個片元。片元區域是網格線和當前點的邊界圓的交點決定的(圖3.3)。每個片元的覆蓋值是圓區域和相應的片元區域的交叉點的視窗座標區域(參看3.2)。這個值被儲存起來並在光柵化的最後一步使用(參看3.9)。其它相關的片元資料都和不抗鋸齒點一樣的方式得到。

{E681B467-03EB-4D1E-9B80-622199C4833A}

圖3.3.抗鋸齒點的光柵化。黑點代表被光柵化的點。陰影區域定義了寬度。X標記代表了光柵化後生成的片元中心。一個片元計算出的覆蓋值是基於覆蓋相應的片元區域的陰影區域的部分。實現代表整型座標。

點抗鋸齒的時候並不是所有的寬度都需要被支援,但1.0的寬度必須被支援。如果需要對一個不支援的寬度做抗鋸齒,那麼需要用最近鄰的支援的寬度來代替。支援的寬度範圍在這個範圍裡以均勻間距漸變的寬度都是依賴於執行的。範圍和漸變可以通過第6章介紹的查詢機制來獲得。例如,如果寬度範圍是0.1到2.0,而且漸變寬度是0.1,那麼寬度0.1,0.2,…,1.9,2.0都是支援的。

點精靈

當點精靈是enable,那麼點的光柵化為每個幀快取畫素生成一個片元,片元的中心在一個以(xw,yw)點為中心的方形區域中,區域的邊長等於當前點的尺寸。

各片元的相應的資料的決定方式和不抗鋸齒是一樣的。儘管如此,對於COORD_REPLACE_OES是TRUE的各個紋理單元,紋理座標都被點精靈的紋理座標代替。s座標從0到1的穿過點變化,水平的從左到右,t座標從0到1變化,垂直的從頂到底。r和q座標各自被常量0和1代替。

下面的公式用來計算s和t的座標:

{03774845-0722-4A8C-9DAA-C49EB286AFC8}

{8D8C1F55-1A48-4B9A-A8A3-F835734ADE2D}

size是點的尺寸,xf和yf是整型的片元視窗座標,xw和yw是精確的、非圓形的頂點視窗座標。

點精靈的寬度支援必須是支援抗鋸齒點的超集。不需要證明,這些寬度必須是相等的空間。如果一個不支援的寬度,它最近鄰的支援寬度將會用來替代它。

3.3.2點光柵化狀態

該狀態需要控制由浮點值定義的點寬度組成的點光柵化,三個浮點值定義了最小、最大點尺寸和點的淡出的起始值,三個浮點值定義了距離衰減係數,一個位指定是否抗鋸齒,一個位指定是否使用點精靈,一個位用於各個紋理單元的點精靈紋理座標替代模式。

3.3.3點多重取樣光柵化

如果MULTISAMPLE為enable,並且SAMPLE_BUFFERS的值是1,那麼點利用如下演算法來光柵化,不管點抗鋸齒(POINT_SMOOTH)是enable或disable。點光柵化利用一個或多個樣本點與中心在點(xw,yw)的區域為每個幀畫素生成一個片元。這個區域是一個圓,當POINT_SPRITE_OES是disable時與當前點有同樣的直徑,當POINT_SPRITE_OES是enabled時區域的邊長與當前點的寬度一樣。與樣本點相應的覆蓋值與區域的交叉為1,其它的覆蓋值是0。所有和各片元樣本相應的資料都是相應的點被光柵化得到的,除了當POINT_SPRITE_OES是enabled時的紋理座標;這些紋理座標的計算在3.3節中描述過了。

當POINT_SPRITE_OES是disabled時,點尺寸範圍和漸變數量和這些被支援的抗鋸齒點是等價的。當POINT_SPRITE_OES是enabled時,被設定的支援的尺寸和沒有多重取樣的點精靈是等價的。

http://www.moandroid.com/?p=1033

相關推薦

基礎知識——OpenGL ES Common/Common-Lite 規範版本 1.1.12

3.3點 點的光柵化由下兩個函式控制: Void  PointSize(float  size); Void  PointSizex(fixed  size); Size定義了點的尺寸。預設值是1.0。一個小於或等於0的值會導致錯誤INVALID_VALUE。 點

你確定懂使用者畫像?來基礎知識

大資料助力企業營銷的核心在於:在「合適的時間」,基於對使用者的瞭解,把你希望推送的東西通過「合適的載體」,以「合適的方式」,推送給「合適的人」。 一:什麼是標籤體系 說到客戶標籤,不得不說使用者畫像。使用者畫像,有個類似的概念叫「受眾定向」。“使用者畫像”既有人

基礎開發OpenGL ES 2.0學習筆記-Android篇

看到蘋果應用商店的火爆,也想做點東西放在上面,現在終於有點時間,可是發現用到的技術都不會,要學的東西很多呀(真是落伍了)~ 身為一個JAVA程式設計師,IOS完全不懂,Android只會一些皮毛,OpenGL更是一竅不通。 所有的東西肯定都是以JAVA思想來寫,摻雜著自己的

C#基礎知識-面向對象思想之繼承

添加 電視劇 一中 一段 public bsp 更多 cnblogs tin 上一篇的標題編程思想我覺得不是很符合主題,因為編程思想的範圍太大了,不僅僅是封裝 繼承 多態,所以比較符合主題的應該是面向對象思想。這一篇中將繼續敘述面向對象思想中的繼承。 從字面來看繼承表達的意

java基礎知識學習--------之枚舉類型1

blog 枚舉類型 csdn 相同 名稱 枚舉類 java string pac 枚舉類型的概念: 1 /** 2 * 目的:枚舉類型 3 * @author chenyanlong 4 * 日期:2017/10/22 5 * 網址:http://blo

Linux-dns基礎知識和BIND的簡單配置-2正向解析和反向解析

查詢 proc author 從dns服務器 access one 根目錄 自動生成 images DNS服務器基本配置 bind詳解:包名:bind進程:named協議:dns使用端口:53(tcp,udp)相關包:bind-chroot:將named進程的活動範圍限定在

Linux-dns基礎知識和BIND的簡單配置-3主從DNS服務器及轉發

-m 區域解析庫 com window 完成 file 發的 new 配置 rndc的相關知識:1.什麽是rndc:Remote Name Domain Controller,遠程名稱域控制器rndc 通過一個 TCP 連接與名字服務器通信,發送經過數字簽名認證的命令。在當

OpenGL ES 紋理壓縮之ETC

前面介紹了OpenGL ES2.0 支援的壓縮ETC1;下面我們來學習一下ETC2。 從opengl es3.0 開始支援ETC2紋理壓縮,而這種壓縮可以支援透明通道。 下面看如何使用 載入pkm檔案 public static byte[] loadDataFromAsse

JavaScript 基礎知識系列:數據類型及slice(8,-1)

測試 因此 針對 apply() 3.1 正則 gin fine ray 在基礎類庫中常見的slice(8,-1)是個什麽鬼?下面就從js數據類型說起。 javascrip數據類型有兩種: 基本類型:Undefined,Null,Boolean,Number,String

OpenGL ES SL 3.0規範中以前的attribute改成了in varying改成了out

                 OpenGL ES和OpenGL的圖示 關於“OpenGL ES SL 3.0規範中以前的attribute改成了in varying改成了out”這個問題,做一闡述:

OpenGL ES應用開發實踐指南android 卷筆記 第一章

public class FirstOpenGLActivity extends Activity { private GLSurfaceView glSurfaceView; //用於記住GLSurfaceView是否處於有效狀態 private boolean

linux基礎知識5——安裝、解除安裝軟體rpm、yum

rpm包 基本格式 firefox-52.7.2-1.el7.centos.x86_64 52.7.2-1 版本號 el7.centos.x86_64適用系統

GDI+基礎知識三 鋼筆(pen)和筆刷brush) 1

在談到繪製圖形時,鋼筆和筆刷是最基本的工具。在Graphics類中,大多數函式都需要使用Pen或Brush物件,在GDI+中,Pen類主要用於繪製直線、曲線和圖形的邊框,而Brush類以各種顏色和圖案填充或描繪圖形。這兩個類在GDI+中使用非常頻繁。 首先看Pen類,主要介

android studio | openGL es 3.0增強現實AR開發 (1) 建立一個openGL es 3.0開發環境

1.什麼是NDK,什麼是JNI? NDK:Native Development Kit(原生開發工具包), NDK允許使用者使用類似C / C++之類的原生程式碼語言執行部分程式。它包括下面的部分(1)從C / C++生成原生程式碼庫所需要的工具和buil

iOS下OpenGL ES 3.0程式設計入門:構建Hello World環境

OpenGL ES簡介:      OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三維圖形 API 的子集,針對手機、PDA和遊戲主機等嵌入式裝置而設計。該API由Khronos集團定義推廣,Khronos是一個圖形軟硬體

C# 基礎知識系列- 10 反射和泛型

0. 前言 這篇文章延續《C# 基礎知識系列- 5 反射和泛型》,繼續介紹C#在反射所開發的功能和做的努力。上一篇文章大概介紹了一下泛型和反射的一些基本內容,主要是通過獲取物件的型別,然後通過這個型別物件操作物件。這一篇介紹一個在反射中很重要的內容:特性,以及上一篇未完成的內容——泛型在反射中的引用。 1.

C# 基礎知識系列- 13 常見類庫介紹

0. 前言 每篇一個前言,介紹一下這一篇的內容。之前的內容都是針對某些知識點進行的介紹,這篇內容介紹一下實際開發中常用的一些類和名稱空間。這一篇是個連續劇,大概有個三四集。嗯,就是這樣。 1. System 名稱空間 System空間,是C#的基礎名稱空間,裡面定義了常用值和資料型別以及各種型別的基類,當然也

C# 基礎知識系列- 13 常見類庫介紹日期時間類

# 0. 前言 上一篇內容介紹了Console類和Math類,這篇內容著重介紹一下C#中時間日期的處理方式。 > 上一篇勘誤: 上一篇中關於靜態類沒有建構函式,這一表述有誤。正確的說法是C#中靜態類不包含常規建構函式,但可以新增一個靜態建構函式。 > 靜態建構函式與普通普通建構函式的區別是,靜態

Linux基礎管理——文件查找和壓縮高級使用方法

正則表達式 預覽 ges 模糊 [] 復制 pattern 臨時文件 mode 前言: GNU Linux操作系統的哲學思想之一即是一切皆是文件,因此使用必要的手段對文件進行搜索、匹配、處理、壓縮解壓,以實現快速定位、快速處置是十分必要的。1、文件搜索查找原理

Android選顯示一個可編輯文字的dialog解決失去游標問題

前言: 一個簡單的實現方式舉例。 描述: 需求上可能會提出這樣一點:點選一個按鈕,展示一個dialog彈窗,這個彈窗上有①可編輯文字,②確定按鈕,③取消按鈕。 具體操作: 那麼針對這個需求,我們常規性的話,應該建立一個工程,寫一個demo,建立一個BaseActivity介面,讓我們後續建