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

随笔分类 -  DirectX

DirectX截图黑屏的解决办法
摘要:好久没有更新博客了,今天开始继续耕耘。生活要继续工作要继续梦想也一定要继续!之前写过一篇关于DirectX截屏的文章,其中有网友留言提到了截图黑屏的问题,于是这些日子研究了一下,与大家一同分享。为什么会黑屏?一句话概括,黑屏是由于DDraw加速引起的!先说一下DirectX的显示原理,通常我们看到的屏幕上的数据,都是通过Primary Surface送至显示器的,什么是Primary Surface呢?中文叫做主显示表面,也就是说我们当前看到的屏幕上的图像数据是从这个表面来的,除了主表面意外还有离屏表面,叫做OffScreenSuface。这种表面中的数据是不直接显示在屏幕上的。常用的截屏函数 阅读全文

posted @ 2012-04-03 08:38 翰墨小生 阅读(22747) 评论(4) 推荐(3) 编辑

DirectX实现球面纹理映射
摘要:介绍球面纹理映射就是将一个平面纹理映射到球面上。见下图。实现球面纹理映射有两种方法,一种是使用顶点的法向量来生成纹理坐标,另一个是使用顶点的位置向量来生成纹理坐标。使用顶点的法向量生成纹理坐标分析问题的本质是根据球面上每个点的法向量坐标生成对应的纹理坐标,请看下图,下图中外部的方框表示二维纹理坐标,其范围是(u,v)min = (0,0), (u,v)max = (1,1),中间的圆形表示球面法向量坐标,其x,y分量的范围是(x,y)min = (-1,-1), (x,y)max = (1,1)。所以问题的本质变成了两组坐标的映射,也即将区间(x,y)min - (x,y)max映射到区间(u 阅读全文

posted @ 2011-09-13 21:23 翰墨小生 阅读(8855) 评论(10) 推荐(5) 编辑

DirectX-渲染到纹理
摘要:什么是纹理熟悉DX的兄弟们都知道什么叫纹理了,这里简单介绍一下,先看看现实生活中的例子吧,其实纹理的例子比比皆是,比如地板,墙面都是纹理。在图形学中,纹理主要是为了增强场景的真实感,如果你想绘制一个地面,简单一点可以直接使用一个矩形,稍微复杂一点可以用三角形网格,再复杂一点可以使用地面纹理,有了纹理以后真实感明显增强了。DX中的纹理映射其实就是对现实生活中纹理的模拟,D3D中有专门的数据结构来管理纹理。渲染到纹理常规的渲染操作都是直接将场景呈现到backbuffer中的,backbuffer说白了其实就是一个表面,再说白了就是一块内存,场景通过绘制函数载入显存后,再通过Present函数送至显 阅读全文

posted @ 2011-04-23 08:21 翰墨小生 阅读(14965) 评论(20) 推荐(10) 编辑

用DirectX实现多视图渲染
摘要:什么是多视图一般的3D程序都只有一个视图,对应整个窗口的客户区。多视图就是在一个窗口中放置多个视图,以便从不同的角度观察模型或者场景。很多图形软件都有这个功能,比如大家熟知的3DMax就有四个视图,分别是前视图,左视图,顶视图和透视图。还有一些游戏引擎也有类似的Demo,比如irrlicht引擎中的SplitScreen就是用多视图实现的,如下图。什么是视口(viewport)?用DirectX实现多视图有几种方法,可以使用多个Viewport,也可以使用多个Swap Chain,后者实现起来比较复杂,以后再做介绍,先看如何使用多个viewport来实现。那么到底什么是viewport呢?举个 阅读全文

posted @ 2011-03-26 09:16 翰墨小生 阅读(10488) 评论(6) 推荐(5) 编辑

如何调试DX程序
摘要:配置调试环境如果安装了DirectX SDK,就可以通过SDK中的DirectX Control Panel来设置调试选项,这个工具位于开始-程序-Microsoft DirectX SDK(June 2010)-DirectX Utilities中,也可以在SDK的安装目录下找到,在我这里是C:\Program Files\Microsoft DirectX SDK (June 2010)\Utilities\bin\x86。运行后如下图。由于我机器上安装的是DX9,所以我们只看有关DX9的设置Debug Output Level – 这是调试输出的级别,级别越高,输出的调试信息越丰富,选择 阅读全文

posted @ 2011-03-14 21:17 翰墨小生 阅读(8463) 评论(18) 推荐(6) 编辑

What is VMR(Video Mixing Render)-From MSDN
摘要:Link: http://msdn.microsoft.com/en-us/library/dd373403%28v=vs.85%29.aspxThis section provides an overview of the features in the Video Mixing Renderer 7 (VMR-7) and the VMR-9.Features of the VMRVMR vs. Previous DirectShow RenderersVMR System RequirementsVMR Filter ComponentsRelated TopicsUsing the V 阅读全文

posted @ 2011-02-23 13:06 翰墨小生 阅读(733) 评论(0) 推荐(0) 编辑

D3DPOOL(资源池)
摘要:D3DPOOL定义了资源对应的内存类型,资源可以是texture surface, vertex buffer等,从内存的角度来看,资源有以下几种类型。 D3DPOOL_DEFAULT D3DPOOL_MANAGED D3DPOOL_SYSTEMMEM D3DPOOL_SCRATCH D3DPOOL_FORCE_DWORD D3DPOOL_DEFAULT 资源被存储在最适合给定资源访问的内存中,这通常是显存,包括本地显内存和AGP内存,D3DPOOL_DEFAULT不同于D3DPOOL_MANAGED和D3DPOOL_SYSTEMMEM,它指出了资源被存储在最适合设备访问的内存中,D3DPOO 阅读全文

posted @ 2011-02-13 12:26 翰墨小生 阅读(4286) 评论(0) 推荐(0) 编辑

D3D中的设备丢失
摘要:周末闲着没事,翻译一段DirectX SDK帮助文档,是关于设备丢失及其处理方法的。路径是DirectX Graphics-Direct3d 9-Programming Guide-Getting Started-Direct3D Devices-Lost Devices,翻译完才发觉,原来翻译并不是那么容易的事,总是觉得某些地方词不达意,英文水平亟待提高!设备丢失一个Direct3D设备要么处于可操作状态,要么处于丢失状态,可操作状态即正常状态,设备按预期运行并渲染。当某些事件发生时,设备将转入丢失状态,比如在全屏状态下失去键盘焦点,这将导致无法继续渲染。设备丢失的一个特点是所有的渲染操作都 阅读全文

posted @ 2011-02-13 11:34 翰墨小生 阅读(4896) 评论(0) 推荐(1) 编辑

用DirectX实现动态纹理
摘要:什么是动态纹理动态纹理是相对于常规的纹理而言的,通常的纹理都是静态的,而动态纹理就是模型保持不动,而纹理动态变化,凡是能够对模型应用的变换,也能作用于纹理,比如平移,旋转,缩放,投影,shear等都不在话下,使用动态纹理可以模拟很多现象,最常见的就是Dynamic cloud。如何实现动态纹理话说这个问题还是我在一次面试的时候遇到的。面试官:怎样让一个纹理动起来我:让模型动起来即可面试官:如果不允许移动模型呢?只动纹理我:。。。其实这个问题并不难,只要明白一点,纹理也是有坐标的,既然有坐标,就可以改变位置,位置可以改变,就能做出动态效果来。普通的纹理坐标都是二维的,用(u, v)来表示,这里u 阅读全文

posted @ 2010-12-19 19:26 翰墨小生 阅读(8126) 评论(3) 推荐(2) 编辑

D3DPT_TRIANGLELIST与D3DPT_TRIANGLESTRIP
摘要:这两种方式都可以绘制三角形网格,那么在什么情况下使用它们呢?如果要画多个三角型,那么使用D3DPT_TRIANGLELIST一定要配合IndexBuffer,否则的话将要重复定义很多顶点,如果要画少量的三角型,则可以使用D3DPT_TRIANGLESTRIP来代替D3DPT_TRIANGLELIST,比如要画一个矩形(也叫Quad,通常用在渲染一个纹理图片时),则可以由两个三角型拼接而成,比如有如下顶点定义,则可以通过TRIANGLESTRIP来拼接成一个矩形。那么如何确定顶点的定义顺序以保证TRIANGLESTRIP能正确工作呢?这里有个小窍门1 确保前三个顶点是顺时针方向的,如下面的V0V 阅读全文

posted @ 2010-11-22 14:58 翰墨小生 阅读(5758) 评论(0) 推荐(0) 编辑

Primitive Type in DX
摘要:在调用DrawPrimitive函数时,一定要指定正确的图元个数,否则会出现诡异的结果,看下面的例子假设有下图所示的7个顶点如果图元类型是D3DPT_POINTLIST,那么按道理只能画三条线,结果如下[代码]但是如果一不小心将图元个数设置为4,就会出现下面的结果[代码]可见,如果顶点个数不够的话,DX选择了顶点(0,0)来终结。 阅读全文

posted @ 2010-11-22 10:41 翰墨小生 阅读(809) 评论(0) 推荐(0) 编辑

DirectX backface culling(背面剔除)
摘要:先看一下什么是backface,有backface必然就有frontface,在DX中,frontface是这样定义的,按照顶点定义的先后顺序,呈顺时针排列的顶点构成的三角形是frontface(以view space为参考),与frontface相对的面则是backface,如下图所示。可见决定frontface的因素有两个顶点定义的先后顺序顶点的排列方向-顺时针或者逆时针(由顶点的位置坐标决定)先看第一条,如果顶点的位置不变,但是定义顺序变了,可能导致frontface变成backface,如下图再看第二条,如果顶点的定义顺序不变,但是位置变了,也可能导致frontface变成backfa 阅读全文

posted @ 2010-11-21 16:19 翰墨小生 阅读(11209) 评论(5) 推荐(2) 编辑

D3DCOLOR与D3DXCOLOR
摘要:D3DCOLORD3DCOLOR实际上是一个DWORD,看一下它的定义(位于d3d9types.h中)// D3DCOLOR is equivalent to D3DFMT_A8R8G8B8#ifndef D3DCOLOR_DEFINEDtypedef DWORD D3DCOLOR;#define ... 阅读全文

posted @ 2010-09-02 16:23 翰墨小生 阅读(6847) 评论(3) 推荐(0) 编辑

D3D中设备丢失的处理
摘要:什么是设备丢失D3D中设备(Device)有两种状态,一种是可操作状态,也就是正常状态,另一种是丢失状态(Lost),处于丢失状态的设备是不能进行渲染操作的。简单的说,设备丢失是只应用程序(Device)与显卡失去了联系,因此无法使用显存。这里的Device不是只硬件,而是我们在程序中创建的Device对象,可以理解为上下文环境。什么情况会导致设备丢失当某些事件发生时,设备会由正常状态转换到丢失状态。这些事件包括程序在全屏状态下失去键盘焦点(全屏时按下Alt+Tab或Win+D键或Win+L键)其他程序进入全屏状态电源管理事件,比如屏保等设备丢失的现象渲染窗口内模型丢失渲染窗口背景色变黑或者干 阅读全文

posted @ 2010-08-21 22:51 翰墨小生 阅读(13708) 评论(4) 推荐(1) 编辑

VertexShader入门
摘要:Shader与固定管线顶点着色(Vertex Shader)是一段执行在GPU上的程序(一般用HLSL来编写),用来取代fixed pipeline中的transformation和lighting,Vertex Shader主要操作顶点。 有图则一目了然。 Vertex Shader做了什么工作 由上图知,Vertex Shader对输入顶点完成了从local space到homogeneous... 阅读全文

posted @ 2010-08-13 17:14 翰墨小生 阅读(13253) 评论(2) 推荐(5) 编辑

射线和三角形的相交检测(ray triangle intersection test)
摘要:本文以Fast, Minimum Storage Ray Triangle Intersection为参考,在此感谢原作者,大家也可以直接阅读原版。概述射线和三角形的相交检测是游戏程序设计中一个常见的问题,最典型的应用就是拾取(Picking),本文介绍一个最常见的方法,这个方法也是DirectX中采用的方法,该方法速度快,而且存储空间少。先讲述理论,然后给出对应的代码实现。 理论部分一个直观的方法我想大多数人在看到这个问题时,可能都会想到一个简单而直观的方法:首先判断射线是否与三角形所在的平面相交,如果相交,再判断交点是否在三角形内。判断射线是否与平面相交判断点是否在三角形内但是,上面的方法 阅读全文

posted @ 2010-08-09 13:41 翰墨小生 阅读(33679) 评论(31) 推荐(8) 编辑

DirectX常见编译错误及解决办法
摘要:常见的编译错误及解决办法1. fatal error LNK1104: cannot open file 'largeint.lib'直接删除对largeint.lib的引用即可2. fatal error CVT1100: duplicate resource. type:MANIFEST, na... 阅读全文

posted @ 2010-06-07 17:19 翰墨小生 阅读(7157) 评论(2) 推荐(0) 编辑

Visual Studio Auto-expand Information for DirectX 9
摘要:The original page of this article is: http://www.inframez.com/papers/d3d_autoexp.htm Visual Studio comes with a nice debugging feature called Auto-expand. With this feature, you are able to inspect im... 阅读全文

posted @ 2010-05-20 09:26 翰墨小生 阅读(448) 评论(0) 推荐(1) 编辑

Error Checking in DX
摘要:from http://nexe.gamedev.net/directKnowledge/default.asp?p=Debugging When you're trying to find out why a specific function is failing - and the debug output isn't helping - you need to work with retu... 阅读全文

posted @ 2010-05-20 09:04 翰墨小生 阅读(652) 评论(0) 推荐(1) 编辑

First Chance Exception
摘要:When you run DX program in debug mode and enable debug setttings in DX control panel, you may get the First Chance Exceptions, like the following: First-chance exception at 0x75ac9617 in Sura.exe: Mic... 阅读全文

posted @ 2010-05-18 17:15 翰墨小生 阅读(5268) 评论(0) 推荐(1) 编辑

导航

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