游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: 踏雪飞鸿

关于HLSL中 uniform 的问题

[复制链接]

32

主题

116

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2006-4-11 10:55:00 | 显示全部楼层

Re:关于HLSL中 uniform 的问题

感觉你这块代码好象没什么问题  能把调用shader的的那一块发上来吗,就是主循环那块.

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2006-4-11 17:31:00 | 显示全部楼层

Re: 关于HLSL中 uniform 的问题


//globel.h-----------------------------------------------
//这是几个全局变量       
D3DXHANDLE        g_hTechnique_body;
D3DXHANDLE        g_hTechnique_weiqi;
D3DXHANDLE        .......
D3DXHANDLE  g_hTechnique[] = {        g_hTechnique_body,
                                g_hTechnique_weiqi,

                                ......};



//main.cpp-----------------------------------------------
//下面这些在初始化D3D时调用,获得每个句柄

g_hTechnique_body                = g_pEffect->GetTechniqueByName("Render_body");
g_hTechnique_weiqi                = g_pEffect->GetTechniqueByName("Render_weiqi");
.......


//在Render里调用Fish类的RenderFish方法,将g_hTechnique作为参数传入
//然后Fish类的RenderFish调用RenderFrame,同时将g_hTechnique和g_pEffect作为参数传入

g_fish->RenderFish(g_pEffect, g_hWorld, g_hTransformation, g_hTechnique, g_hMotion, nFrequency, g_hPart);

//Fish.cpp-----------------------------------------------
//RenderFrame函数里进行判断

  1. if( 0 == strcmp(pFishFrame->Name, "body") )
  2. {
  3.         pEffect->SetTechnique(hTechnique[0]);
  4. }
  5. else if( 0 == strcmp(pFishFrame->Name, "weiqi") )
  6. {
  7.         pEffect->SetTechnique(hTechnique[1]);
  8. }
  9. else if( ...)
  10. {
  11.         .......
  12. }


  13. pD3DDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW);
  14. pD3DDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE);
  15. pEffect->SetMatrix(hWorld, &matTransWorld);

  16. ///////////////////////////////////////  with effect ////////////////////////////
  17. UINT nPasses, iPass;

  18. pEffect->Begin(&nPasses, 0);
  19. for( iPass = 0; iPass < nPasses; iPass++)
  20. {
  21.         pEffect->Pass(iPass);

  22.         //give the materials
  23.         for(DWORD i = 0; i < pMeshCtnr->NumMaterials; i++)
  24.         {
  25.                 m_pD3DDevice->SetMaterial(&pMeshCtnr->pMaterials[i].MatD3D);
  26.                 m_pD3DDevice->SetTexture(0, pMeshCtnr->ppTextures[i]);
  27.                 pMeshCtnr->MeshData.pMesh->DrawSubset(i);
  28.         }//for end

  29. }
  30. pEffect->End();
复制代码

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2006-4-11 17:37:00 | 显示全部楼层

Re:关于HLSL中 uniform 的问题

调试时没有办法监视part的值
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 04:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表