rendered paste body#include "SkyBox.h"
#include <windows.h>
#include <mmsystem.h>
#include <d3d9.h>
#include <d3dx9tex.h>
LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL;
SkyBox::SkyBox(LPDIRECT3DTEXTURE9 Left, LPDIRECT3DTEXTURE9 Front, LPDIRECT3DTEXTURE9 Right,LPDIRECT3DTEXTURE9 Back, LPDIRECT3DTEXTURE9 Top, LPDIRECT3DTEXTURE9 Bottom)
{
tSide1 = Left;
tSide2 = Front;
tSide3 = Right;
tSide4 = Back;
tSide5 = Top;
tSide6 = Bottom;
}
void SkyBox::SetupBox(float Size, LPDIRECT3DDEVICE9 pd3dDevice)
{
VERTEX g_Vertices[] =
{
//TopFront
{-Size, Size,-Size, 0.0f,0.0f },
{ Size, Size,-Size, 1.0f,0.0f },
{-Size,-Size,-Size, 0.0f,1.0f },
{ Size,-Size,-Size, 1.0f,1.0f },
{-Size, Size, Size, 1.0f,0.0f },
{-Size,-Size, Size, 1.0f,1.0f },
{ Size, Size, Size, 0.0f,0.0f },
{ Size,-Size, Size, 0.0f,1.0f },
{-Size, Size, Size, 0.0f,0.0f },
{ Size, Size, Size, 1.0f,0.0f },
{-Size, Size,-Size, 0.0f,1.0f },
{ Size, Size,-Size, 1.0f,1.0f },
{-Size,-Size, Size, 0.0f,0.0f },
{-Size,-Size,-Size, 0.0f,1.0f },
{ Size,-Size, Size, 1.0f,0.0f },
{ Size,-Size,-Size, 1.0f,1.0f },
{ Size, Size,-Size, 0.0f,0.0f },
{ Size, Size, Size, 1.0f,0.0f },
{ Size,-Size,-Size, 0.0f,1.0f },
{ Size,-Size, Size, 1.0f,1.0f },
{-Size, Size,-Size, 1.0f,0.0f },
{-Size,-Size,-Size, 1.0f,1.0f },
{-Size, Size, Size, 0.0f,0.0f },
{-Size,-Size, Size, 0.0f,1.0f }
};
g_pVB = createVertexBuffer(sizeof(g_Vertices) * sizeof(VERTEX), D3DFVF_VERTEX, pd3dDevice);
VOID* pVertices;
g_pVB->Lock( 0, sizeof(g_Vertices), (void**)&pVertices, 0 );
// copy the vertices into the buffer
memcpy( pVertices, g_Vertices, sizeof(g_Vertices) );
// unlock the vertex buffer
g_pVB->Unlock();
}
void SkyBox::Render(LPDIRECT3DDEVICE9 pd3dDevice)
{
pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(VERTEX) );
pd3dDevice->SetFVF( D3DFVF_VERTEX );
pd3dDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);
// Draw the trianglestrips that make up the cube
pd3dDevice->SetTexture(0, tSide1);
pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
pd3dDevice->SetTexture(0, tSide3);
pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 4, 2 );
pd3dDevice->SetTexture(0, tSide5);
pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 8, 2 );
pd3dDevice->SetTexture(0, tSide6);
pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 12, 2 );
pd3dDevice->SetTexture(0, tSide2);
pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 16, 2 );
pd3dDevice->SetTexture(0, tSide4);
pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 20, 2 );
}
LPDIRECT3DVERTEXBUFFER9 SkyBox::createVertexBuffer(int size, DWORD usage, LPDIRECT3DDEVICE9 pd3dDevice)
{
LPDIRECT3DVERTEXBUFFER9 buffer;
// Create the vertex buffer.
pd3dDevice->CreateVertexBuffer( size,
0,
usage,
D3DPOOL_DEFAULT,
&buffer,
NULL );
return buffer;
}