
D3D
文章平均质量分 83
工程师WWW
R
展开
-
等价,偏序和全序
等价:设 R 是某个集合 A 上的一个二元关系。若 R 满足以下条件:自反性:对称性:传递性:则称 R 是一个定义在 A 上的等价关系。习惯上会把等价关系的符号由 R 改写为 ∼。例如,设 ,定义A上的关系R如下:其中 叫做 x 与 y 模 3 同余,即 x 除以 3 的余数与 y 除以 3 的余数相等。例子有 1R4, 2R5, 3原创 2012-01-17 10:38:27 · 5574 阅读 · 0 评论 -
立方体画家消隐算法与Z-Buffer消隐算法 比较
画家算法,又称深度排序法。我们先看看它的算法:(1)将屏幕设成背景色,(2)把要画的物体(多边形)按其离开视点的从远到近排序(#add 确定可以排序么?不会有交叉的面?这个距离又是指哪个点到哪个点? 从后文得知,画家算法不适用于交叉的情况,只能针对包围体,此距离也是个最小距离)。由此构成深度优先级表。然后从远到近画物体(多边形),近的就因为优先级高而覆盖远的多边形。由此可消隐。原创 2011-12-01 00:00:57 · 18667 阅读 · 1 评论 -
基于ActiveX控件的DirectX游戏开发
平常开发DirectX游戏基本是用SDK或者MFC,关于两者的开发想必大家都有了很多的了解,但是基于ActiveX控件的DirectX游戏开发网上并不多见,近日有兴趣研究了一下,小有成果,不敢独享,小附文章,希望能起到抛砖引玉的功效。 我选用WIN2K+VC6+DirectX8作为开发平台,首先创建MFC ActiveX ControlWizard,假设工程名为DIG(因为在做一个原创 2012-02-12 23:12:28 · 2917 阅读 · 1 评论 -
OSG简介与最简单的实例
OSG简介OpenSceneGraph(简称OSG)使用OpenGL技术开发,是一套基于C++平台的应用程序接口(API)。OpenGL技术为图形元素(多边形、线、点等)和状态(光照、材质、阴影等)的编程提供了标准化的接口。而OSG开发的主要意义在于,将3D场景定义为空间中一系列连续的对象,以进行三维世界的管理。正是由于场景及其参数定义的特点,通过状态转化、绘图管道和自定制等操作,OSG还可以原创 2012-01-07 15:33:33 · 3783 阅读 · 0 评论 -
DXUT框架剖析(13)
添加文本DXUT框架对文本绘制进行了封装,提供了类CDXUTHelper来简化文本显示,使用该接口大体分为3个步骤:初始化ID3DXSprite和ID3DXFont对象,显示文本,释放ID3DXSprite和ID3DXFont对象。首先来看看CDXUTHelper的定义部分://--------------------------------------------------原创 2011-12-06 22:02:21 · 1755 阅读 · 0 评论 -
DXUT框架剖析(10)
管理DXUT框架的函数函数描述DXUTResetFrameworkState将框架状态重置为初始默认状态,之前设置的框架状态改变将失效。DXUTShutdown触发程序终止和清空框架DXUTGetExitCode获取框架的退出代码DXUTResetFrameworkStateResets DXUT state to its i原创 2011-12-06 21:58:53 · 1482 阅读 · 0 评论 -
DXUT框架剖析(6)
在窗口和设备创建好之后,应用程序需要使用消息循环处理窗口消息、更新和渲染场景、处理设备事件。应用程序可以实现自己的消息循环,也可以使用DXUT消息循环,注册相应的回调函数,可以让DXUT处理设备、帧消息事件。进入消息循环为使用DXUT框架的消息循环,可以调用DXUTMainLoop()函数:Starts the main execution loop of DXUT.H原创 2011-12-06 21:53:52 · 1287 阅读 · 0 评论 -
3D场景中的圆形天空顶
引言 如果我们希望在场景里添加一个天空,我们可以仅仅只把背景清除为淡蓝色,不过我相信你会认为那样做太普通了。一般来说,那些让你从窗户或洞孔中向外张望的室内游戏使用的是天空盒。只要使用好的纹理,天空盒将提供让人信服的画面;由于纹理伸展在一个巨大的多边形上,低质量的纹理将很容易被注意到。在户外场景中使用天空盒会引发一些问题,例如使用雾,某些雾的设置可能会引发一些问题。如果雾被设置在观察者的旁边,原创 2011-12-06 14:38:37 · 4142 阅读 · 0 评论 -
DXUT框架剖析(14)
控件是用户接口的重要组成部分,为了便于用户操作,为程序界面添加各种控件是非常好的方法。DXUT框架为在Direct3D程序中添加各种控件提供了支持。为了便于加载控件和处理各控件的消息,通常先在窗口中加载对话框,然后在对话框中添加响应的控件,由对话框来管理控件。为了统一管理各个对话框,还需要定义对话框资源管理器类CDXUTDialogResourceManager的一个对象,在程序开始时,调用各个对原创 2011-12-06 22:03:42 · 1551 阅读 · 0 评论 -
DXUT框架剖析(7)
(2)帧事件框架也提供了帧事件,它在渲染过程中的每一帧被调用,应用程序应该注册并实现这些回调函数,如下表所示:应用程序回调函数注册回调函数框架调用时机场景渲染LPDXUTCALLBACK-FRAMEMOVEDXUTSetCallback-FrameMove在每一帧开始时调用一次这个回调函数是应用程序处理场景更新的最好位置,但它不应包括实际的渲原创 2011-12-06 21:54:46 · 1184 阅读 · 0 评论 -
正交矩阵
正交矩阵是实数特殊化的酉矩阵,因此总是正规矩阵。尽管我们在这里只考虑实数矩阵,这个定义可用于其元素来自任何域的矩阵。正交矩阵毕竟是从内积自然引出的,对于复数的矩阵这导致了归一要求。定义 定义 1 如果:AA'=E(E为单位矩阵,A'表示“矩阵A的转置矩阵”。)或A′A=E,则n阶实矩阵 A称为正交矩阵, 若A为正交阵,则满足以下条件: 1) A 是原创 2011-11-30 23:29:55 · 10891 阅读 · 0 评论 -
3D数学知识简介
前言(Preface)前段时间有些朋友在论坛里问到一些关于3D数学的知识,就想为大家写点这方面的文章。由于之前比较忙,又遇到过春节,所以最近才着笔写了这篇文章,希望大家喜欢。这些内容主要是一些理论知识,看上去难免有些枯燥,之后的文章我会加入一些实例进行讲解的。如果内容存在错误和不全,就请你来更正和添加了。 三维坐标系(3D Coordinate System)三原创 2011-11-26 23:09:59 · 2734 阅读 · 0 评论 -
几种面消隐算法的比较
【摘 要 】本文就 目前现有面消隐算法进行 了分类,对每类算法特 点进行 了总结。从每种 算法本 身的特点 、消隐空间、排序效率和对场景的限制这几方面 .重点分析比较 了几种常用的面消隐算法。1 引言消隐(Hidden Surface Removal)是在一定观察方向下消除不可见的线和面。有时也称为可见性测试。虽然各种消隐算法在可见性测试和不可见面消除方法上区别不大.但这些消隐方法原创 2011-12-01 16:35:57 · 16710 阅读 · 2 评论 -
计算几何算法概览
矢量的概念: 如果一条线段的端点是有次序之分的,我们把这种线段成为有向线段(directed segment)。如果有向线段p1p2的起点p1在坐标原点,我们可以把它称为矢量(vector)p2。 矢量加减法: 设二维矢量P = ( x1, y1 ),Q = ( x2 , y2 ),则矢量加法定义为: P + Q = ( x1 + x2 , y1 + y原创 2011-09-28 17:49:37 · 1304 阅读 · 0 评论 -
gl glu glut函数简介
OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库,gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包含了最基本的3D函数,而glu似乎对gl的辅助,如果算数好,不用glu的情况下,也是可以做出同样的效果。glut是基本的窗口界面,是独立于gl和glu的,如果不喜欢用glut可以用MFC和Win32窗口等代替,但是glut是跨平台的,这就原创 2012-08-05 13:01:31 · 3640 阅读 · 0 评论 -
微软过桥问题的图论解法
微软的过桥问题说的是4个人在晚上过一座小桥,过桥时必须要用到手电筒,只有一枚手电筒,每次最多只可以有两人通过, 4个人的过桥速度分别为1分钟、2分钟、5分钟、10分钟,试问最少需要多长时间4人才可以全部通过小桥?这个问题如果用图论来建模的话,就可以以4个人在桥两端的状态来作为转载 2011-09-20 00:35:51 · 2747 阅读 · 2 评论 -
这个世界上有三种几何学
一、 泰勒斯——推理几何学的鼻祖几何学四千年前发源于古埃及,当时主要是人对自然界的有意识的改造与创新(发明车轮,建筑房屋、桥梁、粮仓,测量长度,确定距离,估计面积与体积等)而出现的实验几何学。公元前七世纪, “希腊七贤”之一的泰勒斯到埃及经商,掌握了埃及几何学,传回希腊。那时,希腊社会安定,经济繁荣,人类对仅仅知道“如何”之类的问题已不满足,他们还要穷究“为何”。于是演绎推理方法应运而生,以原创 2011-11-21 10:02:08 · 5754 阅读 · 0 评论 -
齐次坐标的理解
一直对齐次坐标这个概念的理解不够彻底,只见大部分的书中说道“齐次坐标在仿射变换中非常的方便”,然后就没有了后文,今天在一个叫做“三百年 重生”的博客上看到一篇关于透视投影变换的探讨的文章,其中有对齐次坐标有非常精辟的说明,特别是针对这样一句话进行了有力的证明:“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hi原创 2011-11-26 23:18:44 · 2167 阅读 · 1 评论 -
一个最小OpenGL框架
下面是一个基于glut的OpenGL程序框架,用的是正投影,可以方便的通过参数设置Frustum的大小。通常可以用来做二维的demo,比如二维填充算法演示等等。//迈克老狼整理,参考3D Graphics书#include #include #include // muse be placed before glut. gkd#include // Op原创 2011-12-28 15:17:12 · 1720 阅读 · 0 评论 -
出租车几何学:一个全新的几何世界
在城市中,我们估算两点之间的距离时,往往不会直接去测量两点之间的直线距离,而会去考虑它们相距多少个街区。在理想模型中,假设每条道路都是水平或者竖直的,那么只要你朝着目标走(不故意绕远路),不管你怎样走,花费的路程都是一样的。今天,我看到了一个非常有意思的名词——出租车几何学 (taxicab geometry) ,其名称就来源于这样的想法。 在出租车原创 2011-09-28 22:48:09 · 3242 阅读 · 0 评论 -
DXUT框架剖析(3)
初始化DXUT使用DXUT框架之前,首先需要初始化DXUT,初始化DXUT可以通过函数DXUTInit()完成:Initializes DXUT. HRESULT DXUTInit( BOOL bParseCommandLine , BOOL bShowMsgBoxOnError , WCHAR * strExtraCommandLinePara原创 2011-12-06 21:48:44 · 1162 阅读 · 1 评论 -
DXUT框架剖析(1)
DXUT(也称sample framework)是建立在Direct3D API之上的Direct3D应用程序框架,有了DXUT这样一个Direct3D程序框架,只需在这个框架的基础上编写相应的代码,从而简化了windows和Direct3D API的使用,可以高效地进行Direct3D程序设计。 生成一个Direct3D程序框架第一步,运行Direct3D示例程序浏览器:原创 2011-12-06 21:43:29 · 2094 阅读 · 2 评论 -
DXUT框架剖析(12)
DXUT暂停函数函数描述DXUTPause将框架的内部计数器和(或)渲染过程设为暂停状态DXUTRenderingPaused检查当前设备的渲染状态是否处在暂停状态DXUTIsTimePaused检查当前设备的计时器是否处在暂停状态DXUTPauseSets the paused state of DXUT internal原创 2011-12-06 22:00:12 · 1191 阅读 · 0 评论 -
凹凸映射(Bump Map)实现原理
我翻译这篇教程的目的是为了帮助那些对图形渲染技术有兴趣却又苦于找不到免费中文学习资料的人。在我的身边没有任何一位从事计算机专业的前辈,从刚学会 WINDOWS的基本操作到现在,我的计算机技术完全都是一步步自学过来的,算算学编程的历史也近5年时间了。我往往要花一半以上的学习时间用来查学习资料(记得我学GIF图像压缩解压算法时,用了近2个星期时间才编出了显示GIF图片的程序,主要原因就是资料不够,只看原创 2011-11-28 11:27:11 · 2049 阅读 · 0 评论 -
在DirectX 8 中进行2D渲染
Background背景I have been reading alot of questions lately related to DirectX 8 and the exclusion of DirectDraw from the new API. Many people have fallen back to DX7. I can understand people usi原创 2011-11-28 10:33:34 · 1918 阅读 · 0 评论 -
FSAA 简介
FSAA 是 full scene anti-alias 的缩写,有些人将其译为全景反锯齿,还算是合理。不过,倒底 FSAA 是什么呢?为什么要「全景」(full scene)?「半景」不行吗?(其实相对于 FSAA 的是 edge AA,「边缘反锯齿」)反锯齿(anti-alias)又是怎么回事呢?文档内容:[Part 1]要弄清楚什么是 FSAA,就得先从 AA(ant原创 2011-11-28 11:26:18 · 1563 阅读 · 0 评论 -
第三章渲染2D精灵
(译者语录: 原文里面使用CreateOffscreenPlainSurface生成一个离屏的页面, 然后用loadSurface载入我们需要的2D图片, 然后再将其贴到离屏页面上去的. 但是这种方法有一个缺点, 就是不支持关键色的选取, 还有就是不支持alpha通道. 所以我不打算在这里介绍原书里面的方法去渲染2D图片, 而是改用D3DXSprite来完成我们的工作.)使用DirectX9来原创 2011-11-28 10:42:15 · 2254 阅读 · 0 评论 -
DXUT 框架函数介绍 学习开发游戏UI
友情提醒:所谓的框架是指SDK目录下/Samples/C++/Common路径下的DXUT系列函数包装。学习框架的前提是必须有足够的Windows API,GUI编程经验,必须熟悉Windows的消息机制,回调机制,最好有万行左右的C/C++编程经验。MFC在这里没有任何用处。另外我觉得最好在看程序之前对于D3D的所有概念有点了解,什么是vertex,texture,matrix,lighting原创 2011-11-22 16:22:35 · 1916 阅读 · 0 评论 -
Direct3D通用技术与特殊效果
原文见http://dev.gameres.com/Program/Visual/3D/d3dimhlp/d3dindex.htmDirect3D提供了一套强有力的工具来帮助我们提高三维场景的逼真度。下面我们将讨论一些Direct3D产生的通用的特殊效果。但是,可能出现的效果并不只限于这里所讨论的内容。下面我们分成几个主要的部分:1. 雾化(Fog)2. 公告板技术(Bil原创 2011-11-22 14:34:29 · 3102 阅读 · 0 评论 -
Direct3D的程序结构
DirectX SDK提供的例程均使用Win32编程模式。在此模式下,用户需要自己编写(或管理)WinMain主函数,并负责创建主窗口。下面是WinMain的程序结构:... ...//创建主窗口,也就是Direct3D窗口HWND hWnd = CreateWindow(... ...//初始化Direct3DInitD3D();//建模InitGeometry(原创 2011-11-20 12:58:48 · 1307 阅读 · 0 评论 -
DXUT进阶
概要这个指南涵盖了更多DXUT的高级应用. 这个指南里的大部分功能是可选的, 为了以最小的代价来增强你的应用程序. DXUT提供了一个简单的基于GUI系统的精灵和一个设备设置对话框. 另外, 它还提供了一些摄像机类.这个指南的结果是一个具有完善功能的GUI 用于更改设备和场景的设置. 它将有按钮, 滑块, 和文本来示范这些功能.导航DXUT摄像机DXUT对话框资源管理程序初始化原创 2011-11-18 09:51:36 · 1159 阅读 · 0 评论 -
再看DXUT框架
温故而知新,前面的DXUT框架我只看了一个外壳,我觉得这次框架的亮点就在于它对于图形界面的支持。如果说Win32 API SDK中gdi部分是主旋律,那么MFC就是一个流行歌曲作家发挥之后完成的作品,而DXUT的图形框架则继承了Platform SDK中的风格,代码行间给人一种高贵的感觉。-,-扯远了,拉回来。因为gdi函数都是C API,不利于代码的重用,DXUT框架则把他们包装成了C++的原创 2011-10-27 16:56:39 · 1494 阅读 · 0 评论 -
D3D中公告板的使用示例
D3D中公告板的使用示例点击下载源码和素材 公告板(billboard)是一种允许在2D对象出现在3D中的很酷的技术。举例来说,一个复杂的对象,诸如一棵树,在一个建模程序中,可以从侧视图(side view)进行渲染,然后在一个矩阵的多边形上进行绘制。这个矩形的多边形通常朝向观察点,因此不论从多边形的哪个角度进行观察,树纹理都好像是从渲染一侧被观察到。如下所示,不管从哪原创 2011-11-28 11:08:26 · 2863 阅读 · 0 评论 -
DirectX历史
DirectX 71.DirectX 8 DirectX 9 DirectX 9 Ex DirectX 10DirectX 7.0新增的内容:一、 Direct3D 立即模式 API 增加了新特性,包括 : 设备状态块, 几何混合,立方体环境映射 , 用户自定义裁剪面。二、API 组成第一、 Direct3D 快速模式Direct3D原创 2011-12-03 15:16:38 · 2663 阅读 · 0 评论 -
DXUT框架剖析(9)
下面列出允许改变DXUT行为和获取内部变量的函数,这些函数在使用DXUT框架的Direct3D程序中是非常实用的。管理窗口的DXUT函数函数描述DXUTGetHINSTANCE获取应用程序实例的句柄DXUTGetHWND获取当前设备窗口的句柄DXUTGetHWNDFocus获取当前获得焦点的窗口的句柄DXUTGetHWNDDevice原创 2011-12-06 21:58:13 · 1189 阅读 · 0 评论 -
DXUT框架剖析(4)
创建一个设备通常可以用标准的Direct3D方法CreateDevice()创建一个Direct3D设备,这个方法需要一个有效的显示适配器、设备类型(硬件抽象层设备或参考设备)、窗口句柄、运行标志(软件/硬件顶点运算模式和其他驱动标志)和提交参数。更重要的是,结构体D3DPRESENT_PARAMETERS有许多成员指定了后台缓冲区的设置、多重采样设置、交换效果、窗口模式、深度缓冲区设置、原创 2011-12-06 21:50:06 · 1380 阅读 · 1 评论 -
Chapter 7 Beginning CXControl
这是第二部分的开始。这里将使用第一部分的知识来开发一个可重用的界面库(UI LIB)。在本书后面的章节中,我们将使用UI LIB为DirectShow Media Player程序开发一套界面。本章主要讲解如何开始创建这个库,它回答了以下问题:■什么是界面库?■我们如何开发控件?■什么是基础控件?■控件结构(control hierarchy)是如何工作的?■所有控原创 2011-12-06 22:24:57 · 1073 阅读 · 0 评论 -
DXUT框架剖析(11)
DXUT统计函数函数描述DXUTGetFPS获取当前每秒提交的帧数DXUTGetFrameStats获取一个指向字符串的指针,该字符串包括每秒帧数、分辨率、后台缓冲区格式、深度缓冲区格式。DXUTGetDeviceStats获取一个指向字符串的指针,该字符串包括当前设备类型、顶点运算行为和设备名。DXUTGetFPSGet the c原创 2011-12-06 21:59:32 · 1092 阅读 · 0 评论 -
DXUT框架剖析(8)
DXUT框架与错误处理Direct3D API的设计使程序能比较容易地处理各种错误,尽管大多数Direct3D API函数返回HTRSULT值,但只有一部分函数返回设备错误,如D3DERR_DEVICELOST或D3DERR_DRIVERINTERNALERROR。但是通常的Direct3D应用程序使用多种API函数,当传递的参数不合要求时,将返回D3DERR_INVALIDCALL。原创 2011-12-06 21:57:06 · 1306 阅读 · 0 评论 -
DXUT框架剖析(5)
修改可用的设备应用程序可以通过DXUTSetCallbackDeviceChanging()设置回调函数来修改Direct3D设备的创建设置:Sets a callback function that allow the application to change the device settings before the device is created.VOID DXU原创 2011-12-06 21:51:23 · 1122 阅读 · 0 评论