书法字典:https://www.shufadict.com

2010年3月4日

only static const integral data members can be initialized within a class

摘要: 翻译一下:只有静态整型常量数据成员能在类中初始化那么哪些数据属于整型呢,下面的都是charshortint longlong long所以只有以上这些类型的数据能在类中初始化,也就是你可以这样写Code highlighting produced by Actipro CodeHighlighter... 阅读全文

posted @ 2010-03-04 09:32 翰墨小生 阅读(4545) 评论(1) 推荐(0) 编辑

2010年3月2日

Terrain walking

摘要: 需要注意到几个问题1. 如果行走时出现抖动,那么可能是地图高度差太大,也就是忽高忽低。2. 插值不够狠,多几次,使地图变得smooth一些3. 当高度差改变一定值时在更新当前高度,比如至少改变1.0时才更新,比如前一次的高度是2.0, 现在的高度是1.5,那么差是0.5,太小,不做改变,当前高度仍保持为2.0,但是差要累加。当累加值超过1.0时,再改变。比如前一次高度是2.0, 此次高度是1.5,... 阅读全文

posted @ 2010-03-02 09:49 翰墨小生 阅读(361) 评论(0) 推荐(0) 编辑

2010年3月1日

新版SDK发布时该做什么?

摘要: 当一个新版本的DirectX SDK发布时,第一时间以新版SDK为基础编译你的程序,如果没有错误,则不需修改。如果有错误,则需要进行相应的升级工作,比如下面这个例子,如果你用Auguest 2009的SDK编译以前的程序,会遇到如下错误fatal error C1083: Cannot open include file: 'dxerr9.h': No such file or directory... 阅读全文

posted @ 2010-03-01 10:48 翰墨小生 阅读(2221) 评论(2) 推荐(0) 编辑

2010年2月26日

骨骼动画

摘要: 制作骨骼动画 从max中 1。首先要得到各个关节(bone)的链接关系(父子关系) 2。得到每个关节(bone)在每帧的矩阵 游戏中 1。组合得到各个关节 2。动画实际上就是每帧设置各个关节的矩阵 。一套骨骼应该有一个root节点用来控制translate,其他的关节(bone)只有rotate 。关节(bone)的矩阵是local的,在送给directx的时候需要和父关节相乘。 。max中的骨骼... 阅读全文

posted @ 2010-02-26 16:30 翰墨小生 阅读(778) 评论(0) 推荐(0) 编辑

2010年2月21日

Shortcuts

摘要: General选择文件/文件夹/图标按第一个文件名字母搜索  F3重命名选中文件-F2显示开始菜单Ctrl + Esc或Win键创建桌面快捷方式按Alt并拖拽指定文件到桌面拷贝          直接拖拽增加拷贝按Ctrl并拖拽最小化所有窗口Win + D运行Win + RWord选择文本  Shift+方向键更换字体Ctrl + Shift + F增大字体Ctrl + Shift + >缩... 阅读全文

posted @ 2010-02-21 10:22 翰墨小生 阅读(428) 评论(0) 推荐(0) 编辑

2010年2月1日

sscanf用法小结

摘要: sscanf可以对字符串进行格式化,类似于一个微型的正则表达式话不多说,一切尽在代码中。。。代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--12//直接读入3char*s="abc";4char*buf[10];5sscanf(s,"%s",bu... 阅读全文

posted @ 2010-02-01 14:13 翰墨小生 阅读(586) 评论(0) 推荐(1) 编辑

2010年1月22日

类型转化:float -> DWORD

摘要: #include<iostream>#include<windows.h>using namespace std;int main(void){float f = 1.1 ;DWORD d1 = (DWORD)f ;DWORD d2 = *(DWORD *)&f ;cout << d1 << endl ; // output: 1cout &... 阅读全文

posted @ 2010-01-22 11:57 翰墨小生 阅读(1511) 评论(0) 推荐(0) 编辑

2010年1月20日

Drill into View Matrix

