DirectX HLSL相关

  

  顶点着色器可用软件顶点运算方式来模拟,即在创建设备时,将设备行为标记设定为:

  D3DCREATE_SOFTWARE_VERTEXPROCESSING

  在记事本中编写着色器代码,使用函数D3DXCompileShaderFromFile对着色器文件进行编译。

  每个着色器都用常量表来存储其变量。

  为了使应用程序能够访问着色器的常量表,D3DX库提供了接口ID3DXConstantTable

  获取常量的句柄:

  D3DXHANDLE ID3DXConstantTable :: GetConstantByName (D3DXHANDLE hConstant,LPSTR pName);

  常量的设置:

HREST ID3DXConstantTable :: SetXXX(
LPDIRECT3DDEVICE9 pDevice,
D3DXHANDLE hConstant,
XXX value);

  如果要对数组进行设置:

HREST ID3DXConstantTable :: SetVectorArray(
LPDIRECT3DDEVICE9 pDevice,
D3DXHANDLE hConstant,
CONST D3DXVECTOR4* pVector,
UINT Count);

  设置常量的默认值:

  HRESULT ID3DXConstantTable:: SetDefaults(LPDIRECT3DDEVICE pDevice);

  

  

  顶点声明的创建:

HRESULT CreateVertexDeclaration(
CONST D3DVERTEXELEMENT9* pVertexElements,
IDirect3DVertexDeclaration9** ppDecl)

  创建一种效果:

HRESULT D3DXCreateEffectFromFile(
LPDIRECT3DDEVICE9 pDevice,
LPCTSTR pSrcFile,
CONST D3DXMACRO *pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT *ppEffect,
LPD3DXBUFFER *ppCompilationErrors);

  获取效果文件中的变量:

D3DXHANDLE ID3DXEffect::GetParameterByName(
D3DXHANDLE hParameter,
LPCSTR pName);

使用顶点着色器的步骤:

  1.编写顶点着色器程序,并进行编译。

  2.创建一个IDirect3DVertexShader9 接口的对象,以表示基于所编译的着色器代码的顶点着色器。

  3.用IDirect3DDevice9::SetVertexShader方法启用顶点着色器。

使用像素着色器的步骤:

  1.编写像素着色器程序并进行编译。

  2.创建一个IDirect3DPixelShader9接口对象,以表示基于经过编译的着色器代码的像素着色器。

  3.用IDirect3DDevice::SetPixelShader方法启用像素着色器。

使用一种效果:

  1.获取效果文件中您希望使用的手法(technique)的句柄。

  D3DXHANDLE ID3DXEffect ::GetTechniqueByName(LPCSTR pName);

  2.激活希望使用的手法。

  HRESULT ID3DXEffect :: SetTechnique(D3DXHANDLE hTechnique);

  (激活之前需要用当前设备对其进行验证)

  HRESULT ID3DXEffect ::ValidateTechnique(D3DXHANDLE hTechnique);

  3.启用当前处于活动状态的手法。

  HRESULT ID3DXEffect :: Begin(UINT * pPasses, DWORD Flags);

  4.对于活动手法中的每一条绘制路径,绘制几何目标体。

  一种手法(Technique)可能包含多条路径(pass),所以我们必须在每条绘制路径中将几何体绘制一次。

  HRESULT ID3DXEffect ::BeginPass(UINT Pass);

  HRESULT EndPass();

  5.终止当前处于活动状态的手法。

  HRESULT ID3DXEffect :: End(VOID);

DirectX HLSL相关基础的更多相关文章

  1. iOS蓝牙开发(二)蓝牙相关基础知识

    原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...

  2. Linux 相关基础笔记

    html,body { } .CodeMirror { height: auto } .CodeMirror-scroll { } .CodeMirror-lines { padding: 4px 0 ...

  3. linux设备驱动归纳总结(二):模块的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59415.html linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10 ...

  4. linux设备驱动归纳总结(一)内核的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...

  5. 深入理解mysql之BDB系列(1)---BDB相关基础知识

        深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富   一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...

  6. 【RAC】RAC相关基础知识

    [RAC]RAC相关基础知识 1.CRS简介    从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...

  7. NIO相关基础篇一

    转载请注明原创出处,谢谢! 说在前面 NIO相关知识是很多后续的一些基础知识,所以今天这篇文章仅仅是简单介绍,后续会继续有一到二篇相关NIO内容. 什么是NIO Java NIO( New IO) 是 ...

  8. NIO相关基础篇二

    转载请注明原创出处,谢谢! 上篇NIO相关基础篇一,主要介绍了一些基本的概念以及缓冲区(Buffer)和通道(Channel),本篇继续NIO相关话题内容,主要就是文件锁.以及比较关键的Selecto ...

  9. NIO相关基础篇三

    转载请注明原创出处,谢谢! 说在前面 上篇NIO相关基础篇二,主要介绍了文件锁.以及比较关键的Selector,本篇继续NIO相关话题内容,主要谈谈一些Linux 网络 I/O模型.零拷贝等一些内容, ...

随机推荐

  1. jsonp跨域问题

    JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式). 同源策略限制 ...

  2. Solr:文本分析

    文本分析时搜索引擎的核心工作之一,对文本包含许多处理步骤,比如:分词.大写转小写.词干化.同义词转化等.简单的说,文本分析就说将一个文本字段的值转为一个一个的token,然后被保存到Lucene的索引 ...

  3. Windows Azure HandBook (9) Azure性能测试(2)

    <Windows Azure Platform 系列文章目录> 在上一节中,笔者介绍了我们在Azure性能测试之前,首先需要提交<渗透性测试表> Windows Azure H ...

  4. java字符编码和oracle乱码

    编码问题我仍旧没搞懂,最根本的从哪里来就没搞懂.当页面发送请求,编码到后台是什么编码呢?好吧,我默认的都是utf-8.后台接收参数后,可以在控制台打印出来,我也不清楚是什么编码.然后,就是数据库问题. ...

  5. Elasticsearch聚合 之 DateRange日期范围聚合

    相比于range聚合,date range就是范围可以由时间来指定. 例如: { "aggs":{ "range":{ "date_range&quo ...

  6. linux service命令解析

      我们平时都会用service xxx start来启动某个进程,那么它背后究竟执行了什么? 其实service的绝对路径为/sbin/service ,打开这个文件cat /sbin/servic ...

  7. T-SQL删除重复数据

    数据重复分为两种情况:一种是每个字段都相同的完全重复,第二种是部分字段重复的结果集.比如Name字段重复,而其他字段不一定重复或者重复可以忽略. 第一种情况比较容易解决,使用select distin ...

  8. STOP:c0000218 {Registry File Failure}

    这几天够折腾的了,一台很老很老的服务器,在启动之后,一个阵列磁盘掉线了: 也许是磁盘坏了: 服务器4个硬盘做的是RAID1,正常来说,坏了其中一二个硬盘是没有问题的.现更换了一个好的硬盘之后,系统无法 ...

  9. 炉石传说 C# 开发笔记 (源代码整理公开)

    源代码已经整理过了,去除了不需要的项目. 注意:以前文章中出现过的Git已经变更过了,请以前关注过,Fork过的朋友,重新Fork一下. GitHub地址 卡牌XML文件的做成:(Git上面是没有XM ...

  10. 基于吉日嘎拉的OA协同办公模块重写

    这一个月的业余时间主要是在忙这个重构的事情,将吉日嘎拉自带的文档管理.公司公告.留言板.通讯录.周任务.考勤,全部重新建表,重构代码和UI. 目前根据中小企业常用的日常办公需要,搞定了公告栏.任务中心 ...