Ejemplo n.º 1
0
void release_test_d3d_device ( void )
{
	HRESULT
		ddrval;

	destroy_d3d_vertex_buffers ();

	if ( d3d.d3d )
	{
		if ( d3d.device )
		{
			ddrval = IDirect3DDevice7_Release ( d3d.device );
			if ( ddrval < DD_OK )
			{
				debug_log ( "Unable to release d3d device: %s", get_d3d_error_message ( ddrval ) );
			}
			d3d.device = NULL;
		}

		if ( d3d.d3d )
		{
			ddrval = IDirect3D7_Release ( d3d.d3d );
			if ( ddrval < DD_OK )
			{
				debug_log ( "Unable to release d3d: %s", get_d3d_error_message ( ddrval ) );
			}
			d3d.d3d = NULL;
		}
	}
}
Ejemplo n.º 2
0
void release_test_d3d_device ( void )
{

	unsigned int
		ddrval;

	destroy_d3d_vertex_buffers ();

	if ( d3d.d3d )
	{

		if ( d3d.device )
		{
#ifdef _WIN32
			ddrval = IDirect3DDevice7_Release ( d3d.device );

			if ( ddrval < DD_OK )
			{

				debug_log ( "Unable to release d3d device: %s", get_d3d_error_message ( ddrval ) );
			}
#endif
			d3d.device = NULL;
		}

		if ( d3d.d3d )
		{
#ifdef _WIN32
			ddrval = IDirect3D7_Release ( d3d.d3d );

			if ( ddrval < DD_OK )
			{

				debug_log ( "Unable to release d3d: %s", get_d3d_error_message ( ddrval ) );
			}
#endif
			d3d.d3d = NULL;
		}
	}
}
Ejemplo n.º 3
0
void clear_zbuffer_screen_using_viewport ( void )
{

//	ASSERT ( !d3d_in_3d_scene );

	if ( d3d.device )
	{
#ifdef _WIN32
		unsigned int
			ret;

		ret = IDirect3DDevice7_Clear ( d3d.device, 0, NULL, D3DCLEAR_ZBUFFER, 0, 1.0, 0 );

		if ( ret != DD_OK )
		{

			debug_log ( "Unable to clear zbuffer: %s", get_d3d_error_message ( ret ) );
		}
#endif
	}
}
Ejemplo n.º 4
0
int create_test_d3d_device ( int width, int height )
{

	D3DDEVICEDESC7
		hardware_desc;

	unsigned int
		d3drval;

	//
	// Get a d3d3 driver interface
	//
#ifdef _WIN32
	d3drval = IDirectDraw7_QueryInterface ( ddraw.ddraw, &IID_IDirect3D7, &d3d.d3d );

	if ( d3drval != DD_OK )
	{

		debug_log ( "Can't get a d3d device in this resolution" );

		return ( FALSE );
	}

	//
	// Query for a D3DDEVICE2 object
	//

	d3drval = IDirect3D7_CreateDevice ( d3d.d3d, &IID_IDirect3DHALDevice, ddraw.lpRenderBuffer, &d3d.device );

	if ( d3drval != DD_OK )
	{

		debug_log ( "Can't get a d3d device2 in this resolution" );

		return ( FALSE );
	}

	//
	// Get the capabilities of the device
	//

	d3drval = IDirect3DDevice7_GetCaps ( d3d.device, &hardware_desc );

	if ( d3drval != DD_OK )
	{

		debug_log ( "Unable to get the d3d device capabilities at this resolution" );

		return ( FALSE );
	}
#endif
	//
	// Set the capabilities of the 3dvisual according to the capabilities of the card.
	//

	set_d3d_capabilities ( &hardware_desc );

	//
	// Set render target
	//
#ifdef _WIN32
	d3drval = IDirect3DDevice7_SetRenderTarget ( d3d.device, ddraw.lpRenderBuffer, 0 );

	if ( d3drval != DD_OK )
	{

		debug_log ( "Unable to set render target" );

		return ( FALSE );
	}
#endif
	{

		D3DVIEWPORT7
			viewdata;

		viewdata.dwX = 0;
		viewdata.dwY = 0;

		viewdata.dwWidth = application_video_width;
		viewdata.dwHeight = application_video_height;

		viewdata.dvMinZ = 0;
		viewdata.dvMaxZ = 1;
#ifdef _WIN32
		d3drval = IDirect3DDevice7_SetViewport ( d3d.device, &viewdata );

		if ( d3drval != D3D_OK )
		{

			debug_log ( "Unable to set viewport2: %d, %d, %s", application_video_width, application_video_height, get_d3d_error_message ( d3drval ) );

			return ( FALSE );
		}
#endif
        glViewport(viewdata.dwX, viewdata.dwY, viewdata.dwWidth, viewdata.dwHeight);
        glDepthRange(viewdata.dvMinZ, viewdata.dvMaxZ);
	}

	//
	// Create the vertex buffers
	//

	create_d3d_vertex_buffers ();

	return ( TRUE );
}
Ejemplo n.º 5
0
void clear_zbuffer_screen ( void )
{

	LPDIRECTDRAWSURFACEX
		zbuffer;

	if ( !active_screen )
	{

		return;
	}

	if ( active_screen == video_screen )
	{

		zbuffer = ddraw.lpZBuffer;
	}
	else
	{

		zbuffer = active_screen->zbuffer_surface;
	}

	if ( !zbuffer )
	{

		return;
	}

	{

		unsigned int
			d3drval;

		DDBLTFX
			fx;

		fx.dwSize = sizeof ( DDBLTFX );

		if ( application_video_colourdepth == 32 )
		{

			fx.dwFillDepth = 0xffffffff;
		}
		else
		{

			fx.dwFillDepth = 0xffff;
		}
#ifdef _WIN32
		d3drval = IDirectDrawSurface7_Blt ( ddraw.lpZBuffer, NULL, NULL, NULL, DDBLT_DEPTHFILL, &fx );

		if ( d3drval != DD_OK )
		{

			debug_log ( "Unable to blt to z buffer: %s", get_d3d_error_message ( d3drval ) );
		}
#endif

        glClear(GL_DEPTH_BUFFER_BIT);
	}
}