摘要: 在三维图形程序中的一个模型对应空间中的一个物体,在现实世界中要完全定位一个物体需要6个参数,物体位置坐标的3个分量(x, y, z)和3个欧拉角(偏航角yaw,俯仰角pitch,侧倾角roll)。
3个欧拉角的定义为:
(1)偏航角:物体绕自身y轴(即上向量up)旋转的角度。
(2)俯仰角:物体绕自身x轴(即右向量right)旋转的角度。
(3)侧倾角:物体绕自身z轴(即前向量look)旋转的角度。
阅读全文
摘要: 利用.x文件模型渲染三维模型,首先需要将.x文件中的各种数据分别加载到内存中,主要包括顶点数据、材质数据和纹理数据等。
Direct3D扩展实用库定义了多边形网格模型接口ID3DXMesh来表示一个复杂的三维物体模型,它是一个COM接口,继承自ID3DXBaseMesh。
Direct3D扩展实用库函数D3DXCreateMesh()可用于创建一个Direct3D网格模型对象。
阅读全文
摘要: 为了使渲染的图形看起来更真实,Direct3D提供了在物体表面绘制纹理的功能。一般说来,纹理是表示物体表面细节的一幅或几幅二维图形,也称纹理贴图(texture)。当把纹理按照特定的方式映射到物体表面的时候,能使物体看上去更加真实。当前流行的图形系统中,纹理绘制已经成为一种必不可少的渲染方法。在理解纹理映射时,可以将纹理看作应用程序在物体表面的像素颜色。在真实世界中,纹理表示一个对象的颜色、图案以及触觉特征。但在Direct3D 中,纹理只表示对象表面的彩色图案,它不能改变对象的几何形式。更进一步说,它只是一种高强度计算行为。
阅读全文
摘要: 纹理阶段混合状态用于指定当前纹理颜色值和alpha值的混合方法。
示例程序演示了纹理阶段混合状态的使用极其效果,纹理阶段混合状态在纹理中具有非常重要的作用,示例代码中设置纹理阶段混合状态的代码如下:
g_device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
g_device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
g_device->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
阅读全文
摘要: Direct3D应用程序可以为任何图元的任何顶点指定纹理坐标,通常使用的 u、v 纹理坐标的取值范围是[0.0, 1.0],但是通过设置该范围外的坐标值,可以得到纹理映射的特殊效果。
虽然系统允许纹理坐标取[0.0, 1.0]范围外的值,但硬件极限常常影响纹理坐标的取值范围。当调用函数IDirect3DDevice9::GetDeviceCaps()得到设备性能后,一个渲染设备将此极限值放在结构D3DCAPS的成员MaxTextureRepeat中。这个成员的值表示该设备能允许的纹理坐标取值范围。例如,该值是128,那么输入的纹理坐标必须在范围[-128, 128]中,使用这个范围之外的纹理坐标是无效的。
阅读全文
摘要: 多级渐进纹理由一组分辨率逐渐降低的纹理序列组成,每一级纹理宽度和高度都是上一级纹理宽度和高度的一半。宽和高不一定相等,也就是说,这些纹理不一定都是正方形。
Direct3D在纹理映射时,自动选择一幅与物体大小最接近的纹理进行渲染。当物体离投影平面较远时,Direct3D会选择一张尺寸较小、分辨率较低的纹理进行渲染;当物体离投影平面较近时,Direct3D会选择一张尺寸较大、分辨率较高的纹理进行渲染。Direct3D将纹理序列看成一条多级渐进纹理链。链头处纹理的分辨率最高,下一级往后依次递减,链尾处纹理的分辨率最低。
阅读全文
摘要: 最近点采样是4种过滤方式中速度最快但效果最差的过滤方式。Direct3D计算得到的纹理元素地址通常是一个浮点数值,而非整数的纹理下标值,当使用最近点采样时,Direct3D会复制与这个浮点值地址最接近的整数地址的纹理元素的颜色。
设置最近点采样的具体方法如下:调用IDirect3DDevice9::SetSamplerState(),可分别设置纹理过滤的放大过滤器和缩小过滤器。将第一个参数设置为纹理过滤器关联的纹理层序号(0~7)。如果要设置放大过滤器,第二个参数设为D3DSAMP_MAGFILTER,如果要设置缩小过滤器,第二个参数设为D3DSAMP_MINFILTER。第三个参数可设为表示最近点采样的枚举常量D3DTEXF_POINT。下列代码将纹理层0的纹理过滤方式设置为最近点采样。
阅读全文
摘要: 当Direct3D渲染一个图元时,必须将它通过坐标变换映射到二维屏幕上。如果图元有纹理,Direct3D就需要用纹理来产生图元的二维渲染图像上每个像素的颜色。对于图元在二维屏幕上图像的每个像素来说,都必须从纹理中获得一个颜色,从纹理中为每个像素获取颜色的过程称为纹理过滤(texture filtering)。
大多数情况下,屏幕显示的图形大小与纹理贴图大小不相同,换句话说,这个纹理将被映射到一个比它大或小的图元的图像上,这样纹理常常会被放大或缩小。对纹理的放大会造成许多像素被映射到同一个纹理元素,图形渲染结果会有色块的感觉。缩小一个纹理意味着一个像素被映射到许多纹理元素,图形看上去会闪烁失真或有锯齿。为了解决这些问题,可以将相关纹理元素的颜色融合到一个像素上,如何将多个纹理元素的颜色融合到一个像素上取决于纹理过滤方式。
阅读全文
摘要: 脑科学是当今国际最热门的科学研究领域之一。大脑是怎样工作的?千百年来人们一直试图揭开这个秘密。进入21世纪以来,脑与认知科学突飞猛进的发展为揭示人喜怒哀乐的精神世界提供了更多可能。许多国家相继将脑科学研究列入国家科学发展的重要领域。我国在发布的“国家中长期科学与技术发展规划”中,将“脑科学与认知科学”纳入国家重点支持的八大前沿科学领域。
阅读全文
摘要: 从哲学的角度看,休息就是人的存在方式的改变。哲学是深奥的,也是简单的。其所以深奥,是因为作为哲学的理论是灰色的,其所以简单,是由于哲学本身也来源于生活。休息的哲学也完全如此。
生活是个矛盾的海洋。休息是生活的重要组成部分。关于休息的哲学,生活中无时不有,无处不在,它既是那样的深邃,又是那样的浅显。如果你还没有发现它,只是缺少认真的思索罢了。
阅读全文