在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在計算機圖形學中GPGPU需要用到的OpenGL概念

電子工程師 ? 來源:koibiki博客 ? 作者:koibiki博客 ? 2022-10-18 15:04 ? 次閱讀

在計算機圖形學中,紋理映射是實現復雜表面效果的高效方法,即以較小的計算量就可以實現較為逼真的模芯效果。在GPGPU中,紋理映射也是一個至關重要的概念。由圖形API實現經典GPGPU的原理可以總結為:用紋理映射實現的科學計算(computation by texturing)。

1、紋理映射的概念

在渲染對象過程中,最簡單的方式是給各個對象表面顯式地涂上各種顏色。但這樣顏色會非常單一。同時,讓設計者手動地給每個像素定義不同顏色顯然也不可能。于是,紋理映射就成為一個生成較高質量三維表面地高效地這種方案。

紋理映射的原理:首先,由應用程序生成頂點組成的三維模型。然后這些頂點被網格化或三角化,變成若干相連的平面。這是,可以選擇使用一些預定好的二維位圖,在定義好模型后,將這些位圖貼在對象表面。這個過程稱為紋理映射。映射,也就指的是通過空間中的頂點坐標與紋理坐標之間的函數關系,用紋理圖為頂點賦值。

2、幾何圖元

幾何圖元是組成人們熟知地三維模型地基本元素,如點、直線、三角形等,通常由一個頂點列表組成。為了標志頂點列表地起始和終止位置,需要使用函數glBegin()和glEnd()。glBegin()地形參是一個幾何圖元對象地名稱。

glBegin(GL_POLYGON); //GL_POLYGON 是多邊形圖元地標識。這里表示一個邊長為2的二維正方形 glVertex2f(-1.-, -1.0); glVertex2f(-1.0, 1.0); glVertex2f(1.0, 1.0); glVertext2f(1.0, -1.0); glEnd();

常用OpenGL幾何圖元類型

幾何圖元類型 注釋
GL_POINTS 單個頂點集
GL_LINES 多組雙頂點線段
GL_POLYGON 單個簡單填充凸多邊形
GL_TRIANGLES 多組獨立填充三角形
GL_QUADS 多組獨立填充四邊形
GL_LINE_STRIP 不閉合折線
GL_LINE_LOOP 閉合折線
GL_TRIANGLE_STRIP 線性連續填充三角形串
GL_TRIANGLE_FAN 扇形連續填充三角形串
GL_QUAD_STRIP 連續填充四邊形串

同時如果我們給同一個圖元不同頂點指定了不同顏色,OpenGL默認對策是對圖元進行平滑著色,即根據頂點顏色對其他部分線性插值。紋理坐標也是每個頂點的屬性,可以使用函數glTexCoor()指定。

幾何圖元可以分為填充圖元和非填充圖元兩類。直線是非填充圖元,其不具備“內部”。二維多邊形是一種填充圖元,其“內部”可以定義。OpenGL中,填充圖元有三種方式,即頂點方式、邊線方式和填充方式。頂點方式是用頂點組成的點集來繪制;邊線方式是僅繪制多邊形的邊線,其“內部”沒有定義。填充方式是對多邊形進行填充,此時邊線在填充時也是內部的一部分。

3、位圖與流水線

位圖是另一種基本圖元,也稱為離散圖元。它是一個由向量組成的矩陣。向量的元素數就是位圖的通道數,比如彩色位圖通常是RGB,或者加入透明通道為RGBA。

與幾何圖元一樣,位圖也是圖形應用程序可以生成的數據形式。同樣會進入圖像流水線。但是,位圖已經是可以存儲在幀緩存里的二維離散圖元,它不用流經頂點處理單元,而是從另一條并行的流水線流入,在片段處理階段和流過頂點處理單元的數據匯合。

OpenGL對像素的讀寫,具體有三種操作:

把像素塊從幀緩存讀到住存儲器中,對應OpenGL函數是glReadPixels()

把像素塊從主存儲器寫入光柵化器中,對應OpenGL函數是glDrawPixels()

把像素塊從幀緩存復制到光柵化器中,對應OpenGL函數是glCopyPixels()

基本流程如圖:

注意,像素塊在OpenGL中的存儲方式可能和在主存儲器中的不同,如像素中各分量的排列順序。如果想要將像素塊從幀緩存的一部分轉移到另一部分,就需要先讀出像素,然后在另一處寫入。可以使用glReadPixels和glDrawPixels,但頻繁在主機與設備間傳輸數據過于低效,推薦使用glCopyPixels。

4、紋理圖

可以將紋理圖看成一張顏色查找表,根據每個頂點的紋理坐標可以從紋理圖上查到該頂點的顏色。通常紋理圖和幀緩存中的位圖一樣,都是由離散的像素構成。為了區分,我們將紋理圖上的一個像素稱為紋理元。事實上,由于紋理坐標都是經過插值和采樣計算得到的,所以在紋理圖中查找顏色并不是連三的。而是根據相鄰紋理元的顏色插值或最近鄰得到的。因此可以將紋理圖看成連續的數組,它的二維坐標都是在實數域內得到定義的。

