D3d point column exercises

Source: Internet
Author: User

Draw four dots in the window.

#pragma once#pragma comment(lib,"d3d9.lib")#pragma comment(lib,"d3dx9.lib")#include<d3d9.h>#include<d3dx9.h>//TODO: -1 custom vertexstruct CUSTOMVERTEX{float x;float y;float z;float rhw;};#define D3DFVF_CUSTOMVERTEX D3DFVF_XYZRHWHRESULT InitD3D(HWND hWnd);void CleanUp();void Render();LRESULT CALLBACK MsgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);HRESULT InitD3DVertexBuffer();//TODO: 0 declare d3d variables.LPDIRECT3D9 g_pd3d = NULL;LPDIRECT3DDEVICE9 g_pd3dDevice9 = NULL;LPDIRECT3DVERTEXBUFFER9 g_pd3dVB = NULL;//application entry point.INT WINAPI wWinMain(HINSTANCE,HINSTANCE,LPWSTR,INT){//initialize wnd class.WNDCLASSEX wcex;ZeroMemory(&wcex,sizeof(wcex));wcex.cbSize=sizeof(wcex);wcex.hInstance=GetModuleHandle(NULL);wcex.lpfnWndProc=MsgProc;wcex.lpszClassName=L"Self001";wcex.style=CS_CLASSDC;//register wnd class.RegisterClassEx(&wcex);//create window.HWND hWnd=CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,L"Self001",L"Self001 Window",WS_OVERLAPPEDWINDOW,100,100,300,300,NULL,NULL,wcex.hInstance,NULL);//init d3dif(SUCCEEDED(InitD3D(hWnd))){//show window.ShowWindow(hWnd,SW_SHOWDEFAULT);UpdateWindow(hWnd);//message loop.MSG msg;ZeroMemory(&msg,sizeof(msg));while(msg.message != WM_QUIT){if(PeekMessage(&msg,hWnd,0,0,PM_REMOVE)){TranslateMessage(&msg);DispatchMessage(&msg);}else{Render();}}}//unregister wnd class.UnregisterClass(L"Self001",wcex.hInstance);return 0;}//init d3d.HRESULT InitD3D(HWND hWnd){//create d3d.g_pd3d=Direct3DCreate9(D3D_SDK_VERSION);if(g_pd3d == 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_pd3d->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_pd3dDevice9))){return E_FAIL;}//init vertex buffer.if(FAILED(InitD3DVertexBuffer())){return E_FAIL;}return S_OK;}//clean up d3d.void CleanUp(){//TODO: 3 clean up d3d.if(g_pd3dVB != NULL){g_pd3dVB->Release();}//release device.if(g_pd3dDevice9 != NULL){g_pd3dDevice9->Release();}//release d3d.if(g_pd3d != NULL){g_pd3d->Release();}}//render the scene.void Render(){//clear target.g_pd3dDevice9->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0);//draw primitive.if(SUCCEEDED(g_pd3dDevice9->BeginScene())){//TODO: 2 render d3d.g_pd3dDevice9->SetStreamSource(0,g_pd3dVB,0,sizeof(CUSTOMVERTEX));g_pd3dDevice9->SetFVF(D3DFVF_CUSTOMVERTEX);g_pd3dDevice9->DrawPrimitive(D3DPT_POINTLIST,0,4);g_pd3dDevice9->EndScene();}//present sence.g_pd3dDevice9->Present(NULL,NULL,NULL,NULL);}//window message handler.LRESULT CALLBACK MsgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam){switch(msg){case WM_DESTROY:CleanUp();return 0L;}return DefWindowProc(hWnd,msg,wParam,lParam);}//init d3d vertex buffer.HRESULT InitD3DVertexBuffer(){//TODO: 1 init vertex buffer data.//create vertex data.CUSTOMVERTEX vertices[4]={{50.0f,50.0f,1.0f,1.0f},{250.0f,50.0f,1.0f,1.0f},{250.0f,250.0f,1.0f,1.0f},{50.0f,250.0f,1.0f,1.0f}};//create vertex buffer.if(FAILED(g_pd3dDevice9->CreateVertexBuffer(sizeof(vertices),0,D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT,&g_pd3dVB,NULL))){return E_FAIL;}//fill 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;}

1. There are still many exercises on the way to programming. Here we will practice the d3d dot column, the first of the six elements.

2. I know it is not very obvious, but how can it be obvious when there are four pixel points.

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.