2011年9月2日
摘要: 《Introtod3d10》里面关于hlsl的structurepacking有这样一段描述structLight{Light(){ZeroMemory(this,sizeof(Light));}D3DXVECTOR3pos;floatpad1;//notusedD3DXVECTOR3dir;floatpad2;//notusedD3DXCOLORambient;D3DXCOLORdiffuse;D3DXCOLORspecular;D3DXVECTOR3att;floatspotPow;floatrange;};Theissuewiththe“pad”variablesistomaketheC 阅读全文
posted @ 2011-09-02 21:59 Bester 阅读(297) 评论(0) 推荐(0) 编辑
  2011年8月18日
摘要: 最近遇到几个Directx11的bug,有些最后弄懂了,有些没有,记录下避免下次再犯错。 一个bug是在Directx11推荐用的数学库xnamath,里面的XMCOLOR居然无法和HLSL里面的float4绑定,如果你要用颜色的变量和HLSL的float4绑定,必须得用XMFLOAT4,或者Directx10的数学库里面的D3DXCOLOR都可以。(D3DXVECTOR4没测试过,可能也可以)。 一个bug很弱智,如果不用Effect框架,那么在Vertex shader里面VSSetConstantBuffers绑定了一个constant buffer等,在Pixel shader如果用. 阅读全文
posted @ 2011-08-18 19:34 Bester 阅读(350) 评论(0) 推荐(0) 编辑
摘要: main是C/C++的标准入口函数名WinMain是windows API窗体程序的入口函数。(int WINAPI WinMain()) 中 WINAPI是__stdcall宏,在windef.h中定义的。_tmain _tWinMain 是Unicode版本函数别名,对应与wmain和wWinMain。*****************************************************************************************中有如下几行:#ifdef _UNICODE#define _tmain wmain#define _tWinMa 阅读全文
posted @ 2011-08-18 10:48 Bester 阅读(177) 评论(0) 推荐(0) 编辑
  2011年8月17日
摘要: 很多刚开始写HLSL,或者cg,glsl等shader语言的朋友一定会有个小困惑,编辑器不支持这些shader语言的关键字,在记事本中跟文本一样全是一个颜色的写,很容易犯错。下面以HLSL为例(其他类似)说下,如何使得vs能够识别并高亮这些shader的关键字。 主要有三个办法。 一个是利用Nvidia的CG: CG又分为两个方法: (一)是手工修改注册表: 1.到http://developer.nvidia.com/object/cg_toolkit.html#downloads下载一个Cg(不大,20M而已)。 2.装上Cg后找到NVIDIACorporation\Cg\msdev_s. 阅读全文
posted @ 2011-08-17 16:24 Bester 阅读(1182) 评论(0) 推荐(0) 编辑
  2011年8月13日
摘要: 最近因为一个比赛项目用了段时间的PhysX,来总结下如何在Directx11中使用PhysX吧。 首先是PhysX的部署。这个在PhysXSDK的第一页的Installation也有讲了。 1:在PhysX的SDK里面找到PhysXCore.dll,PhysXCooking.dll,PhysXDevice.dllandthecudartXX_XX_X.dll(e.g.cudart32_30_9.dllorcudart_64_30.9.dll),PhysXLoader.dllPhysXLoader.lib几个库,放到你自己工程的workingdirectory下。 2:在Linker->I 阅读全文
posted @ 2011-08-13 16:09 Bester 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 最近尝试用了下Directx下的Effect框架,作为一初学者初学者,说下为什么我们要使用Effect框架及其好处吧。 首先Effect最大好处的就是简单,使得编写Shader绘制的程序工作量大大下降。如果不用Effect框架,那么一个个VertexShader,GeometryShader和PixelShader都要一遍遍的先用D3DX11CompileFromFile得到二进制代码,再分别调CreateVertexShader,CreateGeometryShader和CreatePixelShader等创建ID3D11VertexShader,ID3D11GeometryShader,I 阅读全文
posted @ 2011-08-13 11:10 Bester 阅读(280) 评论(0) 推荐(0) 编辑
  2011年6月17日
摘要: OpenCL作为一种开放的并行加速计算标准,已经得到了AMD、Intel、NVIDIA等芯片业巨头和大量行业厂商的支持,但唯独缺少了微软。就在AMD Fusion开发者峰会上,微软终于拿出了自己的反击武器:“C++ AMP”,其中AMP三个字母是“accelerated massive parallelism”的缩写,也就是加速大规模并行的意思。C++ AMP是微软Visual Studio和C++编程语言的新扩展,用于帮助开发人员充分适应现在和未来的高度并行和异构计算环境。它使用C++语言的句法,将随同下个版本的Visual Studio一同发布,不过可能会在今年晚些时候放出测试版本。令人瞩 阅读全文
posted @ 2011-06-17 11:42 Bester 阅读(145) 评论(0) 推荐(0) 编辑
  2011年5月22日
摘要: 前些天在看微软的一个HandsOnLab和《IntrotoD3d10》的时候,发现一个挺好的设计框架,简洁优美,很方便初学者搭建自己一些简单的绘制程序,修改下后拿来分享下。关键是Run()和里面的Setup()和MessageLoop()。classBasicDraw{public:HRESULTRun();BasicDraw();~BasicDraw();private:voidInitializeApp();voidCleanUp();HRESULTSetup();HRESULTCreateDisplayWindow();staticLRESULTCALLBACKMyWndProc(HWN 阅读全文
posted @ 2011-05-22 22:36 Bester 阅读(279) 评论(0) 推荐(1) 编辑
  2011年5月20日
摘要: 就一个排序,重温了一次快排。#include using namespace std;void Exchange(int arr[],int i,int j){int tmp=arr[i];arr[i]=arr[j];arr[j]=tmp;return;}int Partition(int arr[],int start,int end){int pData=arr[end];int i=start;for(int j=start;j=r)return ;int q=Partition(arr,p,r);QSort(arr,p,q-1);QSort(arr,q+1,r);return ;}in 阅读全文
posted @ 2011-05-20 17:48 Bester 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 重构二叉树,已知前序和中序,输出后序。#include #include using namespace std;struct treeNode{treeNode();char letter;treeNode* left;treeNode* right;};treeNode::treeNode(){left=NULL;right=NULL;}void AddNode(treeNode* node,bool left,bool right,char ch){treeNode* tmpNode=new treeNode;tmpNode->letter=ch;if(true==left){no 阅读全文
posted @ 2011-05-20 17:46 Bester 阅读(111) 评论(0) 推荐(0) 编辑