0001:
0002:
0003:
0004:
0005:
0006:
0007:
0008:
0009: #define STRICT
0010:
0011: #include <d3d8.h>
0012: #include <d3dx8.h>
0013: #include "main.h"
0014:
0015: LPDIRECT3DVERTEXBUFFER8 pLightVB = NULL;
0016:
0017:
0018:
0019:
0020:
0021: typedef struct{
0022: FLOAT x, y, z;
0023: DWORD color;
0024: }POINT_VERTEX;
0025: #define D3DFVF_POINT_VERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE)
0026:
0027:
0028: void InitLightEff(LPDIRECT3DDEVICE8 lpD3DDEV, D3DXVECTOR4 pos)
0029: {
0030: POINT_VERTEX vertices[] = {
0031:
0032: { pos.x, pos.y, pos.z, D3DCOLOR_RGBA(0x40, 0x40, 0x40, 0xff), },
0033: {1.5f*pos.x,1.5f*pos.y,1.5f*pos.z, D3DCOLOR_RGBA(0xff, 0xff, 0xff, 0xff), },
0034: };
0035: RELEASE(pLightVB);
0036: if(FAILED(lpD3DDEV->CreateVertexBuffer( sizeof(vertices),0,
0037: D3DFVF_POINT_VERTEX, D3DPOOL_DEFAULT, &pLightVB))) return;
0038: VOID* pVertices;
0039: if(FAILED(pLightVB->Lock( 0, sizeof(vertices), (BYTE**)&pVertices, 0))) return;
0040: memcpy( pVertices, vertices, sizeof(vertices) );
0041: pLightVB->Unlock();
0042: }
0043:
0044: void DrawLightEff(LPDIRECT3DDEVICE8 lpD3DDEV, D3DXMATRIX mView, D3DXMATRIX mProj)
0045: {
0046: D3DXMATRIX mWorld;
0047: D3DXMatrixIdentity(&mWorld);
0048: lpD3DDEV->SetTransform(D3DTS_WORLD, &mWorld);
0049: lpD3DDEV->SetTransform(D3DTS_VIEW, &mView);
0050: lpD3DDEV->SetTransform(D3DTS_PROJECTION, &mProj);
0051: lpD3DDEV->SetStreamSource( 0, pLightVB, sizeof(POINT_VERTEX) );
0052: lpD3DDEV->SetVertexShader( D3DFVF_POINT_VERTEX );
0053: lpD3DDEV->DrawPrimitive( D3DPT_LINELIST , 0, 1 );
0054: }
0055:
0056: void CleanLightEff()
0057: {
0058: RELEASE(pLightVB);
0059: }
0060: