上一页 1 ··· 7 8 9 10 11
摘要: 渲染到目标,通俗地说就是把特定场景的物体放在目标上显示。这个目标可以是纹理,窗口等。本文介绍的是把场景渲染到纹理,并以图片的形式保存起来。一 其原理如下:在初始化时创建一纹理Texture,获取指向该纹理的指针,接着创建深度表面,并获取指向其的指针DepthSurface。在渲染时先获取系统的默认的渲染目标和深度模板表面,再设置Texture的表面为渲染目标,并通过DepthSurface设置深度模板表面,接着渲染场景中的物体,并保存该纹理到制定路径,最后恢复系统的默认的渲染目标和深度模板表面。二 具体步骤: 设计一渲染目标类RenderTarget,负责纹理,深度表面的创建,以及设置渲染目标 阅读全文
posted @ 2008-10-08 02:52 毛志谦 阅读(534) 评论(0) 推荐(0) 编辑
摘要: Shader技术属于GPU的渲染技术,其相应语言是高级着色器语言(High Level Shader Language 简称HLSL)。HLSL主要作用为将一些复杂的图像处理快速而又有效率地在显卡上完成。在DirectX中有两种Shader,顶点着色器Vertex Shader (vs)和像素着色器Pixel Shader (ps)。能够实现VS和PS的显卡的图形处理流水线被称作为是可编程的。VS实际代替了传统图形渲染流水线里的T&L部分,其以顶点为计算单位,负责处理世界坐标中的顶点信息,可以处理光照、阴影、坐标变换、法向量等等。PS代替了传统图形渲染流水线中的光栅化部分,比如纹理贴图 阅读全文
posted @ 2008-10-07 02:49 毛志谦 阅读(669) 评论(0) 推荐(0) 编辑
摘要: 地形的网格可以使用高度图作为数据源生成。高度图可以是位图,可理解成二维数组,地形实际上就是一系列高度不同的网格而已,这样数组中每个元素的索引值刚好可以用来定位不同的网格(x,z),而所储存的值就是网格的高度(y)。地形的渲染可由四叉树来管理,网格的每个顶点对应四叉树的各个节点,有关四叉树的应用可参考"引擎技术研究之场景管理------四叉树与视椎剔除技术"。现讨论地形技术的相关应用:一:地形的生成1 根据一指定路径的灰度图生成高度图mpBmpHeightMap,并获取mpBmpHeightMap的长度length和宽度width2 根据length和width创建一顶点指针mpVertexsM 阅读全文
posted @ 2008-10-05 16:13 毛志谦 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 先说一下视椎的概念:视椎是摄像机可见的空间体积,外观就像截掉顶部的金字塔。视椎剔除就是将在视锥外的物体不进行渲染操作,以加快运行速度。大型场景经常用四叉树的技术来管理,即用四叉树的方式进行空间划分。一:场景管理中四叉树的划分现以一地面为例讨论四叉树的划分技术。地面是由很多个三角形组成,两个三角形合成一正方形。如不进行四叉树划分,则需遍历所有三角形以确定被剔除物体,算法复杂度大。如下图所示:当我们用四茶树来管理物体时,可把地面看成一大正方形,将视椎的横截面与地面重合,并作第一次四等分划分,如此,对四个正方形区域作第一次遍历后,只需对视椎截面所在的上两个正方形作第二次深入遍历。如图所示:将有视椎截 阅读全文
posted @ 2008-10-04 02:42 毛志谦 阅读(1265) 评论(0) 推荐(0) 编辑
摘要: ------------------------pick.h------------------------#pragma once#include <vector>using std::vector;struct PickResult{DWORD dwFace; // mesh face that was intersectedFLOAT fBary1, fBary2; // barycentric coords of intersectionFLOAT fDist; // distance from ray origin to intersectionFLOAT tu, tv; 阅读全文
posted @ 2008-09-28 23:51 毛志谦 阅读(574) 评论(0) 推荐(0) 编辑
摘要: 渲染要进行什么操作,这随着应用技术的深入而多样化和复杂化。 一般来说,即时信息更新部分包括: 1漫游信息的更新:处理即时鼠标事件和键盘事件 由鼠标或键盘触发场景模型的平移,旋转,缩放等操作,以及摄像机的旋转,平移等。 2摄像机信息的更新:摄相机位置,朝向等信息的改变 摄像机的更新直接影响到视图矩阵和投影矩阵的实时更新 3模型信息的更新:模型位置和大小的改变以及模型的渲染 模型的平移矩阵,旋转矩阵,缩放矩阵的改变以至世界矩阵的即时更新 关于模型的渲染方面,则需处理多方面的细节:先设置渲染状态,再进行打开alpha测试,alpha裁减以及背面剔除和纹理层滤镜的设置等,接着还需设置材质和纹理等细节。 阅读全文
posted @ 2008-09-27 13:13 毛志谦 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 几何渲染管线把顶点作为输入,可进行3种变换:世界变换,摄像机变换和投影变换,并将这些变换施展到顶点。1世界变换:一个模型的顶点要从本地坐标系统变换到世界坐标系统。世界变换包含平移,旋转,缩放的 混合变换。目的要生成世界矩阵W,可由缩放矩阵S,旋转矩阵R,平移矩阵T混合生成,一般是先放缩,再旋转,后平移,W= S * R * T. 1 平移矩阵: 通过执行函数D3DXMatrixTranslation( T , x , y , z )生成,x ,y ,z为模型在世界空间坐标。 2 缩放矩阵 通过执行函数D3DXMatrixScaling( S , x , y , z )生成,x, y, z分别 阅读全文
posted @ 2008-09-26 01:53 毛志谦 阅读(1343) 评论(1) 推荐(0) 编辑
摘要: 先讨论一下SDK中自带的例子:Meshes。该程序的效果是一个老虎模型绕世界坐标原点持续地旋转。程序主循环其程序流程如下:WinMain()-> InitD3D()->InitGeometry()->Render()->cleanup()其中WinMain()是程序入口,MsgProc() 处理程序的消息的回调函数,InitD3D()做程序的初始化工作InitGeometry()负责模型的加载,材质纹理的设置等,Render()负责渲染操作,在Render()中调用的SetupMatrices()设置世界矩阵,视图矩阵以及投影矩阵。在MsgProc()中调用的clean 阅读全文
posted @ 2008-09-25 14:50 毛志谦 阅读(290) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11