Examples of D3D triangle rotation and d3d triangle Rotation

Source: Internet
Author: User

Examples of D3D triangle rotation and d3d triangle Rotation

The two triangles rotate around the Y axis.

Program

#pragma once#pragma comment(lib,"winmm.lib")#pragma comment(lib,"d3d9.lib")#pragma comment(lib,"d3dx9.lib")#include<d3d9.h>#include<d3dx9.h>struct CUSTOMVERTEX{FLOAT x,y,z;DWORD color;};#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)LRESULT CALLBACK MsgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);HRESULT InitVariable(HWND hWnd);void Render();HRESULT InitD3D(HWND hWnd);HRESULT InitVertexData();void CleanUp();void SetupMatrices();LPDIRECT3D9 g_pd3d9=NULL;LPDIRECT3DDEVICE9 g_pd3dDevice9=NULL;LPDIRECT3DVERTEXBUFFER9 g_pd3dVB=NULL;INT WINAPI wWinMain(HINSTANCE,HINSTANCE,LPWSTR,INT){//initialize wnd class struct.WNDCLASSEX wcex;ZeroMemory(&wcex,sizeof(wcex));wcex.cbSize=sizeof(wcex);wcex.hInstance=GetModuleHandle(NULL);wcex.lpfnWndProc=MsgProc;wcex.style=CS_CLASSDC;wcex.lpszClassName=L"Self002";//register wnd class.RegisterClassEx(&wcex);//create window.HWND hWnd=CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,L"Self002",L"Self002 Window",WS_OVERLAPPEDWINDOW,100,100,300,300,NULL,NULL,wcex.hInstance,NULL);//show window and enter message loop.if(SUCCEEDED(InitVariable(hWnd))){//show window.ShowWindow(hWnd,SW_SHOWDEFAULT);UpdateWindow(hWnd);//enter message loop.MSG msg;ZeroMemory(&msg,sizeof(msg));while(msg.message != WM_QUIT){if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)){TranslateMessage(&msg);DispatchMessage(&msg);}else{Render();}}}//unregister wnd class.UnregisterClass(L"Self002",wcex.hInstance);return 0;}LRESULT CALLBACK 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);}HRESULT InitVariable(HWND hWnd){if(FAILED(InitD3D(hWnd))){return E_FAIL;}if(FAILED(InitVertexData())){return E_FAIL;}return S_OK;}void Render(){//TODO: render your sence.//clear render target.g_pd3dDevice9->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0);if(SUCCEEDED(g_pd3dDevice9->BeginScene())){SetupMatrices();g_pd3dDevice9->SetStreamSource(0,g_pd3dVB,0,sizeof(CUSTOMVERTEX));g_pd3dDevice9->SetFVF(D3DFVF_CUSTOMVERTEX);g_pd3dDevice9->DrawPrimitive(D3DPT_TRIANGLELIST,0,2);g_pd3dDevice9->EndScene();}g_pd3dDevice9->Present(NULL,NULL,NULL,NULL);}HRESULT InitD3D(HWND hWnd){//TODO: initialize d3d variables.//create d3dg_pd3d9=Direct3DCreate9(D3D_SDK_VERSION);if(g_pd3d9 == NULL){return E_FAIL;}//initialize d3d present parameters.D3DPRESENT_PARAMETERS d3dpp;ZeroMemory(&d3dpp,sizeof(d3dpp));d3dpp.Windowed=TRUE;d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;d3dpp.BackBufferFormat=D3DFMT_UNKNOWN;//create d3d device.if(FAILED(g_pd3d9->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_pd3dDevice9))){return E_FAIL;}//turn off culling.g_pd3dDevice9->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);//turn off lighting.g_pd3dDevice9->SetRenderState(D3DRS_LIGHTING,FALSE);return S_OK;}HRESULT InitVertexData(){//TODO:initialize your vertex data.//initialize vertex data.CUSTOMVERTEX vertices[6]={{-1.0f,-1.0f,0.0f,D3DCOLOR_XRGB(255,0,0)},{-1.0f,1.0f,0.0f,D3DCOLOR_XRGB(0,0,255)},{0.0f,0.0f,0.0f,D3DCOLOR_XRGB(0,255,0)},{0.0f,0.0f,0.0f,D3DCOLOR_XRGB(0,255,0)},{1.0f,1.0f,0.0f,D3DCOLOR_XRGB(0,0,255)},{1.0f,-1.0f,0.0f,D3DCOLOR_XRGB(255,0,0)}};//create vertex buffer.if(FAILED(g_pd3dDevice9->CreateVertexBuffer(sizeof(vertices),0,D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT,&g_pd3dVB,NULL))){return E_FAIL;}//fill data to vertex buffer.void* pVertices=NULL;if(FAILED(g_pd3dVB->Lock(0,sizeof(vertices),&pVertices,0))){return E_FAIL;}memcpy(pVertices,vertices,sizeof(vertices));g_pd3dVB->Unlock();return S_OK;}void CleanUp(){//TODO: clean up you variables.if(g_pd3dVB != NULL){g_pd3dVB->Release();}if(g_pd3dDevice9 != NULL){g_pd3dDevice9->Release();}if(g_pd3d9 != NULL){g_pd3d9->Release();}}void SetupMatrices(){//TODO: setuo transform matrix.//set world transform matrix.D3DXMATRIXA16 matWorld;UINT itimes=timeGetTime()%1000;FLOAT fAngle=itimes * ( 2.0f * D3DX_PI ) / 1000.0f;D3DXMatrixRotationY(&matWorld,fAngle);g_pd3dDevice9->SetTransform(D3DTS_WORLD,&matWorld);//set view transform matrix.D3DXMATRIXA16 matView;D3DXVECTOR3 vEye(0.0f,1.0f,-5.0f);D3DXVECTOR3 vLookAt(0.0f,0.0f,0.0f);D3DXVECTOR3 vUp(0.0f,1.0f,0.0f);D3DXMatrixLookAtLH(&matView,&vEye,&vLookAt,&vUp);g_pd3dDevice9->SetTransform(D3DTS_VIEW,&matView);//set projection transform matrix.D3DXMATRIXA16 matProj;D3DXMatrixPerspectiveFovLH(&matProj,D3DX_PI/4,1.0f,1.0f,100.0f);g_pd3dDevice9->SetTransform(D3DTS_PROJECTION,&matProj);}

Running result

1. Turn off the light and clear the back.

2. The main practice is coordinate transformation, but it is still not very understandable.


Two identical triangles can be combined into a () Shape by rotating and translating. If the area of the image is 18 cm²

Two identical triangles can be combined into a (parallel four sides) Shape by rotating and translating. If the area of the image is 18 cm², then the area of one of the triangles is (9) square centimeter.

Two completely identical triangles are converted into a () Shape by rotation and translation. If the area of the image is 24 m², then

Two completely identical triangles are combined into one (parallel four sides) Shape by rotating and translating. If the area of this image is 24 m², then the area of a triangle is (12) square meters.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.