04 2012 档案
摘要:地形在三维中的地位是毋庸置疑的,最近在看《Focus On 3D Terrain Programming》这本书,做一下简单的笔记.本书的第二章主要解决了三个问题:什么是高度图?怎么创建高度图?如何载入高度图?如何使用直接的方法渲染地形?(how to render terrain using a brute force algorithm?)如何使用fault formation与mid displacement算法动态生成高度图,然后生成地形。高度图就是一个灰度图片,每一个像素代表了一个高度。通常情况下黑色的像素点代表了地形低洼的地带,白色的像素点代表了地形高的像素点。读入高度图后可以通过
阅读全文
摘要:<1>. 若顶点结构中不设置颜色,也不设置顶点法线,只有位置。struct Vertex{ Vertex(){} Vertex(float x, float y, float z) { _x = x; _y = y; _z = z; } float _x, _y, _z; static const DWORD FVF;};const DWORD Vertex::FVF = D3DFVF_XYZ;绘制的时候D3D默认使用黑色来绘制三角形,所以Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_Z...
阅读全文
摘要:原文:http://www.cnblogs.com/winsonchen/archive/2008/02/17/1071319.html在3D游戏中,UI占了很大一部分窗口元素,比如魔兽争霸1024*768屏幕设置,除去底部控制台及顶部资源面板,场景渲染区域只有1024*570。要知道对于如今的3D游戏,越来越多的资源使用normalmap,越来越复杂的着色器代码,能够避免四分之一的ui窗口区域无效渲染,带来的性能提升余地是很大的。 正常的渲染次序是:RenderScene();RenderUI()。被UI界面遮挡的场景部分有两个方法可以优化:一是通过设置新的裁剪体过滤掉哪些经过坐标转换后被U
阅读全文
摘要:使用WM_MOUSEWHEEL 需要把CWnd设定为Focus ON_WM_MOUSEWHEEL( ) CWnd::OnMouseWheel afx_msg BOOL OnMouseWheel( UINT nFlags, short zDelta, CPoint pt ); 返回值:如果允许鼠标轮滚动,则返回非零值;否则返回0。 参数: nFlags 指明是否按下了虚拟键。这个参数可以是下列值的组合: · MK_CONTROL 如果CTRL键被按下,则设置此位。 · MK_LBUTTON 如果鼠标左键被按下,则设置此位。 · MK_MBUTTON 如果鼠标中键被按
阅读全文
摘要:HRESULT SetClipPlane(DWORDIndex,CONST float *pPlane);参数:第一个是索引,不用说了。第二个是存着 A B C D的数组。这个数组最后会用来构建 Ax+By+Cz+Dw = 0;平面。然后顶点会根据自已的位置(x,y,z,w)来进行判断。如果Ax+By+Cz+Dw >= 0。则表示在平面前方,保留。反之则在后方,被裁剪掉。值得注意的时,在固定管线使用平面裁剪的时候,是在世界坐标系中处理的。而用SHADER的时候,是在裁剪空间中处理的。(即顶点输出的时候的坐标系)貌似还是太抽象。比如顶点输入坐标是pos 此时的坐标变换阵是WVP,则 Out
阅读全文
摘要:开始错误一大堆。。。都是shader里面的语法错误。。。我擦!#include "d3dUtility.h"const DWORD width = 640;const DWORD height = 480;//// Globals//IDirect3DDevice9* Device = 0; IDirect3DVertexShader9* pShader = 0;ID3DXConstantTable* pConstTable = 0;ID3DXMesh* teaPot = 0;D3DXHANDLE viewMatHandle;D3DXHAND...
阅读全文
摘要:http://blog.csdn.net/cppyin/article/details/6177742在3D程序中,通常用quaternion来计算3D物体的旋转角度,与Matrix相比,quaternion更加高效,占用的储存空间更小,此外也更便于插值。在数学上,quaternion表示复数w+xi+yj+zk,其中i,j,k都是虚数单位:i*i = j*j = k*k= -1i*j = k, j*i = -k可以把quaternion看做一个标量和一个3D向量的组合。实部w表示标量,虚部表示向量标记为V,或三个单独的分量(x,y,z)。所以quaternion可以记为[ w,V]或[ w,
阅读全文
摘要:SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE ) :不要剔除背面,即正反面都绘制。 SetRenderState( D3DRS_CULLMODE, D3DCULL_CW ) :把顺时针的方向看作背面剔除掉 SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW ) :把逆时针的方向看作背面剔除掉(在消隐中为默认值)默认值为D3DCULL_CCW, 即:把顺时针方向作为正面,逆时针方向的面作为反面剔除掉。
阅读全文
摘要:这两种方式都可以绘制三角形网格,那么在什么情况下使用它们呢? 如果要画多个三角型,那么使用D3DPT_TRIANGLELIST一定要配合IndexBuffer,否则的话将要重复定义很多顶点,如果要画少量的三角型,则可以使用D3DPT_TRIANGLESTRIP来代替D3DPT_TRIANGLELIS
阅读全文
摘要:http://blog.csdn.net/hello_world2001论坛里经常看到跳槽的帖子,总体感觉只能是一声叹息。那些1年一跳甚至1年N跳的朋友,请记住,如果你没有自己创业的打算的话,你们现在的选择,会成为你们将来职业发展的致命伤。跟很多开发经理,架构师,产品经理等朋友聊过,招人最大的感触就是,绝大多数IT人都说不清楚自己是做什么的。为什么这点特别重要?因为如果你讲不清楚自己是做什么的,或者说不清楚自己为什么跳槽,很有可能就是,1. 你过去几年就是打酱油的。2. 你是个没有思考能力的人。3. 你缺乏基本的表述能力。4. 你是个随心所欲的人,缺乏对工作的尊重。。。。从面试者的角度,他们只
阅读全文