DirectX HLSL相关基础
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相关基础的更多相关文章
- iOS蓝牙开发(二)蓝牙相关基础知识
原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...
- Linux 相关基础笔记
html,body { } .CodeMirror { height: auto } .CodeMirror-scroll { } .CodeMirror-lines { padding: 4px 0 ...
- linux设备驱动归纳总结(二):模块的相关基础概念【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59415.html linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10 ...
- linux设备驱动归纳总结(一)内核的相关基础概念【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...
- 深入理解mysql之BDB系列(1)---BDB相关基础知识
深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...
- 【RAC】RAC相关基础知识
[RAC]RAC相关基础知识 1.CRS简介 从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...
- NIO相关基础篇一
转载请注明原创出处,谢谢! 说在前面 NIO相关知识是很多后续的一些基础知识,所以今天这篇文章仅仅是简单介绍,后续会继续有一到二篇相关NIO内容. 什么是NIO Java NIO( New IO) 是 ...
- NIO相关基础篇二
转载请注明原创出处,谢谢! 上篇NIO相关基础篇一,主要介绍了一些基本的概念以及缓冲区(Buffer)和通道(Channel),本篇继续NIO相关话题内容,主要就是文件锁.以及比较关键的Selecto ...
- NIO相关基础篇三
转载请注明原创出处,谢谢! 说在前面 上篇NIO相关基础篇二,主要介绍了文件锁.以及比较关键的Selector,本篇继续NIO相关话题内容,主要谈谈一些Linux 网络 I/O模型.零拷贝等一些内容, ...
随机推荐
- 让微信扫描直接下载你的APK
去年在做一个项目的时候,用微信扫描apk下载失效,显示空白页,网上找找发现在后面加一个字符串即可,于是简单搞定.过了一阵子,今年不行了,我的敏捷个人下载二维码也失效了,今天和大家说一下,现在如何解决这 ...
- window、document、html、body、element的事件属性比较
在分析jQuery的事件的时候有提到绑定事件的方式: Dean Edwards的跨浏览器事件绑定使用的方式是 element["on" + type] = handleEvent; ...
- Maven提高篇系列之(三)——使用自己的Repository(Nexus)
这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) ...
- Wo的书单
一个人,一生之中总要有几本证明自己的书. 2016---08 <ASP.NET MVC5 高级编程(第五版)> <数据结构(C语言第二版)>
- 【转】Xml序列化
XML序列化是将对象的公共属性和字段转换为XML格式,以便存储或传输的过程.反序列化则是从XML输出中重新创建原始状态的对象.XML序列化中最主要的类是XmlSerializer类.它的最重要的方法是 ...
- 为sql server 增加 parseJSON 和 ToJSON 函数
在SqlServer中增加Json处理的方法 Sql Server 存储非结构话数据可以使用xml类型,使用xpath方式查询,以前写过一篇随笔:Sql Server xml 类型字段的增删改查 除了 ...
- Array数组基础
数组的定义 数组(array)是按次序排列的一组值,单个值称为元素,它们的位置都有编号(从0开始).整个数组用方括号表示. var arr = ['a', 'b', 'c']; 上面代码中的a.b.c ...
- C++析构函数调用异常问题研究
最近又遇到一个奇葩问题,程序在自己的开发机器和某些机器上运行完好,但是在测试人员的几台机器上运行就直接推出了.开始以为是出现了野指针,因为delete野指针时程序会直接退出.代码翻来覆去过来即便确认没 ...
- 解决 WinXP下 libcurl.dll 无法定位程序输入点GetTickCount64问题
1. 问题描述 用 IDA 打开libcurl.dll 可以在导入表看到对 GetTickCount64的引用,在 xp 的kernel32.dll中没有 GetTickCount64, 所以会出现 ...
- 更新整理本人所有博文中提供的代码与工具(Java,2013.10)
为了更方便地管理博文中涉及的各种代码与工具资源,现在把这些资源迁移到 Google Code 中,有兴趣者可前往下载. Java 1.<高效 Java Web 应用开发框架 JessMA v3. ...