博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ID3DXEffect接口的几种使用方法……
阅读量:5888 次
发布时间:2019-06-19

本文共 1314 字,大约阅读时间需要 4 分钟。

1.semantics

比如在effect里这么写:

1 float4x4 matWorldViewProj : WORLDVIEWPROJ;

然后程序里可以这么获得这个变量的handle

1 D3DHANDLE handle = 2     m_pEffect->GetParameterBySemantic(NULL, "WORLDVIEWPROJ");

看来我之前把一些常用变量的定义写到define.fx里去然后#include"define.fx"来统一不同shader里相同用途的变量的方式或许该改改了呢。

2.annotations

1 texture Tex0 < string name = "tiger.bmp"; >;

 就是括在尖括号里的“初始化语句”而已。必须以分号结尾,只能与Technique、Pass或者最顶层的变量相关联。只能是字符串或者数值类型。在程序里用GetAnnotation或者GetAnnotationByName访问。

3. parameter blocks

1     m_pEffect->SetTechnique( "RenderScene" );2 3     m_pEffect->BeginParameterBlock();4     D3DXVECTOR4 v4( Diffuse.r, Diffuse.g, Diffuse.b, Diffuse.a );5     m_pEffect->SetVector( "g_vDiffuse", &v4 );6     m_pEffect->SetFloat( "g_fReflectivity", fReflectivity );7     m_pEffect->SetFloat( "g_fAnimSpeed", fAnimSpeed );8     m_pEffect->SetFloat( "g_fSizeMul", fSize );9     m_hParameters = m_pEffect->EndParameterBlock();

设置effect的变量的方法。但是这种方法只能在ID3dXEffect::Begin()和ID3DXEffect()之外使用。

4.文档中关于Handles的介绍中有说:

Performance tip At the start of your application, perform an initialization pass to generate handles from the strings. From that point on, use only handles. Passing in strings instead of generated handles is slower.

也就是说,我之前那种把GetParameterByName和SetParameterXXX封装在一个函数里的方式会影响一定的效率……

 

 

 

转载于:https://www.cnblogs.com/snafloda/archive/2013/01/21/2869135.html

你可能感兴趣的文章
AWK手册
查看>>
项目简介
查看>>
驼峰风格字符串转换为下滑线风格字符串
查看>>
ios图片倒影效果的实现
查看>>
SPSS Modeler K-Means聚类结果评价
查看>>
easyui left-tabs 左侧的tabs
查看>>
图论中DFS与BFS的区别、用法、详解?
查看>>
Color.js增强你对颜色的控制
查看>>
x == (x = y) 不等于 (x = y) == x ?
查看>>
制作一个 JavaScript 小游戏
查看>>
GEC要上线了!
查看>>
HTML+CSS实现div的高度自适应填满剩余空间的7种方法
查看>>
关于svn遇到的问题
查看>>
Running CoreOS on Vagrant
查看>>
程序员的工作方法--接到一份工作后应该怎么做。
查看>>
安全的结束一个线程
查看>>
Android NDK Socket(POSIX Socket Api)编程
查看>>
cordova build ios error
查看>>
windows环境python idle修改注册表
查看>>
ubuntu14.04 openframeworks
查看>>