Direct3D学习笔记(二)我们这里可以编写一个完全意义上的Direct3D程序了

2016-01-29 12:45 35 1 收藏

Direct3D学习笔记(二)我们这里可以编写一个完全意义上的Direct3D程序了,Direct3D学习笔记(二)我们这里可以编写一个完全意义上的Direct3D程序了。

【 tulaoshi.com - ASP.NET 】


首先,我们要认识的是device,这也是Direct3D的基本The Direct3D 设备所有的有关绘图的Direct3D类的根就是device类,你可以认为这个类就是你电脑中的真实设备,所有在你所绘制的场景中的的图形对象都是从这个类衍生出来的。在这里,device有三个构造函数,现在,我们只准备使用其中的一个,在后面的章节中,我们将介绍另外的构造函数。我们要使用的函数原型和参数说明如下public Device ( System.Int32 adapter ,Microsoft.DirectX.Direct3D.DeviceType deviceType ,System.Windows.Forms.Control renderWindow , Microsoft.DirectX.Direct3D.CreateFlags behaviorFlags, Microsoft.DirectX.Direct3D.PresentParameters presentationParameters )第一个是你的物理显示卡的设备豪,一般是0;第二个参数deviceType,是告诉Direct3d你要建立的设备类型,一般使用DeviceType.Hardware,意思是你建立一个硬件设备类型,还有一个参数值是DeviceType.Reference,标准类型,除非是在进行调试的时候采用这个参数,其他时候是不必要的,因为会使你的程序运行得非常非常的慢。他打开的光栅,或者是在测试显示卡是否支持光栅功能时使用第三个是enderWindow,他告诉程序使用什么来呈现你所需要的场景,我们一般使用this,这里代表使用本窗口来呈现第四个behaviorFlags是设备建立以后的表示幅,这样说吧,我们使用的是软件顶点处理,也就是说所有的多边形定点建立都是由cpu来完成的,不用显卡完成,这样的话,速度确实比直接使用显卡完成要慢一些,但是我们还不清楚是否所有使用本程序的人的显卡是否支持这个特性,所以为了安全起见,我们在这里参数中设置为cpu完成模型建立的工作presentationParameters 比较麻烦,我们这里只是设置的是否全屏显示,其实他还包括一些设置,如后台缓冲区的高度、宽度和像素格式,以及从后台缓冲区复制到前台缓存屏幕显示的方式等等。如果Direct3D采用窗口方式运行,像素格式必须查询当前的显示模式获得好了,参数也介绍完了,现在我们开始来建立我们的第一个设备吧,首先,和所有c#语言一样,我们必须先申请一个设备,我们可以在frme1类下面申请一个设备private Device device = null;然后,我们建立一个初始化函数来初始化我们的设备,这里就要用到刚刚所讲的构造函数了。public void InitializeGraphics(){ // 设置参数 PresentParameters presentParams = new PresentParameters(); presentParams.Windowed = true; //窗口模式 presentParams.SwapEffect = SwapEffect.Discard; //交换 // 创建设备 device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);}在这里,建立设备以前,我们申请了一个presentParams(表达参数),来设置一些我们所关心的地方,比如窗口模式和双缓存,然后建立设备,按照上面的参数,我们建立一个这样的设备,它使用我们的第一块显卡,硬件加速,在本类(也就是我们的windows窗口)中呈现场景,使用cpu建立多边形顶点,并且是窗口模式,使用SwapEffect接下来,我们要来调用这个函数以便设备的真正建立。static void Main(){ using (Form1 frm = new Form1()) { // 显示窗口并初始化 frm.Show(); frm.InitializeGraphics(); Application.Run(frm); }}这里代码就不多说了,大家都可以看懂注意以下,这里修改了.NET默认的代码,使用了using 语句和show(),是为了确保程序的安全性,可以保证在我们建立我们的设备以前,windows窗口已经建立并且加载完全。我建议大家以后写的时候都这样。好了,现在你可以编译代码了。现在,就是我们所建立的第一个Direct3D程序呵呵,这里程序虽然十分的简单,但是它已经是一个完整意义上的Direct3D程序了,在DirectX9.c发布以后,通过c#语言这样的描述,Direct3D程序编写起来比用c++要简单得过了,而且随着.net平台的主导地位逐渐加强,这种感觉将越来越明显。不过,老美的东西仍旧是老美的东西,我们再怎么样,现在看来也不过是个民工,别人给好了图纸,我们只是砌房子,这点,在我找资料的时候就发现了,中文文档,连翻译的都非常非常少,更别说原创的了。所以,我在这里把我看得英文文档逐渐翻译过来,希望能给大家帮助,让我们之中也多几个画图纸的而不是砌房子的。呵呵~~~~~

来源:https://www.tulaoshi.com/n/20160129/1487444.html

延伸阅读
模型是基于一个古典型的罐子(在3D作品展上看到的)使用的工具是3DMAX,学习这个教程需要具备一些基本知识 基本模型的产生主要是使用了一个旋转命令,如图,除了选择了的点(红)是拐角BEZIER外,其它的点都是光滑的BEZIER. 模型的上半部分利用一个圆柱体的UVW map贴图修改器,将一张用PHOTOSHOP做好的一张BITMAP映射到上边,通过调整贴...
标签: 暗黑破坏神3
《暗黑破坏神3》一个喷子的d3小心得 几个简写的含义,写给纯新手的,D2的老鸟请无视: build,简单说就是练号。WIZ=秘术师,DH=猎魔人,SOR=巫女,MF=magic find。ACT#=第#章节,AH=拍卖行,KD=kill diablo,NEC=死灵法师,W=万,DPS=秒伤,RP=人品,BUFF=增益效果,BOSS=BOSS 关于性价比较好的角色build,个人还是比较倾向于wiz,既...
【PS文字特效】PS创建一个时尚的3D文字效果   先看下效果: 一、创建背景和文本形状 Step 1 创建一个新文档,大小为1500*1250像素,填补背景颜色为# DBDBDB。 Step 2 创建文本层,字母要全部大写,字体颜色设置为# 6d6d6d,字体为无衬线Exb FLF,大小设置为370 pt。设置行距为200pt,字符间的字距微...
这篇教程中,我将展示如何用AI去创建一个3D楼层户型图。本教程非常简单,总共只有简单的6步。该方法可以用在图表或建筑物的布局图中。让我们开始吧。
标签: Illustrator
本文由 中国 雨醉 编译,转载请保留此信息! 效果图   [next] 1、建立路径 首先,使用钢笔工具建立如下图的路径。打开菜单效果3D绕转。 3D 绕转对话框 选择绕转之后 ,会在页面的最上方出现一个对话框。 如果表面的光照选项部分没有出现在对话框中,请单更多选项按钮 点击光源对话框新建按钮,新建一个光源,并如...

经验教程

401

收藏

96
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部