2013-04-10 88 views
3

我需要同時將Texture2D和TextureCube傳遞給我的像素着色器。綁定Texture2D和TextureCube

我以前發送的紋理數組,但發現我無法發送textureCube以及這個。

This questionThis question提到了一種叫做綁定的東西,但是我無法找到任何關於此的更多信息,並想知道是否有人能夠指出我解決此問題的方法。

謝謝。

編輯---- 試圖執行凱撒的建議後,下面的代碼會導致錯誤。當着色器試圖讀取 第一次機會異常,這個問題行是根本

Texture2D texture04 : register(t0); 

在這之後這會導致系統崩潰:

D3DX11CompileFromFile("Data/Shaders/Effects.fx", 0, 0, "VS", "vs_4_0", 0, 0, 0, &VS_Buffer, 0, 0); 
D3DX11CompileFromFile("Data/Shaders/Effects.fx", 0, 0, "PS", "ps_4_0", 0, 0, 0, &PS_Buffer, 0, 0); 
d3dDevice_->CreateVertexShader(VS_Buffer->GetBufferPointer(), VS_Buffer->GetBufferSize(), NULL, &VS); 

重新編輯---- 改寫了確切的代碼......這次工作,不知道爲什麼。非常感謝你。

回答

6

你可以像這樣

Texture2D texture04 : register(t0);  
TextureCube myCubeMap : register(t1); 

t0t1在着色器文件中註冊多個紋理指定登記號,並讓你用這個數字作爲第一個參數爲PSSetShaderResources

當你要設置t0在你的C++代碼,你做它像這樣

pImmediateContext->PSSetShaderResources(0, 1, &(texture)); 

的當你想設置t1你做它像這樣

pImmediateContext->PSSetShaderResources(1, 1, &(texture)); 
+0

的線條寄存器添加到我的像素着色器失敗d。 Texture2D texture04:register(t0); – Questioning 2013-04-10 19:29:08

+0

@Dino什麼是錯誤? – Caesar 2013-04-10 23:59:52

+0

我更新了主要帖子後,當我修復它,但忘了再次回覆你/刪除上面的評論。它現在已經修復了!非常感謝您的幫助。 – Questioning 2013-04-11 09:53:05