燈球編程
Ⅰ 急需用C++編程畫出一些三維形體,如球,立方體等的程序代碼,希望某大神能夠降臨急救!!!!
#include<d3d9.h> //Direct3D程序不需的頭文件
#include<d3dx9.h>//如果要使用D3DX庫就必須加入這個頭文件
#include<mmsystem.h>
#include<windows.h>
#pragma comment(lib,"d3d9.lib")
#pragma comment(lib,"d3dx9.lib")
#pragma comment(lib,"winmm.lib")
//4個本程序用到的全局變數
LPDIRECT3D9 g_pD3D = NULL; //Direct3D指針
LPDIRECT3DDEVICE9 g_pD3DDevice = NULL;//Direct3D設備
LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL;//頂點緩沖區指針
LPDIRECT3DINDEXBUFFER9 g_pIB = NULL;//索引緩沖區指針
//定義使用到的頂點結構
struct CUSTOMVERTEX
{
FLOAT x,y,z;
DWORD color;
};
//定義上述頂點的FVF結構
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)
//初始化Direct3D設備過程函數
HRESULT InitD3D(HWND hWnd)
{
//創建Direct3D對象
if(NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)))
{
return E_FAIL;
}
//填寫創建Direct3D設備結構體
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp,sizeof(d3dpp));
d3dpp.Windowed = false;//運行在窗口模式
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;//最高效的工作方式
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;//屏幕緩沖區數據像素格式
//創建Direct3D設備
if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_pD3DDevice)))
{
return E_FAIL;
}
return S_OK;
}
//初始化與本程序繪圖相關的數據函數
HRESULT InitDraw()
{
//創建頂點緩沖區
g_pD3DDevice->CreateVertexBuffer( 8 * sizeof(CUSTOMVERTEX),
D3DUSAGE_WRITEONLY,
D3DFVF_CUSTOMVERTEX,
D3DPOOL_MANAGED,
&g_pVB,
0);
//創建索引緩沖區
g_pD3DDevice->CreateIndexBuffer(36 * sizeof(WORD),
D3DUSAGE_WRITEONLY,
D3DFMT_INDEX16,
D3DPOOL_MANAGED,
&g_pIB,
0);
//創建立方體的8個頂點,注意每個頂點的顏色都不同
//在繪制時,Direct3D會根據頂點顏色對三角形內部像素進行插值,所以立方體看起來是彩色的
CUSTOMVERTEX source_vertices[] = {
{-1.0f,-1.0f,-1.0f,D3DCOLOR_XRGB(255,0,0)},
{-1.0f,1.0f,-1.0f,D3DCOLOR_XRGB(0,255,0)},
{1.0f,1.0f,-1.0f,D3DCOLOR_XRGB(0,0,255)},
{1.0f,-1.0f,-1.0f,D3DCOLOR_XRGB(255,255,0)},
{-1.0f,-1.0f,1.0f,D3DCOLOR_XRGB(255,0,255)},
{-1.0f,1.0f,1.0f,D3DCOLOR_XRGB(0,255,255)},
{1.0f,1.0f,1.0f,D3DCOLOR_XRGB(0,0,0)},
{1.0f,-1.0f,1.0f,D3DCOLOR_XRGB(255,255,255)},
};
// 把上面的頂點數據復制到創建的緩沖區內
CUSTOMVERTEX * pVertices;
if(FAILED(g_pVB->Lock(0,8*sizeof(CUSTOMVERTEX),(VOID **)&pVertices,0)))
{
return E_FAIL;
}
memcpy(pVertices,source_vertices,8 * sizeof(CUSTOMVERTEX));
g_pVB->Unlock();
//定義索引緩沖區內容,這里可以手動定義,也可以用數組設定好,然後內容復制,向上面頂點緩沖區一樣
WORD *indices = 0;
g_pIB->Lock(0,0,(void **) & indices,0);
//正面
indices[0]=0;indices[1]=1;indices[2]=2;
indices[3]=0;indices[4]=2;indices[5]=3;
//背面
indices[6]=4;indices[7]=6;indices[8]=5;
indices[9]=4;indices[10]=7;indices[11]=6;
//左面
indices[12]=4;indices[13]=5;indices[14]=1;
indices[15]=4;indices[16]=1;indices[17]=0;
//右面
indices[18]=3;indices[19]=2;indices[20]=6;
indices[21]=3;indices[22]=6;indices[23]=7;
//頂面
indices[24]=1;indices[25]=5;indices[26]=6;
indices[27]=1;indices[28]=6;indices[29]=2;
//底面
indices[30]=4;indices[31]=0;indices[32]=3;
indices[33]=4;indices[34]=3;indices[35]=7;
g_pIB->Unlock();
//設置攝像機
D3DXVECTOR3 position(0.0f,0.0f,-3.0f);
D3DXVECTOR3 target(0.0f,0.0f,0.0f);
D3DXVECTOR3 up(0.0f,1.0f,0.0f);
D3DXMATRIX V;
D3DXMatrixLookAtLH(&V,&position,&target,&up);
g_pD3DDevice->SetTransform(D3DTS_VIEW,&V);
//設置投影矩陣
D3DXMATRIX proj;
D3DXMatrixPerspectiveFovLH(& proj,
D3DX_PI * 0.5f,
(float)800/(float) 600,
1.0f,
1000.0f);
g_pD3DDevice->SetTransform(D3DTS_PROJECTION,&proj);
//因為沒有使用材質,紋理信息,所以關閉燈光顯示出本身色彩
g_pD3DDevice->SetRenderState(D3DRS_LIGHTING,FALSE);
return S_OK;
}
void Cleanup()
{
if(g_pVB != NULL)
{
g_pVB->Release();
}
if(g_pIB != NULL)
{
g_pIB->Release();
}
if(g_pD3DDevice != NULL)
{
g_pD3DDevice->Release();
}
if(g_pD3D != NULL)
{
g_pD3D ->Release();
}
}
//渲染函數
void Render()
{
//清除屏幕緩沖區到藍色屏幕
g_pD3DDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,255),1.0f,0);
//開始繪制
if(SUCCEEDED(g_pD3DDevice->BeginScene()))
{
//創建沿3個軸渲染的矩陣
D3DXMATRIXA16 matWorld_X;
D3DXMatrixIdentity(&matWorld_X);
D3DXMatrixRotationX(&matWorld_X,timeGetTime()/500.0f);
D3DXMATRIXA16 matWorld_Y;
D3DXMatrixIdentity(&matWorld_Y);
D3DXMatrixRotationY(&matWorld_Y,timeGetTime()/500.0f);
D3DXMATRIXA16 matWorld_Z;
D3DXMatrixIdentity(&matWorld_Z);
D3DXMatrixRotationZ(&matWorld_Z,timeGetTime()/500.0f);
//設置物體的世界矩陣
g_pD3DDevice->SetTransform(D3DTS_WORLD,&(matWorld_X*matWorld_Y*matWorld_Z));
//掛接渲染流水線,設定FVF值,設置索引,渲染
g_pD3DDevice->SetStreamSource(0,g_pVB,0,sizeof( CUSTOMVERTEX));
g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
g_pD3DDevice->SetIndices(g_pIB);
g_pD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,8,0,12);
//結束繪制
g_pD3DDevice->EndScene();
}
//顯示到屏幕
g_pD3DDevice->Present(NULL,NULL,NULL,NULL);
}
//消息回調函數。只處理退出消息,所以滑鼠一直顯示忙狀態
LRESULT WINAPI MsgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
Cleanup();
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,msg,wParam,lParam);
}
INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE , LPSTR,INT)
{
//注冊窗口
WNDCLASSEX wc = {sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L,
GetMoleHandle(NULL),NULL,NULL,NULL,NULL,"D3D Tutorical",NULL
};
RegisterClassEx(&wc);
//創建窗口
HWND hWnd = CreateWindow("D3D Tutorical",
"3D立方體",
WS_OVERLAPPEDWINDOW,
100,
100,
800,
600,
GetDesktopWindow(),
NULL,
wc.hInstance,
NULL);
//嵌套if保證全部初始化成功才可以進入循環運行
if(SUCCEEDED (InitD3D(hWnd)))
{
if(SUCCEEDED(InitDraw()))
{
//顯示窗口
ShowWindow(hWnd,SW_SHOWDEFAULT);
UpdateWindow(hWnd);
//優化的消息循環
MSG msg;
ZeroMemory(&msg,sizeof(msg));
while(msg.message != WM_QUIT)
{
if(PeekMessage(&msg,NULL,0U,0U,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
Render();
}
}
}
}
UnregisterClass("D3D Tutorical",wc.hInstance);
return 0;
}
這個是CSDN上的一個立方體的C++代碼,用D3D實現的
Ⅱ 為什麼少兒編程重要
現如今,少兒編程可以說是一種不可逆的發展趨勢,從國外的火熱延伸到國內的關注。
更多家長願意讓孩子去學習少兒編程,培養他們自主學習的能力。少兒編程之所以這么火熱,其中一個原因是因為少兒編程涉及到的技能非常豐富,下面就帶大家來詳細的了解一下。
1.數學方面
第一個就是數學。少兒編程圖形化編程,第一技能方向就是數學。我們前面注意到,兒童學少兒編程,首先注意的就是一個或一些角色在舞台上的行動,這其中就包括:
算術運算:加減乘除是四種基本運算,兒童在編程過程中,常常需要在具體的場景中來運用這四種基本運算。另外還有取模運算和四捨五入。
數學函數:在編程過程中,兒童將接觸到一些基本的數學函數,包括取絕對值,三角函數,對數函數以及指數函數等。可以非常直觀的通過函數圖像的自動喵點畫圖及生活應用來理解它們。
所以這裡面有著大量的數學學科內容,而且,這些內容都在具體的問題和任務場景中出現,既包括基本算術和幾何圖形知識,也包括函數以及坐標系等中學數學核心概念。通過它們在具體任務中的應用,兒童不僅操控了這個虛擬世界,而且會切身鍛煉到、應用到數學知識和能力。
2.邏輯方面
編程的基礎,既有數學,也有邏輯。邏輯思維能力,是兒童發展的一個基本能力,在文理各個方向都是十分重要的基礎。少兒編程,可能是第一次對兒童正式的、系統的進行邏輯方面的鍛煉。
事件邏輯:其次是事件邏輯,基於事件的判斷,也是兒童比較熟悉的。少兒編程用幾種基本的事件模式,來生成事件判斷語句。在Scratch中都是以「觸碰」為核心動作來構建的。
邏輯運算:在簡單的邏輯推理中,三種基本邏輯運算是最重要的基礎。即與邏輯、或邏輯和非邏輯——這三種基本邏輯在少兒編程中大量的使用到。
所以在少兒編程中,邏輯思維的訓練是一個基本訓練,這也是程序設計及計算機科學方向的一個基本核心特徵。兒童將在大量的問題解決和任務控制中,形成系統化的有邏輯的解決方案。突出鍛煉到兒童的邏輯思維能力。這種邏輯訓練的密集度,不是其它活動所能比擬的。
Ⅲ 用opengl編程,畫了個半球,也給每個點計算了法向量,開啟了燈光和normalize,但只一面有
如果你想反轉法線方向的話用
voidglFrontFace(GLenummode);
mode參數可以用GL_CW和GL_CCW指定順時針點序是正面,還是逆時針點序是正面
預設時,是不剪掉背面的,而且你看到一面是黑的說明沒有剪掉背面(如果剪掉的話就什麼都沒有,所以你那個黑色的面實際是顯示的,那個方向給燈光就不那麼黑了)
Ⅳ 編程題(用C語言)
如果你原文是這個的「一種上做三個大球,下綴六個小球,計大小球九個為一燈」
只算樓上的:
定義A燈(上做三個大球,下綴六個小球)
定義B燈(上做三個大球,下綴十八個小球)
1.不管什麼燈,都是上做三個大球,所以共有大燈數:396/3=132個
2.不管什麼燈,都至少要有6個小球。所以至少都的有小球數為132*6=792個
3.1440-792=648個,這648個都是B燈上的小球。
4.在B燈中的792里已經拋去了6個小球,所以648中應該包含648/(18-6)=648/12=54個。
所以B燈有54個,A燈有132-54=78個。
演算一下:大燈3*(54+78)=396,小燈78*6+54*18=1440.
符合。
演算法有了,程序還出不來?
#include <stdio.h>
void main()
{
int big;
int sml;
int A;
int B;
printf("\n\t請輸入大燈數: ");
scanf("%d",&big);
printf("\n\t請輸入小燈數: ");
scanf("%d",&sml);
A=0;
B=0;
B=(sml-big/3*6)/12;
A=big/3-B;
printf("\n第一種燈%d個,第二種燈%d個\n",A,B);
}
樓下的:
#include <stdio.h>
void main()
{
int big;
int sml;
int A;
int B;
printf("\n\t請輸入大燈數: ");
scanf("%d",&big);
printf("\n\t請輸入小燈數: ");
scanf("%d",&sml);
A=0;
B=0;
B=(sml-big*2)/2;
A=big-B;
printf("\n第一種燈%d個,第二種燈%d個\n",A,B);
}
Ⅳ 編程好學習嗎
編程好學,就是要多練習,抱書本不行。主要是就是邏輯,你的邏輯思維很嚴謹,發散型思維很強,就能編出好東西,數學基礎好對編程有很大幫助。
Ⅵ 孩子邏輯思維怎麼培養
《咕力學數學之邏輯思維啟蒙動畫片全集》網路網盤免費下載
鏈接:https://pan..com/s/1znmI8mJTas01m1m03zCRfQ
提取碼:1234
發帖內容:美根據6Q法則,循序漸進通過生動有趣地動畫,不斷啟發孩子的思維,培養孩子的邏輯能力,是一部勵志向上,積極引導幼兒成長、融入數理邏輯學習、寓教於樂的系列動畫片。整部動畫色彩鮮明,情節引人入勝,能讓寶寶在愉快的環境下,輕輕鬆鬆打好數學基礎,深受小朋友和家長們的喜愛。這部動畫片,耗時一年精心打造,通過一系列針對幼兒園小朋友的生活觀察,策劃出的寓教於樂的動畫片。
課程名稱:咕力學數學之邏輯思維啟蒙動畫片全集
資源目錄:
第1集 探險家的工具箱
第2集 小小馴狗師
第3集 采蘑菇
第4集 哈哈變高啦
第5集 摘草莓嘍
第6集 海島奇遇記
第7集 超級魔術師
第8集 游樂園的彩燈
第9集 忙碌的廚師數學游戲
第10集 魚兒舞蹈隊
第11集 滑雪訓練
第12集 生日蛋糕
第13集 農場的圍欄數學游戲
第14集 小雞去哪兒了數學游戲
第15集 咕力超市
第16集 農場大豐收啦
第17集 誰是大胃王
第18集 巧克力好心情
第19集 三色木橋
第20集 亂糟糟的游樂室
第21集 運貨記
第22集 一起玩拼圖
第23集 星球歷險記
第24集 尋找三色花
第25集 神奇變變變
第26集 咕力們的願望
Ⅶ 液晶電視編程器的使用需要會打字的基礎嗎
是必須的。因為打字的基礎關乎你編程器的製作的快慢。如果把時間都浪費在打字上面,那麼編程器的製作也是非常耗時的,也是非常傷腦筋的。
1、顯示器整機無電
(1)電源故障: 這是一個應該說是非常簡單的故障,一般的液晶顯示器分機內電源和機外電源兩種,機外的常見一些。不論那種電源,它的結構比crt顯示器的電源簡單多了,易損的一般是一些小元件,象保險管、整流橋。電源板常用ic:6841203d06,這些常用的pmw晶元在我這樣的專業液晶配件店裡都能買到。(2)驅動板故障: 驅動板燒保險或者是穩壓晶元出現故障,有部分機器是把開關電源內置,輸出兩組電源,其中一組是5V,供信號處理用,另外一組是12V提供高壓板點背光用,如果開關電源部分電路出現了故障會有可能導致兩組電源均沒輸出。
先查12V電壓正常否,跟著查5V電壓正常否,因為A/D驅動板的MCU晶元的工作電壓是5V,所以查找開不了機的故障時,先用萬用表測量5V電壓,如果沒有5V電壓或者5V電壓變得很低,那麼一種可能是電源電路輸入級出現了問題,也就是說12V轉換到5V的電源部分出了問題,這種故障很常見,檢查5端穩壓塊(常見型號8050SD-LM2596-AIC15-01等)。
另一種可能就是5V的負載加重了,把5V電壓拉得很低,換一種說法就是說,後級的信號處理電路出了問題,有部分電路損壞,引起負載加重,把5V電壓拉得很低,逐一排查後級出現問題的元件,替換掉出現故障的元件後,5V能恢復正常,故障一般就此解決,也經常遇到5V電壓恢復正常後還不能正常開機的,這種情況也有多種原因,一方面是MCU的程序被沖掉可能會導致不開機,還有就是MCU本身損壞,比如說MCU的I/O口損壞,使MCU掃描不了按鍵,遇到這種由MCU引起的故障,找硬體的問題是沒有用的,就算你換了MCU也解決不了問題,因為MCU是需要編程和寫碼的,在沒辦法找到原廠的AD驅動板替換的情況下,我們只能用通用A/D驅動板代換如:151D或161B等2、顯示屏亮一下就不亮了,但是電源指示燈綠燈常亮 這種問題一般是高壓異常造成的,是保護電路動作了,在這種情況下,一般液晶屏上是有顯示的,看的方法是"斜視"。
3、顯示屏黑屏,無背光,電源燈綠燈常亮 斜視液晶屏有顯示圖像,多屬於高壓板供電電路問題。重點檢查12V供電(保險絲F)和3V或5V的開關電壓是否正常。若是因為MCU問題造成沒有輸出開關控制電壓,可以直接提取3端穩壓塊的(AIC1084)3.3V代替。
修理高壓板的思路(電源保險絲-開關控制管-電源管理IC-推挽發大管-電源開關管-DA轉換電路(儲能電感,整流管)-LC升壓電路(升壓變壓器,升壓電容)-耦合電容-燈管。
4、屏幕亮線,亮帶或者是暗線 這種問題,一般是液晶屏的故障。亮線故障一般是連接液晶屏本體的排線出了問題或者某行和列的驅動IC損壞。 暗線一般是屏的本體有漏電,或者TAB柔性板連線開路。以上兩種問題基本上就是給機器判了死刑了,沒有維修價值的,因為一塊屏的價格太高了。
5、偏色故障 一般可以進入工廠調整模式進行調整。如沒有此模式,維修思路:更換屏線和轉接板-重寫驅動程序-驅動板壞(不常見)-屏背板的控制IC壞(不常見)-拔掉屏線觀察背光顏色(背光扁色為燈管老化)-換燈管。
6、字元虛或拖尾 檢查VGA信號線,重點看RGB三色線的地線是否連接正常-更換屏線或轉接板-重寫驅動程序-換驅動板-LCD屏背板信號介面IC壞-LCD屏背板對比度電位器調整-LCD屏導光板錯位-偏光片錯位。
7、LCD屏幕內部有污點 擦拭或更換換保護膜-拆開屏體清洗外層偏光片和有機玻璃(用棉球,純凈水處理)-風筒吹乾。
8、LCD屏亮點 一個或二個大的亮點,可以嘗試輕輕用指尖壓亮點,可消失,說明多為此象素的開關管和電極虛連。小的黑點和灰點有可能是內部導光板或偏光片有灰塵造成,可清洗處理。
9、LCD屏亮度低 檢查高壓板ADJ亮度調節電路-換燈管-換高壓板-調整或更換導光板。
10、錯誤提示"超出頻率范圍" 檢查信號線-重寫MCU驅動程序-更換EPROM-重寫EPROM程序-換驅動板。
11、通電後不按開關按鍵即白屏出現背光,按鍵後圖像可正常顯示 高壓板介面的開關信號和ADJ信號反接造成,部分屬於驅動板MCU的開關信號輸出不正常,可以重寫MCU程序修復——換MCU。
二、開關電源故障:
1.熔斷絲熔斷 對於熔斷絲熔斷故障,通常主要檢查主電源整流濾波電路中的濾波電容器、整流橋各個二極體等部件。當然,抗干擾電路有故障時,也會引起熔斷絲熔斷且發黑。必須注意的是由開關管擊穿引起的熔斷絲熔斷通常還伴隨著過流檢測電阻器與電源控制集成電路的同時損壞。負溫度系數熱敏電阻器也較容易與熔斷絲一起燒壞,檢修時也應注意對它們的檢查。
2.無電壓輸出,但熔斷絲未熔斷 出現無電壓輸出,但熔斷絲未熔斷故障,說明開關電源電路沒有工作,或者工作以後又進入了保護狀態。檢修時,先測量電源控制集成電路啟動引出腳是否有啟動電壓。
(1)若無啟動電壓或啟動電壓太低,則檢查啟動電阻器與該引腳外接的元器件是否有漏電現象存在。
(2)若有啟動電壓,再測量電源控制集成電路的輸出端在開機瞬間是否有高、低跳變的電平信號。 ·若無跳變,說明電源控制集成電路本身或其外圍振盪電路元器件或保護電路有故障,可以先採用代換電源控鍘集成電路,後檢查外圍元器件的方法查找故障。若有跳變,一般多為開關管本身不良或損壞,應重點對其進行檢查。
3.輸出端的電壓過低 引起開關電源輸出端的輸出電壓過低故障的原因,除了穩壓控制電路異常外,通常還有以下3個方面的原因:
(1)開關管性能下降。這種情況會導致開關管不能正常導通,使電源的內電阻值變大,帶負載的能力變差。
(2)輸出端整流二極體、濾波電容器失效。這種情況可以通過代換的方法來判斷它們是否損壞。
(3)開關電源的負載有短路故障。尤其是DC/DC轉換器短路或性能不良。對此,可以採用斷開開關電源電路全部負載的方法,來區別是開關電源電路不良還是負載電路的故障。當斷開負載電路後,輸出端的電壓恢復正常,則就說明是負載過重;若仍不能恢復正常,說明開關電源電路有故障。
4.輸出端的電壓過高 出現輸出端的電壓過高現象,故障大多出在開關電源的穩壓取樣和穩壓控制電路。應對由取樣電阻器、誤差取樣放大器、光電耦合器、電源控制集成電路等組成的反饋環路中的各個元器件進行檢查。通常取樣電阻器變質、精密穩壓放大器或光電耦合器損壞的發生率較高。 對於具有過壓保護電路的開關電源出現的電壓過高現象,可先斷開過壓保護電路,然後在開機瞬間迅速測量電源主輸出端上的電壓。
如測得的電壓仍比正常值高(一般只要高於1V以上,均屬電壓過高故障),就應該按上述的電壓過高故障進行檢修。
Ⅷ 無線遠程式控制制LED燈球 12v供電
手機遠程遙控開關 移動管家牌YD238-6 只要插入手機卡,接入電源(220V或12V),無論何時何地通過手機簡訊都可以控制
Ⅸ 本人是一個老程序員,目前想學習3D編程,請問3D方面的基礎知識可以看哪本書不拘泥於編程語言,求經典。
1、WINDOWS 3D編程
《WINDOWS 3D編程》主要內容:Learn to create 3D graphics for Windows-from programming legend Charles Petzold.Get a focused introction to programming 3D graphics with the Windows Presentation Foundation 3D API. Complementing his book Applications =Code + Markup, award-winning author Charles Petzold builds on XAML essentials, teaching you how to display and animate 3D graphics under the Microsoft .NET Framework 3.0 and Windows VistaTM. You'll get expert guidance and code samples in XAML and Microsoft Visual C#-helping you master the skills you need to create high-fidelity user interfaces.
Discover how to:
Define complex 3D obiects with triangle meshes
Enhance the illumination of 3D surfaces with light and shading effects
Color 3D figures with gradients, bitmaps, and drawings
Add animation with transforms and vertex manipulation
Represent linear, affine, and camera transforms by using matrices
Calculate vector angles, angles of rotation, and axes of rotation
Generate triangle meshes efficiently by using C# code
Express rotation by using quaternion computation
Provide a user interface for manipulating and drawing 3D figures
目錄
--------------------------------------------------------------------------------
1 Lights! Camera! Mesh Geometries!
Sorting Out the Classes
2 Transforms and Animation
3 Axis/Angle Rotation
4 Light and Shading
SpotLight and PointLight
5 Texture and Materials
6 Algorithmic Mesh Geometries
7 Matrix Transforms
8 Quaternions
9 Applications and Curiosa
/******************************************************************************************************************/
2、java 3d編程實踐:網路上的三維動畫
目錄:
第1章 全世界都能看到的三維動畫
1. 1 初識java 3d
1. 1. 1 網路時代需要java 3d
1. 1. 2 java 3d是什麼
1. 1. 3 java 3d的應用場合舉例
1. 2 java 3d運行及開發環境的安裝
1. 2. 1 最新版java 3d的安裝
1. 2. 2 老版本的安裝步驟
1. 3 體驗java 3d編程
1. 3. 1 第一個java 3d程序:hello
1. 3. 2 java 3d的編程思想
1. 4 在網上發布java 3d程序
1. 5 java 3d的網路資源和學習資料
1. 5. 1 主要網站
1. 5. 2 各種文檔
1. 5. 3 軟體資源
第2章 基本形體的生成
2. 1 基本立體形體的生成
2. 1. 1 從一個簡單的程序說起
2. 1. 2 創建場景圖
2. 1. 3 高層java 3d類
2. 1. 4 編寫java 3d程序的一般步驟
2. 1. 5 激活和編譯
2. 1. 6 內容子圖的創建
2. 1. 7 mycone程序中使用的java 3d類
2. 1. 8 幾何體工具類
2. 1. 9 高級主題:基本幾何體
2. 1. 10 能力和性能
2. 2 點. 線. 面的生成
2. 2. 1 幾何體類
2. 2. 2 點的生成
2. 2. 3 直線的生成
2. 2. 4 面的生成
2. 3 曲面的可視化
2. 4 2d和3d文本的生成
2. 4. 1 2d文本的生成
2. 4. 2 3d文本的生成
2. 5 appearance. shape3d和bounds對象的使用
2. 5. 1 appearance對象
2. 5. 2 shape3d對象
2. 5. 3 bounds對象
第3章 形體的組合
3. 1 形體的分組
3. 1. 1 group對象
3. 1. 2 branchgroup對象和orderedgroup對象
3. 1. 3 decalgroup對象
3. 1. 4 switch對象
3. 1. 5 sharedgroup對象
3. 2 幾何變換
3. 2. 1 transformg
/*********************************************************************************************************/
3、Directx 3D 游戲編程實用教程
目錄
--------------------------------------------------------------------------------
第一篇 d游戲編程基礎
第1章 windows編程基礎
1.1 簡單的windows應用程序
1.1.1 創建windows應用程序項目
1.1.2 配置、生成及運行項目
1.2 windows應用程序結構
1.2.1 數據類型
1.2.2 入口函數
1.2.3 注冊窗口類
1.2.4 創建並顯示窗口
1.3 windows消息機制
1.3.1 消息隊列
1.3.2 消息循環
1.3.3 消息處理
1.4 匈牙利命名法
1.4.1 類型和常量的命名
1.4.2 變數的命名
1.4.3 函數和參數的命名
1.4.4 類的命名
1.5 本章小結
第2章 direct3d編程基礎
2.1 directx概述
2.1.1 directx的發展過程
2.1.2 directx的組成部分
2.1.3 direct3d與com
2.1.4 direct3d介面對象
2.2 direct3d渲染流水線
2.2.1 渲染流水線
2.2.2 靈活頂點格式
2.2.3 d3d中的顏色
2.2.4 d3d中的圖元
2.3 direct3d程序結構
2.3.1 簡單的direct3d應用程序
2.3.2 創建direct3d介面對象
2.3.3 獲取硬體設備信息
2.3.4 創建direct3d設備介面
2.3.5 開始direct3d圖形繪制
2.3.6 結束並清理對象資源
2.4 頂點緩存
2.4.1 創建頂點緩存
2.4.2 訪問頂點緩存
2.4.3 使用頂點緩存繪制圖形
2.4.4 頂點緩存的繪制示例
2.5 索引緩存
2.5.1 創建索引緩存
2.5.2 訪問索引緩存
2.5.3 使用索引緩存繪制圖形
2.5.4 索引緩存的繪制示例
2.6 direct3d渲染狀態
2.6.1 剔除狀態
2.6.2 著色狀態
2.6.3 填充狀態
2.7 本章小結
第3章 基本的數學基礎
3.1 坐標空間
3.1.1 d笛卡兒坐標系
3.1.2 多坐標系統
3.2 向量
3.2.1 向量的基本概念
3.2.2 向量的基本運算
3.2.3 d3d中的向量
3.3 矩陣
3.3.1 矩陣的基本概念
3.3.2 矩陣的基本運算
3.3.3 矩陣的基本變換
3.3.4 d3d中的矩陣
3.4 平面及射線
3.4.1 平面的定義
3.4.2 點與平面的關系
3.4.3 射線的定義
3.4.4 射線與平面的關系
3.5 空間坐標變換
3.5.1 世界變換
3.5.2 取景變換
3.5.3 投影變換
3.5.4 視口變換
3.6 空間坐標變換示例
3.7 本章小結
第二篇 d游戲圖形渲染
第4章 光照與材質
4.1 光照模型
4.1.1 環境光
4.1.2 漫反射光
4.1.3 鏡面反射光
4.2 光源類型
4.2.1 點光源
4.2.2 方向光
4.2.3 聚光燈
4.3 物體的材質
4.3.1 d3d材質
4.3.2 頂點法線
4.4 光照與材質示例
4.5 本章小結
第5章 紋理映射
5.1 紋理映射基礎
5.1.1 紋理坐標
5.1.2 創建紋理
5.1.3 啟用紋理
5.1.4 創建紋理示例
5.2 紋理過濾
5.2.1 最近點采樣過濾
5.2.2 線性紋理過濾
5.2.3 各向異性過濾
5.2.4 多級漸進過濾
5.2.5 紋理過濾示例
5.3 紋理定址
5.3.1 重復定址
5.3.2 鏡像定址
5.3.3 夾取定址
5.3.4 邊框顏色定址
5.3.5 紋理定址示例
5.4 紋理包裝
5.4.1 紋理包裝原理
5.4.2 紋理包裝示例
5.5 本章小結
第6章 網格模型
6.1 網格模型基礎
6.1.1 網格的子集及屬性
6.1.2 網格的鄰接信息
6.1.3 網格的創建及繪制
6.1.4 創建及繪制網格示例
6.2 網格的優化及克隆
6.2.1 優化網格
6.2.2 克隆網格
6.3 x文件格式分析
6.3.1 模板的定義
6.3.2 常用的模板類型
6.3.3 x文件的結構
6.4 從x文件創建網格
6.4.1 載入網格模型數據
6.4.2 獲取紋理和材質信息
6.4.3 繪制網格模型
6.4.4 讀取x文件示例
6.5 創建漸進網格模型
6.5.1 id3dxpmesh介面
6.5.2 創建並繪制漸進網格
6.5.3 創建漸進網格示例
6.6 d3d中的幾何體
6.7 本章小結
第7章 深度、融合及模板
7.1 深度測試
7.1.1 深度緩存
7.1.2 深度測試
7.1.3 深度測試示例
7.2 融合技術
7.2.1 融合因子
7.2.2 alpha來源
7.2.3 啟用alpha融合
7.2.4 alpha融合示例
7.3 模板技術
7.3.1 模板緩存
7.3.2 模板測試
7.3.3 更新模板緩存
7.4 鏡面效果
7.4.1 鏡面成像原理
7.4.2 實現鏡面效果
7.5 本章小結
第8章 hlsl語言基礎
8.1 hlsl概述
8.1.1 可編程管線
8.1.2 hlsl工作模型
8.2 簡單的hlsl程序
8.2.1 編寫hlsl代碼
8.2.2 hlsl關鍵字和保留字
8.2.3 hlsl預處理指令
8.2.4 輸入、輸出結構
8.2.5 hlsl入口函數
8.3 hlsl基本語法
8.3.1 hlsl中的變數
8.3.2 hlsl中的函數
8.4 d3d與hlsl交互
8.4.1 編譯著色器程序
8.4.2 獲取常量的句柄
8.4.3 設置常量的值
8.5 hlsl程序示例
8.6 本章小結
第9章 著色器與效果
9.1 頂點著色器
9.1.1 創建頂點聲明
9.1.2 使用頂點著色器
9.1.3 頂點著色器示例
9.2 漸變動畫效果
9.2.1 漸變動畫原理
9.2.2 實現漸變動畫
9.3 像素著色器
9.3.1 創建像素著色器
9.3.2 使用像素著色器
9.4 多重紋理混合
9.4.1 hlsl采樣器
9.4.2 多重紋理坐標
9.4.3 啟用多重紋理
9.4.4 多重紋理示例
9.5 效果框架
9.5.1 通道與手法
9.5.2 著色器內置對象
9.5.3 效果中的渲染狀態
9.5.4 創建效果框架
9.5.5 效果中常量的設置
9.5.6 使用效果框架
9.5.7 效果框架示例
9.6 本章小結
第三篇 d游戲輸入控制
第10章 directx輸入控制
10.1 directinput介面
10.2 使用directinput介面
10.2.1 directinput的初始化
10.2.2 創建設備介面對象
10.2.3 設置數據格式
10.2.4 設置協作級別
10.2.5 設置特殊屬性
10.2.6 獲取、輪詢設備
10.2.7 讀取設備數據
10.3 使用directinput處理鍵盤
10.3.1 初始化鍵盤設備介面
10.3.2 獲取輸入的鍵盤數據
10.3.3 鍵盤輸入控制示例
10.4 使用directinput處理滑鼠
10.4.1 在d3d中移動滑鼠
10.4.2 初始化滑鼠設備介面
10.4.3 獲取滑鼠的移動位置
10.4.4 滑鼠輸入控制示例
10.5 使用directinput處理游戲桿
10.5.1 游戲桿及其控制原理
10.5.2 初始化游戲桿設備介面
10.5.3 讀取游戲桿的狀態數據
10.5.4 游戲桿輸入控制示例
10.6 本章小結
第四篇 d游戲應用編程
第11章 攝像機、地形及天空
11.1 虛擬攝像機
11.1.1 攝像機的屬性
11.1.2 攝像機的變換
11.1.3 攝像機的實現
11.1.4 攝像機應用示例
11.2 三維地形系統
11.2.1 地形高度圖
11.2.2 頂點的計算
11.2.3 索引的計算
11.2.4 地形的繪制
11.2.5 地形類的實現
11.2.6 地形繪制示例
11.3 球形天空頂
11.3.1 頂點的計算
11.3.2 索引的計算
11.3.3 天空的繪制
11.3.4 天空類的實現
11.3.5 天空繪制示例
11.4 本章小結
第12章 文字、拾取及碰撞檢測
12.1 字體及文本繪制
12.1.1 繪制2d文本
12.1.2 繪制3d文本
12.1.3 文本繪制示例
12.2 拾取技術
12.2.1 網格外接體
12.2.2 拾取技術原理
12.2.3 拾取應用示例
12.3 碰撞檢測
12.3.1 邊界球碰撞檢測
12.3.2 aabb碰撞檢測
12.3.3 obb樹碰撞檢測
12.3.4 aabb碰撞檢測示例
12.4 本章小結
第13章 骨骼動畫
13.1 x文件中的骨骼信息
13.1.1 骨骼蒙皮信息
13.1.2 骨骼層次信息
13.1.3 模型動畫信息
13.2 載入骨骼動畫數據
13.2.1 擴展結構體
13.2.2 載入x文件
13.2.3 callocatehierarchy類
13.2.4 生成蒙皮網格
13.3 頂點混合技術
13.3.1 頂點混合原理
13.3.2 索引頂點混合
13.4 骨骼動畫的繪制
13.4.1 開啟頂點混合
13.4.2 更新骨骼矩陣
13.4.3 繪制骨骼動畫
13.5 骨骼動畫控制器
13.5.1 使用動畫控制器
13.5.2 平滑過渡動畫集
13.6 骨骼動畫示例
13.7 本章小結
第14章 實時陰影
14.1 平面陰影的原理
14.1.1 點光源平面陰影
14.1.2 方向光平面陰影
14.2 平面陰影的實現
14.2.1 計算陰影矩陣
14.2.2 平面陰影的繪制
14.2.3 平面陰影示例
14.3 體積陰影的原理
14.3.1 模型陰影體
14.3.2 陰影錐的計算
14.4 體積陰影的實現
14.4.1 體積陰影的繪制
14.4.2 體積陰影示例
14.5 陰影貼圖的原理
14.6 本章小結
第15章 廣告牌技術與粒子系統
15.1 廣告牌技術
15.1.1 廣告牌的原理
15.1.2 廣告牌的實現
15.1.3 廣告牌示例
15.2 粒子系統
15.2.1 粒子系統的原理
15.2.2 粒子系統的實現
15.2.3 粒子系統的更新
15.2.4 粒子系統的繪制
15.3 粒子系統示例
15.3.1 煙花示例
15.3.2 噴泉示例
15.4 本章小結
第16章 霧化及lod地形
16.1 霧化效果
16.1.1 霧化混合因子
16.1.2 頂點霧化
16.1.3 像素霧化
16.1.4 范圍霧化
16.2 lod地形原理
16.2.1 lod四叉樹演算法
16.2.2 lod地形的實現
16.2.3 節點剔除原理
16.2.4 節點簡化准則
16.2.5 地形裂縫的處理
16.2.6 地形的更新及繪制
16.3 lod地形示例
16.4 本章小結
第五篇 d游戲音頻輸出
第17章 direct3d音頻控制
17.1 音頻文件格式
17.1.1 音頻的基本概念
17.1.2 wav音頻格式
17.1.3 midi音頻格式
17.1.4 mp3音頻格式
17.2 使用directsound處理音頻
17.2.1 directsound的結構
17.2.2 directsound的初始化
17.2.3 directsound音頻緩沖
17.2.4 向緩沖區中寫入數據
17.2.5 播放聲音及音頻控制
17.2.6 用directsound反饋信息
17.2.7 directsound應用示例
17.3 使用directmusic處理音頻
17.3.1 directmusic的結構
17.3.2 開始使用directmusic
17.3.3 載入、操作midi段
17.3.4 directmusic應用示例
17.4 使用directshow處理音頻
17.4.1 directshow的工作原理
17.4.2 directshow的初始化
17.4.3 載入流媒體數據
17.4.4 控制流媒體的播放
17.4.5 directshow應用示例
17.5 本章小結
第六篇 d游戲網路通信
第18章 direct3d網路控制
18.1 了解網路互聯
18.1.1 網路會話模型
18.1.2 定址與通信協議
18.2 directplay概述
18.2.1 創建和管理會話
18.2.2 directplay傳輸協議
18.2.3 directplay網路對象
18.2.4 玩家與游戲大廳
18.3 客戶/服務會話
18.3.1 初始化網路對象
18.3.2 選擇服務提供者
18.3.3 使用directplay地址
18.3.4 建立客戶/服務會話
18.3.5 發送、接收數據
18.3.6 創建並使用分組
18.3.7 結束及終止會話
18.4 游戲大廳的支持
18.4.1 游戲大廳的結構
18.4.2 實現游戲大廳客戶端
18.4.3 實現支持大廳的程序
18.5 客戶/服務會話示例
18.5.1 創建服務端程序
18.5.2 創建客戶端程序
18.6 本章小結
附 錄
附錄a directx9 sdk的安裝與配置
a.1 安裝directx
a.2 配置開發環境
a.3 瀏覽directx示例
附錄b dxut程序框架介紹
b.1 創建dxut項目
b.2 dxut框架的初始化
b.3 創建應用程序窗口
b.4 創建direct3d設備
b.5 dxut的事件處理
b.5.1 框架事件
b.5.2 設備事件
b.5.3 消息事件
b.6 dxut的錯誤處理