OpenGL中默認的紋理圖都是邊長為1的正方形。這樣避免了使用明確坐標,用戶就可以在不必知道紋理圖尺寸的情況下使用紋理。但對GPGPU編程卻產生了不便。如,需要知道一個長度為512的數組的第100個元素,用C語言查找只需要使用下標99即可,但OpenGL需要使用100.0/512.0=0.1953125.

OpenGL中設置紋理圖的函數為glTexImage2D(),一個指定4個分量、每個分量為1個字節的二維紋理圖:

#define nImageWidth 64 #define nImageHeight 64 static Glubyte ubImage[nImageHeight][nImageWidth][4]; //填充數組 glEnable(GL_TEXTURE_2D); glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,nImageWidth,nImageHeigght,0,GL_RGBA,GL_UNSIGNED_BYTE, ubImage);

當不需要對整幅紋理圖進行操作時,可以使用函數glTexSubImage2D()來定義一幅子紋理圖。

當使用glTexImage2D時,OpenGL就會在顯卡上分配一塊紋理緩存,把紋理圖從內存轉移到紋理緩存中。如果已經調用過glTexImage2D,更新紋理圖最好使用glTexSubImage2D,這樣就不用在顯卡上重新分配存儲空間,如果改動較小也不用將整個紋理圖傳輸到顯卡上,以提高效率。這也是GPGPU的典型做法。

5、紋理坐標

將紋理圖映射到三維表面是通過為每個頂點定義紋理坐標實現的。與頂點坐標一樣,是一個四維向量[s,t,r,q].除第一個分量外(使用時,用戶至少需要使用一維紋理坐標,因而s一定由用戶設定),其他分量的默認值為:t=0,r=0,q=1。設置紋理坐標函數為glTexCoord()。

6、紋理參數

在紋理映射前,還需要對一些參數進行設置。

1. 越界取值:當指定的紋理坐標值大于實際的取值范圍時,即超出紋理圖的邊界時,GL_TEXTURE_WRAP系列參數用來指定這種情況下,OpenGL采取的措施。總的來說,OpenGL一般有兩種策略。一種是用鉗位算法(clamp)將坐標值限制在某個區間內,即大于該范圍的取值就鉗定在區間上限,小于時就鉗定在區間下限。另一種時在邊界以外重復邊界內的取值。

2. 放大/縮小紋理圖

7、映射參數

此外,還需要確定映射過程中紋理圖與表面的相互作用,即處理與表面已有顏色的相互關系。通過glTexEnv進行。

8、紋理對象

如果用戶同時使用多塊紋理,則頻繁使用glTexImage來加載過于低效。OpenGL提供了紋理對象來管理紋理,這樣多塊紋理可以在紋理緩存中并存。紋理緩存不足時,OpenGL會按照優先級管理紋理,使加載紋理次數盡可能少。

首先,需要調用glGenTextures()來建立一個紋理對象。其會返回n個有效的整數紋理標識符。這些整數被保存在textureNames數組中。這些返回的紋理表示符都是目前OpenGL未被占用的,不一定是連續的整數。0是OpenGL預留的紋理標識符,不會被分配。分配到的紋理對象的標識符,只表示該標識符有效,而紋理暫時還是無效的。使用前,用戶需要將它與某種類型的紋理綁定起來glBindTexture()。同時相關程序結束后,可以使用glDeleteTextures()刪除。

9、紋理單元

紋理單元與多重紋理映射息息相關。在圖形任務中,有時需要將多塊紋理映射到同一表面,映射的結果是多重紋理融合的效果。OpenGl使用紋理單元來管理多重紋理映射中使用的不同紋理圖。一個紋理單元就是一個獨立的紋理,除了紋理圖本身外,它還保存了紋理坐標和紋理參數等一切使用該紋理需要的信息。同一紋理圖也可以被多個紋理單元使用。

多重紋理映射時,可以使用OpenGL常量GL_TEXTUREi來選擇使用哪個紋理單元,其中i是0到31的整數。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1501

    瀏覽量

    62018
  • OpenGL
    +關注

    關注

    1

    文章

    85

    瀏覽量

    29254
  • 計算機圖形學

    關注

    0

    文章

    12

    瀏覽量

    8125
  • 紋理映射
    +關注

    關注

    0

    文章

    4

    瀏覽量

    1762
  • GPGPU
    +關注

    關注

    0

    文章

    29

    瀏覽量

    4903
