紋理對象和採樣器對象->CUDA3.0&OpenGL3.3

來源:互聯網
上載者:User

  在OpenGL3.3中先加入了採樣器對象( sampler object ),記得以前做OpenGL程式的時候,有時會遇到需要相同的紋理資料只是filter模式不同而已,但當時由於不支援多個不同屬性集共用同一個紋理對象,因此必須分別建立2個不同的紋理對象(當然使多個紋理對象共用同一個pixel buffer來達到此目的),顯得很笨拙和浪費。新加入的採樣器對象就使這個工作變得容易且合乎邏輯和直覺的“美感”

一個採樣器對象實際上時定義了諸如過濾,定址模式等屬性,但不包括紋理的寬度和高度。之所以這樣也是想當然的,因為通常採樣器可以為多個紋理對象共用,當這些紋理對象的紋理記憶體尺寸不同時也不會造成歧義。

 

使用過程大致如下:

glGenSamplers( 1, &samplerID );</p><p> glSamplerParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );</p><p> glSamplerParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );</p><p> //set orther sampler attributes</p><p> glActiveTexture( GL_TEXTURE0 );</p><p> glBindSampler( GL_TEXTURE0, samplerID );</p><p> glActiveTexture( GL_TEXTURE1 );</p><p> glBindSampler( GL_TEXTURE1, samplerID );</p><p> ...</p><p>

   

一個採樣器可以被多個紋理單元共用,且當該採樣器對象的屬性改變時,將影響所有與之關聯的紋理單元鎖綁定的紋理對象:如上代碼,將一個採樣器對象綁定到兩個不同的紋理單元,假設這兩個紋理單元分別於紋理對象tex0, tex1綁定,那麼tex1和tex2將具有相同的過濾和定址模式,且tex1,tex2不需要具有相同的尺寸。當關聯到到同一個採樣器對象的多個紋理具有相同的尺寸,資料類型以及通道數時(雖然這實際上不是必須的,因為諸如glTexImage2D這樣的函數提供了internalFormat和format參數可以確保程式正確執行,但出于謹慎和正確性考慮也應如此),那麼這個特點另一個隱藏的價值就是前面所說的可以共用同一個資料來源。

  這個特性也被引入到CUDA3.0中,

在PTX 1.*之前,需要這樣聲明紋理:

.tex .u32 texid</p><p>CUDA3.0為了向前相容也繼續提供支援,但不被推薦。3.0中紋理的使用分為統一模式( unified mode )和正交模式( independent mode ),在 PTX 中:</p><p>.target texmode_independent //if nessesary</p><p>.global .texref texRef;</p><p>.global .samplerref sampler={ addr_mode0=clamp, addr_mode1=clamp, filter_mode=linear };</p><p>...</p><p>//紋理對象texRef再從紋理內從取資料時將使用線性濾波和夾持定址模式(注意與紋理記憶體綁定的是texRef對象,</p><p>//sampler只是設定了與之關聯的紋理對象的屬性集)</p><p>tex.2d.v4.f32.f32 { %f0, %f1, %f2, %f3 }, [ texRef, sampler, { %r0, %r1 } ];<br />

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.