真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#中如何使用Direct3D模型

今天就跟大家聊聊有關(guān)C# 中如何使用Direct3D模型,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、崇州網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場(chǎng)景定制、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為崇州等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

C# Direct3D模型由World 空間,View 空間和光源組成。World空間就像我們現(xiàn)實(shí)生活中的空間一樣,我們可以把物體放在這個(gè)空間的任何地方。但僅僅這樣是不夠的。因?yàn)楝F(xiàn)實(shí)中,我們是通過(guò)眼睛來(lái)看事物的,存在的東西不一定我們可以看得到,太遠(yuǎn)的東西看不到,被擋住的東西看不到,太近的東西也看不到,在我們視角以外的東西一樣看不到。在 Direct3D中用camera來(lái)模擬我們的眼睛。

另外還有一個(gè)重要概念,transform,變換。在world空間中,我們可以把物體移動(dòng),旋轉(zhuǎn),這需要通過(guò)變換來(lái)實(shí)現(xiàn)。通過(guò)camera來(lái)決定我們最終能看到的那些東西時(shí)也是經(jīng)過(guò)變換。在Direct3D中,變換是通過(guò)4x4的矩陣來(lái)實(shí)現(xiàn)的。

不是搞算法的人沒有必要了解矩陣的具體內(nèi)容,可以通過(guò)Maxtrix中的靜態(tài)函數(shù)來(lái)創(chuàng)建矩陣:
◆Matrix.RotationX()
◆Matrix.RotationY()
◆Matrix,RotationZ()創(chuàng)建分別圍繞X,Y,Z軸旋轉(zhuǎn)的矩陣。
◆Matrix.Translation()用來(lái)創(chuàng)建移動(dòng)物體的矩陣。

而與camera相關(guān)的變換有兩個(gè),View Transform,和Projection Transform.View Transform用來(lái)定義camera的信息。而Projection Transform用來(lái)定義我們的可見范圍,也就是說(shuō)那些物體會(huì)被繪制到屏幕上去。

另外一個(gè)很重要的概念就是光源,在真實(shí)世界中,沒有光的情況下我們是看不到東西的,即使他存在。而且我們看到的物體的顏色/亮度,與光源的顏色/亮度,與他本身的材質(zhì)/顏色都有關(guān)系。在Direct3D中也是如此,一旦一個(gè)物體在我們的可視范圍內(nèi),并且沒有被遮擋住,那么他能否可見,以及什么顏色/亮度,就由光源,物體的材質(zhì)來(lái)決定了。

下面就開始我們的例子。首先把我們的代碼中的頂點(diǎn)格式,改成PositionColored格式。注意坐標(biāo)哦,這里的坐標(biāo)可不是屏幕坐標(biāo)系了,而是World坐標(biāo)系,是左手笛卡爾3D坐標(biāo)系。***步的代碼如下:

  1. using System;  

  2. using System.Collections.Generic;  

  3. using System.ComponentModel;  

  4. using System.Data;  

  5. using System.Drawing;  

  6. using System.Windows.Forms;  

  7. using Microsoft.DirectX;  

  8. using Microsoft.DirectX.Direct3D;  

  9. #endregion  

  10. namespace Exam2  

  11. {  

  12. partial class Form1 : Form  

  13. {  

  14. private Device device = null;  

  15. public Form1()  

  16. {  

  17. InitializeComponent();  

  18. this.SetStyle( ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true );  

  19. }  

  20. public void InitializeGraphics()  

  21. {  

  22. PresentParameters para = new PresentParameters();  

  23. para.Windowed = true;  

  24. para.SwapEffect = SwapEffect.Discard;  

  25. device = new Device( 0, DeviceType.Hardware, this, 
    CreateFlags.HardwareVertexProcessing, para );  

  26. }  

  27. private void Form1_Paint(object sender, PaintEventArgs e)  

  28. {  

  29. device.Clear( ClearFlags.Target, Color.Blue, 0.0f, 0 );  

  30. CustomVertex.PositionColored[] verts = new CustomVertex.PositionColored[3];  

  31. verts[0].Position = new Vector3(0.0f, 1.0f, 1.0f);  

  32. verts[0].Color = Color.Aqua.ToArgb();  

  33. verts[1].Position = new Vector3(-1.0f, -1.0f, 1.0f);  

  34. verts[1].Color = Color.Black.ToArgb();  

  35. verts[2].Position = new Vector3(1.0f, -1.0f, 1.0f);  

  36. verts[2].Color = Color.Purple.ToArgb();  

  37. device.BeginScene();  

  38. device.VertexFormat = CustomVertex.PositionColored.Format;  

  39. device.DrawUserPrimitives( PrimitiveType.TriangleList, 1, verts );  

  40.  

  41. device.EndScene();  

  42. device.Present();  

  43. this.Invalidate();  

  44. }  

  45. }  

看完上述內(nèi)容,你們對(duì)C# 中如何使用Direct3D模型有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


網(wǎng)站欄目:C#中如何使用Direct3D模型
瀏覽路徑:http://weahome.cn/article/pjcseo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部