随笔分类 - D3D
摘要:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--//=============================================================================//Desc:纹理影射基础//======...
阅读全文
摘要:写了个测试程序,方便个人在使用中查询,不当之处请指出(以下结论均为三角形数为20000,一个批次中完成渲染)1 在三角形数量不超过20000时,DrawIndexedPrimitive和DrawIndexedPrimitiveUP效率没有明显差别, 前提是创建buffer时没有使用D3DUSAGE_DYNAMIC,否则DrawIndexedPrimitive的性能不如DrawIndexedPrim...
阅读全文
摘要:struct D3DPRESENT_PARAMETERS{ UINT BackBufferWidth; UINT BackBufferHeight; D3DFORMAT BackBufferFormat; UINT BackBufferCount; D3DMULTISAMPLE_TYPE MultiSampleType; DWORD MultiSampleQuality; D3DSWAPEFFEC...
阅读全文
摘要:一 poolD3D RUTIME的内存类型,分为3种,VIDEO MEMORY(VM)、AGP MEMORY(AM)和SYSTEM MEMORY(SM),所有D3D资源都创建在这3种内存之中,在创建资源时,我们可以指定如下存储标志,D3DPOOL_DEFAULT、D3DPOOL_MANAGED、D3DPOOL_SYSTEMMEM和D3DPOOL_SCRATCH。VM就是位于显卡上的显存,CPU只能...
阅读全文
摘要:当"allocating vertex buffers_分配顶点缓存"时: 当使用 STATIC(这个是.net 情况,对于非.net版本dx是没有指定D3DUSAGE_DYNAMIC)标识分配顶点缓存时,这块缓存位于显存中。它的典型应用是只写一次并不被读回内存的情况。 只有当标志 D3DUSAGE_DYNAMIC被设置时 D3DUSAGE_WRITEONLY标志才有意义。 如果使用DYNAMIC...
阅读全文
摘要:1 MaxSimultaneousTextures 纹理同时叠加最大数目device->GetDeviceCaps( &Caps );int maxActiveTextures = Caps.MaxSimultaneousTextures;即在 DrawPrimitive 顶点之前,最多设置的纹理数量。如果你的机器显卡较差,这个数为2,就是刚刚好支持多纹理。如下代码所示如果MaxSi...
阅读全文
摘要:版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://xiaoxiang.blog.51cto.com/88051/26928本文大部分内容翻译自Gil Gribb和Klaus Hartmann合写的《Fast Extraction of Viewing Frustum Planes from the World-View-...
阅读全文
摘要:作为一个3D程序员, 我用了OpenGL两年多, 最近在搞一个项目, 从OpenGL转到D3D, 虽然工程外在的框架都封装得不错, 但想完全地从OpenGL转换到D3D, 看起来还是有难度的, 花了我两个星期的时间, 我终于转换过来了。D3D与OpenGL的几点比较明显不同的地方:(一)、正交投影时:OpenGL以屏幕左上角为(0,0), 而D3D却以屏幕中心为(0,0)(二)、OpenGL使用右...
阅读全文
摘要:低手交流,高手勿入作者:BillHsu主页:http://www.graptor.com/GameRes发帖里的公式什么的可能不太整齐,在这里看可能效果好一点~http://hi.baidu.com/probill/blog/item/32111f1ccbc2cd8086d6b6f1.html剪裁平面(ClipPlane)在图形学领域有着重要的作用,比如水面模拟中,渲染折射纹理时,我们就必须将水面...
阅读全文
摘要:文章来源:CAD世界网一般来说, 定位渲染通道瓶颈的方法就是改变渲染通道每个步骤的工作量, 如果吞吐量也改变了, 那个步骤就是瓶颈.。找到了瓶颈就要想办法消除瓶颈, 可以减少该步骤的工作量, 增加其他步骤的工作量。 一般在光栅化之前的瓶颈称作”transform bound”, 三角形设置处理后的瓶颈称作”fill bound”定位瓶颈的办法:...
阅读全文
摘要:一下是我的学习笔记: D3DXVec3project//将3D物理坐标点变到SURFACE的2D点 现在我来解释一下 1.3D物理坐标,看例子 声明 点 A( a,b,c); DEVICE->SETTRANSFORM( WORLD,MATRIX) DRAW (A) 此时A(a,b,c)为物理坐标 若MATRIX为单位矩阵那么A为世界坐标的点 什么叫SURFACE的2D点 是指每个程序中都有个...
阅读全文
摘要:简单总结一下D3D中的拾取问题,所谓拾取就是3D程序中当用户使用鼠标同3D世界内的物体进行交互的时候,如何能正确的实现从用户的鼠标到3D世界中的变换。 呵呵,如果要是推及到原理的话比较复杂,需要好好总结,先从简单的入手,D3D中提供了很多易用的API,使用这些API的话就可以绕过复杂的数学原理,所以呢,我们先来看实际应用中是怎样实现它的。 //首先获取世界、视角、投影矩阵 D3DXMATRI...
阅读全文
摘要: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 ...
阅读全文
摘要:微软D3D设备能创建和操纵下面初基类型:l 点列表l 线列表l 线带l 三角形列表l 三角形带l 三角形扇区你能用IDirect3DDevice9接口中的任何粉刷方法在C++程序中粉刷原基。1.1.1.1. 点列表一个点列表是一个顶点的集合,这些顶点被作为单独的点来粉刷。你的程序可以在3-D场景中用它们作为在多边形表面上开始字段、点线。下图描述了一个粉刷后的点列表。你的程序能在一个点列表上应用素材...
阅读全文
摘要:D3D设备是D3D的粉刷组件;它封装并存储粉刷的状态,另外,D3D设备执行转换和光操作,并光栅化一个图像到一个面上。本节主要包括内容:1. 设备类型2. 创建设备3. 选择设备4. 不为人知的设备5. 决定硬件支持6. 处理顶点数据7. 设备支持的初基类型按照架构来说,D3D设备包含一个转换模块、一个光模块、一个光栅化模块;如下图所示:D3D当前支持两种主要类型的D3D设备:带硬件加速的光栅化以及...
阅读全文
摘要:使用微软的D3D来编程需要熟悉3D几何原理。本节介绍建立3D世界的最重要的几何概念。1.1.1. 3-D坐标系统典型的3D图形程序使用两种笛卡儿坐标系统:左手和右手。两个坐标系统中,正X轴指向右边,正Y轴指向上。你可以通过你左右手指间指向与正X轴相同时大拇指指向的方向来记住坐标方向。下图描述了这两种系统。微软的D3D使用左手系统,如果你正在将一个基于右手坐标系统的程序导入到程序中,你必须做两个改变...
阅读全文
摘要:1. D3D入门本节提供一个对D3D图形编程接口(API)的简短介绍。这里你将发现一个图形管道的概貌以及帮助你实现基本D3D功能的指南。1.1. D3D架构本节包含Microsoft的D3D组件、其他Microsoft DirectX、操作系统和系统硬件之间的关系;下面将讨论这些主题。1.1.1. D3D的架构概览这是一个图形管道的描述。每个块的功能性在下面介绍,连接包含更多的信息。更多关于D3D...
阅读全文
摘要:好好的一个程序,在我的电脑(ELSA X800 256M显卡)上运行一切正常,拿到别的电脑(845G内置显卡)上。啊。花屏~~赶快调试,幸好公司的电脑也有这种内置显卡的电脑。赶快用远程调试。谁知这一调试,就花了我整整一个上午。。。赶快写下来。。。最终排差的原因是DrawIndexedPrimitiveUP最后一个参数VertexStreamZeroStride ,这个参数是用来指定顶点所占的字节数...
阅读全文
摘要:Rendering from Vertex and Index Buffers (Direct3D 9) Direct3D提供了索引和非索引两种绘制方式,索引方式使用一组索引(表示)所有的顶点组成,顶点数据是存储在顶点缓冲区中,索引数据是存储 在索引缓冲区中。下面是一小部分使用顶点缓冲区和索引缓冲区时所具有的公共说明。 这些例子比较IDirect3DDevice9::DrawPrimit...
阅读全文
摘要:(本人英语水平有限,翻译的目的只是为了加深印象和自己以后查询,翻译不足之处请谅解)IDirect3DDevice9::DrawPrimitive渲染一组非索引,指定类型的图元,从当前输入数据流中HRESULT DrawPrimitive( D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount);Parameter...
阅读全文