摘要: How does DirectXbuild the view matrix -From MSDND3DXMatrixLookAtLHBuilds a left-handed, look-at matrix.D3DXMATRIX * D3DXMatrixLookAtLH( D3DXMATRIX * pOut, CONST D3DXVECTOR3 * pEye, CONST D3DXVECTOR... 阅读全文

posted @ 2010-01-20 22:14 翰墨小生 阅读(505) 评论(0) 推荐(0) 编辑

2009年12月21日

Lua Script - 初次接触

摘要: 今天学习了Lua Script,发个小程序,求一个表中的最大值 代码 links Lua for Windows 阅读全文

posted @ 2009-12-21 21:34 翰墨小生 阅读(726) 评论(0) 推荐(0) 编辑

2009年12月13日

原来VisualStudio本身也可以查看调试信息

摘要: 一直以为需要借助第三方工具,例如DebugView等,其实VS本身就有这个功能,只要在Debug的时候打开Output窗口即可,这样就可以观察由OutputDebugString函数输出的调试信息了 阅读全文

posted @ 2009-12-13 23:12 翰墨小生 阅读(563) 评论(0) 推荐(0) 编辑

2009年11月28日

ScreenToVector详解

摘要: 如果您正在学习ArcBall技术或者您对于屏幕坐标到三维坐标的转换有些模糊,那么一定不要错过本篇。ScreenToVector函数是微软DXUT框架中AcrBall类中的一个函数,它的作用是完成二维屏幕坐标到三维球坐标的转换,先看一下函数定义代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1D3DXVECTOR3CD3DArcBall::ScreenToVector(floatfScreenPtX,floatfScreenPtY)2{3/ 阅读全文

posted @ 2009-11-28 23:28 翰墨小生 阅读(4377) 评论(10) 推荐(2) 编辑

2009年11月25日

使用DirectX截屏

摘要: 如果截图变黑,请参考这一篇,DirectX截图黑屏的解决办法。网上有很多关于DirectX截屏的文章,但大都是屏幕截图,很少有窗口截图,本文则两者都涉及到,先讲如何截取整个屏幕,再讲如何截取某个窗口,其实二者的区别不大,只是某个参数的设置不同而已,最后我们还将扩展到任意区域的截图。首先看一下截屏用到的函数,最核心的当然是D3DXSaveSurfaceToFile,先看下函数原型Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1HRESULTD 阅读全文

posted @ 2009-11-25 23:22 翰墨小生 阅读(24525) 评论(56) 推荐(5) 编辑

DirectX 总结

摘要: DDSDirectXDraw Surface file format, .dds。这是微软从DirectX7开始引进的一种文件格式,它用来存储压缩的或未压缩的纹理,该格式支持mimaps cube maps和volume maps, D3DX和许多其他的DX工具都支持这种格式,比如DirectX Texture Editor(dxtex.exe)和Texture Conversion Tool(Texconv.exe),从D3D110开始,DDS文件也支持纹理数组DXGIDirectX Graphics Infrastructure转换为.x格式MeshConvert.exe,这个tool位于 阅读全文

posted @ 2009-11-25 15:48 翰墨小生 阅读(8724) 评论(26) 推荐(5) 编辑

2009年11月22日

在3D程序中使用坐标轴提示

摘要: 一般的3D图形软件都有坐标轴提示的功能,比如3DMax,当旋转物体时,坐标轴也跟着旋转,这样就能实时跟踪物体的角度了,今天我们自己手动做一个,以前一直觉得挺难,今天做起来忽然发现,其实也很简单,说白了,就是画线而已,下面是3DMAX中的坐标轴提示图。坐标轴是由线段组成的,但由于DirectX中的ID3DXLine接口只能用来绘制2D直线,所以我们这里使用DrawPrimitive函数并传递D3DPT_LINELIST来绘制3D直线,旋转使用的是ArcBall技术,先上个图吧,做成以后效果如下,比起上面那个来,比较丑陋,但是功能一样好了,下面介绍详细步骤,首先我们来定义顶点格式,因为绘制直线首先 阅读全文

posted @ 2009-11-22 21:24 翰墨小生 阅读(5217) 评论(2) 推荐(0) 编辑

2009年11月19日

DirectX Effects初探

摘要: 一个effect包括以下几部分:一个vertex shader和/或一个pixel shader,一个需要设置的设备状态列表,一个或多个渲染管道。此外,设计一个备用机制以使effect能够在不同级别的图形设备上工作也是很有用的-也即对于同一个效果设计不同的版本。Direct3D将effects放在effect文件中,这样做的好处是,首先它使我们能够随时改变一个effect的实现而不必重新编译程序的源代码,这使得使用effect非常简单,方便。其次它将所有的东西封装到了一个文件里面。一个effect包含一个或多个techniques,一个technique就是渲染某个effect的用的特定方法, 阅读全文

posted @ 2009-11-19 17:41 翰墨小生 阅读(3397) 评论(1) 推荐(0) 编辑

2009年11月18日

HLSL-高级着色语言简介

摘要: HLSL-High Level Shader Language优点用来书写Vertex Shader和Pixel Shader程序的代码,语法类似于C/C++,在DirectX 8.x的时代,Shader程序都是用低级Shader汇编语言编写的,姑且称之为LLSL吧,HLSL与之相比具有以下优点:更高的生产力,使用HLSL编程更快更容易,使我们有更多的时间关注与算法而不是编码更好的可读性,使用HLSH编写的程序更易读,易调试及维护编译器将生成更加高效的汇编代码可以将同一份代码编译成任何可用的Shader版本,但是用LLSL则必须按不同版本编写代码如果你的显卡不支持Shader的话,那么可以使用 阅读全文

posted @ 2009-11-18 16:09 翰墨小生 阅读(2402) 评论(0) 推荐(1) 编辑

2009年11月6日

Quaternion和Rotation Matrix的相互转换

摘要: 设有Quaternion q(x, y, z, w), rotation axis(x, y, z), rotation angle (theta),则Quaternion和Axis-Angle有如下对应关系,q.x = sin(theta / 2) * axis.xq.y = sin(theta ... 阅读全文

posted @ 2009-11-06 09:41 翰墨小生 阅读(8651) 评论(4) 推荐(1) 编辑

2009年11月4日

如何使用DXUT框架

摘要: DXUT是什么?DXUT即DirectX Utility Library,它是微软为DirectX Samples写的一个框架,有了这个框架,Sample的构建就方便多了,这个框架实际上抽取了构建Sample的公共代码,比如处理窗口消息,处理设备丢失与重设等等,将这些代码提取出来放到DXUT中,便于... 阅读全文

posted @ 2009-11-04 10:00 翰墨小生 阅读(9531) 评论(18) 推荐(9) 编辑

如何配置DirectX开发环境

摘要: 一个DirectX程序要想正确的编译和链接,需要下面三个主要前提安装DirectX SDK正确配置.h文件路径和.lib文件路径正确链接所需.lib文件安装DirectX SDK可以直接到微软的官方网站上下载最新的SDK,Microsoft DirectX SDK(June 2010)是微软发型的最后一个独立的DX SDK,以后则不再单独发行DX SDK,而是集成到Windows SDK当中。如果使用的是Visual Studio 2010及以前的版本,那么需要安装DX SDK,如果使用 Visual Studio 2012及后续版本,则自带Windows SDK(包含DirectX)。配置. 阅读全文

posted @ 2009-11-04 09:46 翰墨小生 阅读(17894) 评论(8) 推荐(2) 编辑

2009年10月29日

Pixel Shader - 像素着色

摘要: IntroductionPixel Shader是一段执行在GPU上的程序,只限于光栅化阶段。与Vertex Shader不同的是,D3D不会使用软件模拟Pixel Shader,Pixel Shader基本上取代了fixed pipeline中的multitexturing阶段,它使我们能够直接操作单独的像素,访问他们的纹理坐标,这使我们能够获得许多特效,比如多重纹理,逐像素光照,depth of field, 云效果,火焰效果,以及一些成熟的着色技术。Multitexturing因为Multitexturing是能用Pixel Shader实现的最简单的技术,所以我们有必要看一下什么是Mu 阅读全文

posted @ 2009-10-29 16:38 翰墨小生 阅读(1487) 评论(2) 推荐(0) 编辑

散射光的计算方法

摘要: diffuse lighting calculates the amount of light that a vertex receives based on the angle between the vertex normal and the light vector (which points in the direction of the light source). The smalle... 阅读全文

posted @ 2009-10-29 10:51 翰墨小生 阅读(562) 评论(0) 推荐(0) 编辑

list of shading algorithm

摘要: http://en.wikipedia.org/wiki/List_of_common_shading_algorithms 阅读全文

posted @ 2009-10-29 10:49 翰墨小生 阅读(301) 评论(0) 推荐(0) 编辑

2009年10月28日

Vertex Shader-顶点着色入门

摘要: Vertex Shader是什么?顶点着色是一段执行在GPU上的程序(一般用HLSL来编写),用来取代fixed pipeline中的transformation和lighting,Vertex Shader主要操作顶点。当然前提是硬件要支持,软件模拟的不算有图则一目了然Vertex Shader做了什么工作由上图知,Vertex Shader对输入顶点完成了从local space到homogeneous clip space的变换过程,homogeneous clip space即projection space的下一个space。在这其间共有world transformation, v 阅读全文

posted @ 2009-10-28 21:18 翰墨小生 阅读(3879) 评论(0) 推荐(0) 编辑

使用Camera的几个步骤

摘要: 1.绘图前初始化Camera矩阵2.程序运行时,根据用户动作实时更新Camera矩阵3.绘图时先取得Camera矩阵,然后应用该矩阵绘图4.在消息处理过程中调用Camera的消息处理函数只有这样才能实时得到变化的Sence下面看一下核心代码1. 在InitD3D函数中初始化三种矩阵,world matrix, view matrix, porjection matrix,对应步骤1[代码]2. 定... 阅读全文

posted @ 2009-10-28 11:30 翰墨小生 阅读(1539) 评论(0) 推荐(0) 编辑

2009年10月27日

Side-by-Side Assembly

摘要: http://en.wikipedia.org/wiki/Side-by-Side_Assembly http://spench.net/drupal/resources/winsxs DLL hell http://en.wikipedia.org/wiki/DLL_hell 阅读全文

posted @ 2009-10-27 15:30 翰墨小生 阅读(292) 评论(0) 推荐(0) 编辑

使用D3DXCreateSphere绘图的步骤

摘要: DX内置的绘制几何图形的函数D3DX中有几个现成的函数可以绘制常见的3D模型D3DXCreateBox D3DXCreateSphereD3DXCreateCylinder //圆柱D3DXCreateTeapot D3DXCreatePolygonD3DXCreateTorus //圆环体,类似于面包圈这些函数有三个参数是一样的,它们分别是 1. 第一个参数 LPDIRECT3DDEVICE9 ... 阅读全文

posted @ 2009-10-27 10:38 翰墨小生 阅读(5139) 评论(0) 推荐(1) 编辑

多线程总贴

摘要: 进程从Win32的角度来看,进程含有内存和资源,进程拥有的内存最大可高达2GB。内存1. Code 只读的,这是CPU唯一允许执行的内存2. Data 包括程序中的变量,不包括函数中的局部变量,分为全局变量和静态变量3. Stack 调用函数时使用,包含局部变量,每个线程创建时都有一个Stack资源1. 核心对象-文件句柄,线程等2. 用户资源-窗口,对话框,字符串等3. GDI资源-Device Context和Brushes等进程本身并不能够执行,它只是提供一个安置内存和线程的地方,Matt Pietrek在其Windows 95 System Programming SECRETS一书中 阅读全文

posted @ 2009-10-27 10:22 翰墨小生 阅读(592) 评论(2) 推荐(0) 编辑

2009年10月18日

这个网站怎么回事?都快成博客园的备份了!

摘要: 转载也要说一声吧?http://www.viqiwu.com/showforum-2.aspx 阅读全文

posted @ 2009-10-18 13:34 翰墨小生 阅读(1444) 评论(4) 推荐(0) 编辑

2009年10月17日

射线与平面的相交检测(Ray-Plane intersection test)

摘要: 射线的定义在欧几里德几何中,射线的定义是:直线上一点和它一旁的部分。由此可知,射线有两个性质,一是只有一个端点,二是一端无限延伸。射线的参数方程其中p0是射线的起点, u是射线的方向向量,t >= 0,根据t的取值不同,可得射线上不同的点,所有这些点便构成了整个射线,如图平面的定义平面可以由法向量和平面内的一点来确定,因为过一点,有且只有一个平面与已知直线垂直平面的参数方程其中n是平面的法向量,p0是已知的平面内一点,符号●表示点积,因n与平面垂直,所以n与平面内任意直线垂直, 而(p-p0)则是平面内的一个向量,所以n与 (p-p0)垂直,而互相垂直的向量其点积为0,见下图向量的点积公 阅读全文

posted @ 2009-10-17 22:24 翰墨小生 阅读(14024) 评论(10) 推荐(2) 编辑

2009年10月13日

DirectX视口变换矩阵详解

摘要: 视口变换在投影变换之后,视口变换的作用是将投影*面上的点转换为屏幕上的点,这是一个缩放的过程。投影变换的作用是将viewing frustum(视景体)中的场景投影到一个*面上,这个*面就是投影*面,在DirectX中,使用*剪裁*面作为投影*面(z=1),关于透视投影的矩阵求解,请参考透视投影详解视口变换则是将这个cuboid中的物体变换到视口中,见下图。其中cuboid的坐标范围是而viewport的坐标范围是注:由上图知,视口的起点为(X, Y),宽高分别为Width和Height,x轴向右为正,y轴向下为正,y轴的方向与三维坐标正好相反。视口是一个2D*面,但是在viewport变换中 阅读全文

posted @ 2009-10-13 21:17 翰墨小生 阅读(8353) 评论(10) 推荐(1) 编辑

2009年9月18日

Binary Search

摘要: 简单的二分搜索:在一个非递减序整型数组中搜索值value,返回其所在下标最普通的二分搜索CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1sta... 阅读全文

posted @ 2009-09-18 10:59 翰墨小生 阅读(485) 评论(1) 推荐(0) 编辑

2009年9月10日

Generate permutation for N elements

摘要: 原理:这个代码好久之前就会了,可是对于其原理一直一知半解其实这个算法的原理和我们手动求全排列的过程是一样的,假设有三个元素a, b, c, 我们求他们的全排列时是按照如下的方法以a开头的有两个a, b, ca, c, b以b开头的有两个b, a, cb, c, a以c开头的有两个c, a, bc, b, a所以一共有六个一般来说,对于给定的n个元素,首先拿出一个元素放到第一个位置,然后对于剩下的n... 阅读全文

posted @ 2009-09-10 16:12 翰墨小生 阅读(601) 评论(0) 推荐(0) 编辑

2009年9月2日

Z-buffer

摘要: The Z BufferThe Z buffer (also known as a depth buffer) records the depth of a pixel when it is rendered. Because the final transform applied to our geometry takes the data from 3D view space into the... 阅读全文

posted @ 2009-09-02 23:12 翰墨小生 阅读(1522) 评论(0) 推荐(0) 编辑

2009年8月27日

也谈交换两个变量

摘要: 不使用第三个变量交换两个变量的值,老生常谈了常见的两种方法int a = 1;int b = 2;[代码]最近在园子里看到下面的方法[代码]乍一看,真不敢相信是真的,上机一试还真行,但仅限于C#,在C++下面是不行的看一下反汇编后的代码就一目了然了C#反汇编代码[代码]C++反汇编代码:[代码]可见二者的区别就是,C#在求值过程中保存了b的值,而C++没有总结:此题的本质就是求一种操作X,要保证X... 阅读全文

posted @ 2009-08-27 16:39 翰墨小生 阅读(647) 评论(0) 推荐(1) 编辑

2009年7月27日

String Comparison

摘要: 字符串比较,请给出输出结果[代码] 阅读全文

posted @ 2009-07-27 15:20 翰墨小生 阅读(245) 评论(0) 推荐(0) 编辑

参数求值顺序对增量运算符的影响

摘要: 下面的代码输出什么结果?[代码] 阅读全文

posted @ 2009-07-27 14:59 翰墨小生 阅读(307) 评论(0) 推荐(0) 编辑

任意地址赋值,编译没问题,运行时错误

摘要: ==#include <iostream>using namespace std ;int main(void){ int *p = (int*)1234; //编译没问题,但运行时出错 *p = 190 ; // not writeable system("pause") ; return 0 ;}// output: run time error! access voilation!== 阅读全文

posted @ 2009-07-27 14:53 翰墨小生 阅读(399) 评论(1) 推荐(0) 编辑

2009年7月2日

Right Hemisphere - A Visual Product Company

摘要: Right HemisphereRight Hemisphere is the leading provider of enterprise product communication and collaboration solutions enabling manufacturers to optimize their global product development launch and ... 阅读全文

posted @ 2009-07-02 16:11 翰墨小生 阅读(451) 评论(0) 推荐(0) 编辑

2009年6月23日

DP_knapsack

摘要: 动态规划法解0-1背包问题问题描述:有n个背包,重量依次为w1,w2, ... ,wn, 价值依次是v1,v2, ... ,vn, 现在有一个大背包,其容量是capacity,往其中装小背包,要求得到的总价值最大,如何装?用value[i, w]表示有i个背包且总重量最大是w时的价值,那么当考虑第i个背包时,有两种情况1. 将此背包装入大包,价值是 v[i] + value[i - 1, w- w... 阅读全文

posted @ 2009-06-23 16:55 翰墨小生 阅读(544) 评论(0) 推荐(0) 编辑

2009年6月10日

Maximum Subsequence Multiplication

摘要: Given an array a contains integers, returnthe maximum consecutive multiplication Example:int[] a = {2, -2, -3, 4, -5, 6} ;return 360 (-3 * 4 * -5 * 6)code[代码] 阅读全文

posted @ 2009-06-10 16:02 翰墨小生 阅读(451) 评论(0) 推荐(0) 编辑

导航

书法字典:https://www.shufadict.com