收藏 人收藏

    評論

    相關推薦

    計算機圖形學年鑒:研究現狀、應用和未來

    計算機圖形學是支持各種影視特效、三維動畫影片、計算機游戲、虛擬現實以及大家手機上各種照片視頻美化特效背后的技術基礎,本文中,微軟亞洲研究院網絡圖形
    發表于 01-03 10:44 ?1175次閱讀

    計算機圖形學研究和應用

    計算機圖形學研究和應用論文關于計算機圖形學的發展及應用探究  【摘要】計算機圖形學經過三十多年的
    發表于 08-31 08:05

    計算機圖形學定義

    計算機圖形學定義:計算機圖形學是研究怎樣用數字計算機生成、處理和顯示圖形的一門學科。
    發表于 08-31 07:07

    計算機圖形學原理教程(Visual+C++版)

    計算機圖形學原理教程(Visual+C++版)
    發表于 07-15 16:11 ?0次下載

    什么是計算機圖形學

    什么是計算機圖形學 計算機圖形學(Computer Graphics,簡稱CG),是研究用計算機來處理
    發表于 05-24 23:26 ?2714次閱讀

    基于OpenGL計算機圖形學教學改革探索

    針對傳統的本科計算機圖形學教學存在的問題,提出了基于OpenGL實驗平臺的教學改革方法,設計了基于OpenGL
    發表于 07-27 16:08 ?21次下載

    計算機圖形學講義

    計算機圖形學是利用計算機研究圖形的表示、生成、處理、顯示的學科。
    發表于 03-22 16:33 ?0次下載

    MFC編程基礎-圖形學

    計算機上的上位機制作工具語言之MFC編程基礎-圖形學
    發表于 09-01 15:01 ?0次下載

    計算機圖形學的非線性投影研究

    隨著科學技術的不斷發展,非線性的投影方法由以前的小范圍使用,發展到了包括計算的機圖形學、圖像處理、地圖設計、攝影,畫畫等領域中。為了使各需要投影技術的領域提供更好的技術支持,文中提出
    發表于 11-11 12:08 ?9次下載
    <b class='flag-5'>計算機</b><b class='flag-5'>圖形學</b>的非線性投影研究

    清華AMiner團隊發布計算機圖形學研究報告

    清華AMiner團隊近日發布新一期研究報告——《計算機圖形學研究報告》,報告全文共 53 頁,從概念、技術、人才、會議、應用及相應趨勢詳細介紹了計算機
    的頭像 發表于 08-20 15:31 ?3150次閱讀
    清華AMiner團隊發布<b class='flag-5'>計算機</b><b class='flag-5'>圖形學</b>研究報告

    計算機圖形學總覽:圖像和圖像的概念辨析

    計算機圖形學計算機視覺是同一過程的兩個方向。計算機圖形學將抽象的語義信息轉化成圖形
    的頭像 發表于 08-21 09:10 ?6586次閱讀

    2018計算機圖形學AMiner的研究報告詳細資料免費下載

    計算機圖形學計算機科學領域的重要研究方向之一,圖形學技術也社會生活和生產的各個領域得到應用。本研究報告對
    發表于 12-25 08:00 ?0次下載
    2018<b class='flag-5'>計算機</b><b class='flag-5'>圖形學</b>AMiner的研究報告詳細資料免費下載

    計算機圖形學 數字圖像處理和計算機視覺是什么?

    計算機圖形學(Computer Graphics)講的是圖形,也就是圖形的構造方式,是一種從無到有的概念,從數據得到圖像。是給定關于景象結構
    的頭像 發表于 04-04 17:34 ?4864次閱讀
    <b class='flag-5'>計算機</b><b class='flag-5'>圖形學</b> 數字圖像處理和<b class='flag-5'>計算機</b>視覺是什么?

    計算機圖形學到人工智能

    GPU的硬件設計上引入了圖形管線,使得各任務可以通過流水線進行并行處理。同時通過可編程的著色器,使得GPU硬件能夠根據圖形學算法更好的被使用。
    的頭像 發表于 03-02 16:17 ?1141次閱讀
    從<b class='flag-5'>計算機</b><b class='flag-5'>圖形學</b>到人工智能

    計算機圖形學:探索虛擬世界的構建之道

    的應用無處不在,從電影特效到建筑設計,從游戲開發到虛擬現實,它都在不斷地推動著視覺藝術和技術的邊界。一、基礎概念在深入了解計算機圖形學之前,我們需要了解一些基礎
    的頭像 發表于 05-07 08:27 ?415次閱讀
    <b class='flag-5'>計算機</b><b class='flag-5'>圖形學</b>:探索虛擬世界的構建之道
    主站蜘蛛池模板: 五月网婷婷| 久久久久久久久国产| 久久系列| 视频一区二区在线| 老师叫我下面含着精子去上课| 99视频热| 免费观看黄色网址| 天天爱天天干天天| 一区在线播放| 日本特级淫片免费看| 欧美日韩国产一区| 五月天婷婷基地| 亚洲日本一区二区三区在线不卡| 在线www| 免费看一毛一级毛片视频| 亚洲播播| 亚洲高清一区二区三区四区 | 91极品女神嫩模在线播放| 一级片aaa| 日本www免费| 高清一级做a爱视频免费| 天天插日日干| 久热久热| 久久久噜久噜久久综合| 亚洲精品视频在线| 亚洲欧美日韩特级毛片| 欧美日韩一区二区三区视视频| 天天干天天舔天天射| 国产亚洲欧美一区| 国产一区二区三区欧美精品| 网站在线播放| 美女啪啪91| 日韩黄a级成人毛片| 天天干影视| 一级特黄aa大片免费| 艹逼免费视频| jlzzjlzz亚洲大全| 四虎影院成人在线观看| 天天干夜夜噜| 亚洲性久久久影院| 午夜一级精品免费毛片|