程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Shader學習心得(1):工欲善其事,必先利其器-FX Composer 2.5

Shader學習心得(1):工欲善其事,必先利其器-FX Composer 2.5

編輯:關於C++

以下的教程由烏龜和毛驢的技術小屋原創,轉載請注明原始文章出處,並保留這段話,請勿 侵權.

1.1 序言

以前一直覺得,學習shader最好是在Visual Studio的環境下進行學習,因為這樣不僅能夠學到DirectX和C++的一些使用方法,而且對於 Shader在實際應用時也有好處.結果今天就碰得灰頭土臉的.

1.2 碰壁過程

下面是我的程序段:

ID3DXEffect* g_pEffect = NULL;

3DXCreateEffectFromFile( g_pd3dDevice, "simple.fx", NULL, NULL, dwShaderFlags, NULL, &g_pEffect, NULL );

下面 是我的.fx程序:

float4x4 WorldViewProj : WorldViewProjection;

  float4 mainVS(float3 pos : POSITION) : POSITION{

      return mul(float4(pos.xyz, 1.0), WorldViewProj);

  }

  float4 mainPS() : COLOR {

       return float4(1.0, 1.0, 1.0, 1.0);

  }

  technique technique0 {

     pass p0 {

         CullMode = None;

          VertexShader = compile vs_1_1 mainVS();

         PixelShader = compile ps_1_1 mainPS();

     }

  }

編譯的時候沒有提示錯誤,也可以運行.但是在運行中出錯,沒有出錯的信 息.

對於幾乎沒有在VS C++環境下編程的我來說.這是非常抓狂的事情.在網上找了下 代碼,把我的程序改了一下,可以看到錯誤信息了.下面是修改後的程序段

ID3DXBuffer* error_buffer;

    hr = D3DXCreateEffectFromFile( g_pd3dDevice, "simple.fx", NULL, NULL, dwShaderFlags, NULL, &g_pEffect, &error_buffer );

     if (error_buffer)

    {

        MessageBox(NULL, (char *) (error_buffer->GetBufferPointer()), "ERROR", MB_OK);

         error_buffer->Release();

    }

     if(FAILED(hr))

    {

        MessageBox(NULL, "D3DXCreateEffectFromFile() - FAILED", "ERROR", MB_OK);

        return false;

}

下面是出錯的信息:

大概是說現在PS_1_X的版本不被支持了.於是乎,我想到,如果還有一些其他的疑難雜症,如 果我想調試shader,如果我想很快的能夠在修改shader後,把matieral賦值,如果我想方便的建 立View和Projection矩陣.那VS顯然是不能勝任的.

花了點時間找了找.使用NVIDIA的 FX Composer 2.5是一個很好的選擇.它支持D3D10,而且有一個類似於3D MAX的窗口,可以拖動 物體,這樣也不用很麻煩的去建立View和Projection矩陣.操作也很方便,比ATI的那個工具感 覺還好一點.用來學習Shader是很不錯的選擇(廣告啊)

在NVIDIA的網站上可以方便的 下到它

http://developer.download.nvidia.com/tools/Shader_Debugger/FX_Composer2_Sh ader_Debugger_Bundle_2.51.0827.1525.exe

安裝時注意要選擇No commercial,這樣 就不會被要求輸入序列號了.

1.3 建立我們的第一個Shader

選擇File-New Project:

Step 1: 選擇 ,當你選擇其他 的東西茶壺什麼的也可以.也可以選擇其他的.x文件,這樣在右下角就可以看到一個白色的小 球了

Step 2: 選擇 ,選擇HLSL FX. 選擇下一步,然後選擇Empty,選擇finish.這樣左上角的Materials框裡面就有一個白圓 了.

Step 3: 把白圓拖動到右下角的球上,把特效和物體關聯,這個特效文件的運行效 果如下:

是不是 感覺到非常的”所見即所得”?

如果你想看看這個shader文件,在白圓上面 按右鍵,選擇edit,顯示出的就是.fx文件的源程序,把這個程序復制到vs裡面,進行了相關了初 始化和設置參數操作後,也可以正常了使用了.

Fx Composer 2.5的其他情況你也可以 自己看看安裝後的幫助文件,我這裡就不說太多了(其實我也是今天才開始用的,以後有了心得 再慢慢寫出來 :-D)今後的重點主要放在shader的編寫上.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved