今天就跟大家聊聊有關C# 中如何使用Direct3D模型,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
創新互聯專注于企業成都全網營銷推廣、網站重做改版、崇州網站定制設計、自適應品牌網站建設、H5場景定制、商城建設、集團公司官網建設、外貿營銷網站建設、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為崇州等各大城市提供網站開發制作服務。
C# Direct3D模型由World 空間,View 空間和光源組成。World空間就像我們現實生活中的空間一樣,我們可以把物體放在這個空間的任何地方。但僅僅這樣是不夠的。因為現實中,我們是通過眼睛來看事物的,存在的東西不一定我們可以看得到,太遠的東西看不到,被擋住的東西看不到,太近的東西也看不到,在我們視角以外的東西一樣看不到。在 Direct3D中用camera來模擬我們的眼睛。
另外還有一個重要概念,transform,變換。在world空間中,我們可以把物體移動,旋轉,這需要通過變換來實現。通過camera來決定我們最終能看到的那些東西時也是經過變換。在Direct3D中,變換是通過4x4的矩陣來實現的。
不是搞算法的人沒有必要了解矩陣的具體內容,可以通過Maxtrix中的靜態函數來創建矩陣:
◆Matrix.RotationX()
◆Matrix.RotationY()
◆Matrix,RotationZ()創建分別圍繞X,Y,Z軸旋轉的矩陣。
◆Matrix.Translation()用來創建移動物體的矩陣。
而與camera相關的變換有兩個,View Transform,和Projection Transform.View Transform用來定義camera的信息。而Projection Transform用來定義我們的可見范圍,也就是說那些物體會被繪制到屏幕上去。
另外一個很重要的概念就是光源,在真實世界中,沒有光的情況下我們是看不到東西的,即使他存在。而且我們看到的物體的顏色/亮度,與光源的顏色/亮度,與他本身的材質/顏色都有關系。在Direct3D中也是如此,一旦一個物體在我們的可視范圍內,并且沒有被遮擋住,那么他能否可見,以及什么顏色/亮度,就由光源,物體的材質來決定了。
下面就開始我們的例子。首先把我們的代碼中的頂點格式,改成PositionColored格式。注意坐標哦,這里的坐標可不是屏幕坐標系了,而是World坐標系,是左手笛卡爾3D坐標系。***步的代碼如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
#endregion
namespace Exam2
{
partial class Form1 : Form
{
private Device device = null;
public Form1()
{
InitializeComponent();
this.SetStyle( ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true );
}
public void InitializeGraphics()
{
PresentParameters para = new PresentParameters();
para.Windowed = true;
para.SwapEffect = SwapEffect.Discard;
device = new Device( 0, DeviceType.Hardware, this,
CreateFlags.HardwareVertexProcessing, para );}
private void Form1_Paint(object sender, PaintEventArgs e)
{
device.Clear( ClearFlags.Target, Color.Blue, 0.0f, 0 );
CustomVertex.PositionColored[] verts = new CustomVertex.PositionColored[3];
verts[0].Position = new Vector3(0.0f, 1.0f, 1.0f);
verts[0].Color = Color.Aqua.ToArgb();
verts[1].Position = new Vector3(-1.0f, -1.0f, 1.0f);
verts[1].Color = Color.Black.ToArgb();
verts[2].Position = new Vector3(1.0f, -1.0f, 1.0f);
verts[2].Color = Color.Purple.ToArgb();
device.BeginScene();
device.VertexFormat = CustomVertex.PositionColored.Format;
device.DrawUserPrimitives( PrimitiveType.TriangleList, 1, verts );
device.EndScene();
device.Present();
this.Invalidate();
}
}
}
看完上述內容,你們對C# 中如何使用Direct3D模型有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創新互聯行業資訊頻道,感謝大家的支持。
本文名稱:C#中如何使用Direct3D模型
本文鏈接:http://m.newbst.com/article40/pjcseo.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、網站收錄、小程序開發、網站導航、動態網站、網頁設計公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