Skip to main content
gamedev.net
🔒 Locked

sdk example

Started by hemp Dec 23, 2001 at 12:36 PM 1 replies 350+ views
Original Post
hemp
hemp
I got this from the sdk and only changed it a little and it won''t compile this is what it says

Error executing cl.exe. Main.obj - 1 error(s), 0 warning(s)

heres the code:

  
#include <d3d8.h>
#include <iostream>
#include <windows.h>
#include <windowx.h>


//global variables

LPDIRECT3D8             g_pD3D       = NULL; // Used to create the D3DDevice

LPDIRECT3DDEVICE8       g_pd3dDevice = NULL; // Our rendering device

LPDIRECT3DVERTEXBUFFER8 g_pVB        = NULL; // Buffer to hold vertices


// A structure for our custom vertex type

struct CUSTOMVERTEX
{
    FLOAT x, y, z, rhw; // The transformed position for the vertex

    DWORD color;        // The vertex color

};

// Our custom FVF, which describes our custom vertex structure

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)

HRESULT InitD3D(HWND hwnd)
{
	// Create the D3D object, which is needed to create the D3DDevice.

	if(NULL == ( g_pD3D=Direct3DCreate( D3D_SDK_Version) ) )
			return E_FAIL;

	D3DDISPLAYMODE d3ddm;
	if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT , &d3ddm) ) )
		return E_FAIL;

	// Set up the structure used to create the D3DDevice.

	D3DPRESENT_PARAMETERS d3dpp;					
	ZeroMemory( &d3dpp, sizeof( d3dpp) );
	d3dpp.Windowed = TRUE;
	d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
	d3dpp.BackBufferFormat = d3ddm.Format;

	//Create Direct3D device

	if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                                      D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                      &d3dpp, &g_pd3dDevice ) ) )
		{
			return E_FAIL;
		}

    // Device state would normally be set here


    return S_OK;
}			
	


	
	
HRESULT InitVB()
{
	
	// Initialize three vertices for rendering a triangle

    CUSTOMVERTEX g_Vertices[] =
    {
		{ 150.0f,  50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color

        { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
        {  50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
		{  50.0f,  50.0f, 0.5f, 1.0f, 0x00ff00ff, },
		{ 250.0f,  50.0f, 0.5f, 1.0f, 0xffffff00, },
	};  
	
    // Create the vertex buffer.    

	if( FAILED( g_pd3dDevice->CreateVertexBuffer( 3*sizeof(CUSTOMVERTEX),
                                                  0, D3DFVF_CUSTOMVERTEX,
                                                  D3DPOOL_DEFAULT, &g_pVB ) ) )
    {
        return E_FAIL;
    }

    // Now we fill the vertex buffer.

	VOID* pVertices;
		if( FAILED( g_pVB->Lock( 0, sizeof(g_Vertices), (BYTE**)&pVertices, 0 ) ) )
			return E_FAIL;
		memcpy( pVertices, g_Vertices, sizeof(g_Vertices) );
		g_pVB->Unlock();

		return S_OK;
}
	




	//render function	

	VOID Render()
	{
		// Clear the backbuffer to a blue color

		g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );

		// Begin the scene

		g_pd3dDevice->BeginScene();

		// Draw the triangles in the vertex buffer. This is broken into a few

		// steps. We are passing the vertices down a "stream", so first we need

		// to specify the source of that stream, which is our vertex buffer. Then

		// we need to let D3D know what vertex shader to use. Full, custom vertex

		// shaders are an advanced topic, but in most cases the vertex shader is

		// just the FVF, so that D3D knows what type of vertices we are dealing

		// with. Finally, we call DrawPrimitive() which does the actual rendering

		// of our geometry (in this case, just one triangle).

		 g_pd3dDevice->SetStreamSource( 0, g_pVB, sizeof(CUSTOMVERTEX) );
		 g_pd3dDevice->SetVertexShader( D3DFVF_CUSTOMVERTEX );
		 g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );

		  // End the scene

		 g_pd3dDevice->EndScene();
		
		// Present the backbuffer contents to the display

		g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
	}	
	
	//Releases all previously initialized objects

	VOID Cleanup()
	{
		if( g_pd3dDevice != NULL) 
        g_pd3dDevice->Release();

		if( g_pD3D != NULL)
        g_pD3D->Release();
		
		if( g_pVB != NULL )        
        g_pVB->Release();
	}
	
}	
	
	
	LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
        case WM_DESTROY:
            PostQuitMessage( 0 );
            return 0;
    }

    return DefWindowProc( hWnd, msg, wParam, lParam );
}


INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
    // Register the window class.

    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, 
                      GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
                      "Tiatriz", NULL };
    RegisterClassEx( &wc );

    // Create the application''s window.

    HWND hWnd = CreateWindow( "Tiatriz", "Tiatriz", 
                              WS_OVERLAPPEDWINDOW, 100, 100, 640, 480,
                              GetDesktopWindow(), NULL, wc.hInstance, NULL );

    // Initialize Direct3D

    if( SUCCEEDED( InitD3D( hWnd ) ) )
    {
        // Create the vertex buffer

        if( SUCCEEDED( InitVB() ) )
        {
            // Show the window

            ShowWindow( hWnd, SW_SHOWDEFAULT );
            UpdateWindow( hWnd );

            // Enter the message loop

            MSG msg;
            ZeroMemory( &msg, sizeof(msg) );
            while( msg.message!=WM_QUIT )
            {
                if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
                {
                    TranslateMessage( &msg );
                    DispatchMessage( &msg );
                }
                else
                    Render();
            }
        }
    }

    // Clean up everything and exit the app

    Cleanup();
    UnregisterClass( "Tiatriz", wc.hInstance );
    return 0;
}
  
thanks

draqza
draqza
Umm.... are you remembering to add the correct libraries to link to?
WNDCLASSEX Reality;......Reality.lpfnWndProc=ComputerGames;......RegisterClassEx(&Reality);Unable to register Reality...what's wrong?---------Dan Uptonhttp://0to1.orghttp://www20.brinkster.com/draqza
hemp
hemp
All the libraries are correct.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.