Direct3D9初級教程 (轉)
前言::namespace prefix = o ns = "urn:schemas--com::office" />
這篇教程是為初學者準備的,只要會簡單的VC++以及一點立體幾何的基礎知識即可。透過它,可以瞭解到Direct3D的基本概念,學會繪製簡單的幾何圖形,並掌握光源、材質和紋理的基本用法。
3D繪圖的實質就是在二維螢幕上建立三維幻覺,為此要用到一些數學變換來建模和處理幾何圖形。我將盡可能用通俗易懂的語言來解釋這些變換及其用法,避免涉及複雜的數學知識。
1 開發環境
本文選用VC++ 6.0做語言環境,建議Service Pack5包。為了建立Direct3D,需要從網站安裝 SDK,我用的是最新的9.0版,大概200多兆,網址 s/"> 。安裝完SDK後,開發環境就搭建好了。當然,要執行編譯好的程式,DirectX9是必不可少的(微軟已經在SDK中包含了DirectX9的安裝)。
DirectX9 SDK為VC提供了一個程式嚮導,可以很方便地生成“空”的Direct3D程式。不過為了便於讀者掌握Direct3D程式設計的基礎知識,本文將以MFC單文件程式(SDI)為,在其上新增Direct3D繪圖功能。
2 使用COM
DirectX的功能都是以COM元件的形式提供的。COM是元件模型(Component Model)的簡寫,它是一種,用來實現模組間的二進位制連線。當這種連線建立後,兩個模組之間就可以透過稱為“介面(Interface)”的機制來通訊。我們常用的就是一種COM元件。
COM的實現細節相當複雜,完全可以寫一本厚厚的專著。不過別擔心,微軟已經為我們最大限度地簡化了COM的使用,即便你對COM一竅不通也沒關係。作為Direct3D開發人員,只要瞭解介面及其用法就行了:所謂介面,其實就是一組特殊的C++物件,應用程式透過這些物件的成員,來訪問COM元件,實現元件的功能。在COM術語中,這些成員函式被稱作方法(Method)。雖然稱呼變了,但其呼叫語法與普通的C++物件相比,並無二致。介面的特殊性在於它的生成和銷燬都由完成,無須使用者干預。
在Direct3D程式設計中,我們要做的工作基本上可以歸納為:
呼叫適當的函式獲取介面指標;
呼叫介面的方法(成員函式)來完成所需功能;
用完介面後,呼叫Release方法進行“釋放”,注意釋放順序應該和獲取它們的順序相反。
3 第一個程式-初始化Direct3D
3.1 建立程式框架
3.2 初始化Direct3D
3.3 渲染
3.4 釋放介面
4 畫一個三角形
4.1 一些數學概念
4.2 畫一個三角形
5 畫一個三稜錐-快取和Z快取
5.1 什麼是索引快取
5.2 建立索引快取
5.3 渲染索引快取
5.4 開啟Z快取
6 畫一個圓錐-燈光和材質
6.1基本概念
6.2 燈光
6.3 材質
6.4 畫一個圓錐
6.5高洛德著色和平面著色
7 為圓錐新增紋理
7.1 基本概念
7.2 建立紋理
7.3 用紋理渲染
8 Mesh模型
8.1 什麼是Mesh模型
8.2 繪製Mesh模型
9 顯示文字
10 Direct3D中的2D
11 Direct3D的程式結構
請注意:
因為原文章使用PDF格式編寫,
且文章比較長,插圖多,
不太容易轉貼,
感興趣的同志請從下列地址下載全文,
/d3d9-pdfbook.zip">
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998302/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ActiveMQ初級教程MQ
- VB初級教程(第一章) (轉)
- 《熬夜整理》保姆級系列教程-玩轉Wireshark抓包神器教程(1)-初識Wireshark
- 初級行轉列示例
- yii2 開發 API 初級教程API
- COBOL語言初級教程(2)--COBOL程式
- Python影象處理庫:Pillow 初級教程Python
- Python影像處理庫:Pillow 初級教程Python
- COBOL語言初級教程(1)--COBOL簡介
- JasperReport初級教程(2.0.3)圖文詳解
- LeetCode初級-反轉字串LeetCode字串
- 初級~~初級~~~初初級~~~KanjiWeb 3.0 (漢字通)破解~~~~~~~~~ (8千字)Web
- 最適合入門的 Laravel 初級教程 (一)Laravel
- 最適合入門的 Laravel 初級教程 (二)Laravel
- COBOL語言初級教程(1)--COBOL簡介(續)
- 運維初級實踐——Linux系統命令教程運維Linux
- IOS 初級開發入門教程(一)介紹篇iOS
- 入門必學:初級電腦命令(轉)
- Java 教學例子 目錄樹 (初級) (轉)Java
- Linux防火牆配置初級入門(轉)Linux防火牆
- [分享]個人電腦初級防黑指南(轉)
- 初識Linux教程:Linux基礎(轉)Linux
- 安卓初級開發教程 ppt+視訊+案例原始碼安卓原始碼
- Oracle PL/SQL語言初級教程之異常處理OracleSQL
- 初學者Mybatis的初級使用MyBatis
- Js型別轉換之相等運算子[初級]JS型別
- 初級程式設計師考試大綱 (轉)程式設計師
- 寫給後端的Hadoop初級入門教程:概念篇後端Hadoop
- 寫給後端的Nginx初級入門教程:Nginx原理初探後端Nginx
- 寫給後端的Nginx初級入門教程:基礎篇後端Nginx
- .NET輕量級MVC框架:Nancy入門教程(一)——初識NancyMVC框架NaN
- npm 初學者教程NPM
- 資料庫技術初級考試說明 (轉)資料庫
- 保姆級教程!玩轉 ChunJun 詳細指南
- Principle 高請視訊教程入門初級試學視訊教程免費下載
- [譯] 用 Python 實現馬爾可夫鏈的初級教程Python馬爾可夫
- 2019 壓題會計初級職稱考試教程
- CCNA640-801:路由器初學者完全教程(轉)路由器