All pastes #968521 Raw Edit

Jon's Skybox

public text v1 · immutable
·published 2008-04-03 02:29 UTC
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;
}