xboxscene.org forums

Author Topic: Can't Read From Hdd  (Read 88 times)

DeBuGGa

  • Archived User
  • Newbie
  • *
  • Posts: 2
Can't Read From Hdd
« on: March 15, 2005, 04:43:00 AM »

CODE
#include
#include "d3d.h"

D3DXIMAGE_INFO imageInfo;

void __cdecl main()
{
   CDirect3D::InitD3D();
   D3DXCreateTextureFromFileEx(CDirect3D::m_pD3DDevice,
        "Sprite.bmp",
        0,0,1,0,
        D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_DEFAULT,
        NULL , &imageInfo, NULL, &CDirect3D::m_pSprite);
   while(true)
   {
  CDirect3D::m_pD3DDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,255),1.0f,0);
  CDirect3D::m_pD3DDevice->BeginScene();

  CDirect3D::DrawSprite(   CDirect3D::m_pD3DDevice,
        CDirect3D::m_pSprite,
        50,
        50,
        256,
        256,
        0);

  CDirect3D::m_pD3DDevice->EndScene();
  CDirect3D::m_pD3DDevice->Present(NULL,NULL,NULL,NULL);
   }
   CDirect3D::ExitD3D();
}


D3D.CPP
CODE
#include "D3D.h"

LPDIRECT3D8     CDirect3D::m_pD3D = NULL;
LPDIRECT3DDEVICE8   CDirect3D::m_pD3DDevice = NULL;
LPDIRECT3DTEXTURE8   CDirect3D::m_pSprite = NULL;

void CDirect3D::InitD3D()
{
   CDirect3D::m_pD3D = Direct3DCreate8(D3D_SDK_VERSION);
   
   D3DPRESENT_PARAMETERS d3dpp;
   ZeroMemory(&d3dpp,sizeof(d3dpp));

   d3dpp.BackBufferWidth     = 640;
   d3dpp.BackBufferHeight     = 480;
   d3dpp.BackBufferFormat     = D3DFMT_X8R8G8B8;
   d3dpp.BackBufferCount     = 1;
   d3dpp.SwapEffect    = D3DSWAPEFFECT_DISCARD;
   d3dpp.EnableAutoDepthStencil   = TRUE;
   d3dpp.AutoDepthStencilFormat   = D3DFMT_D24S8;

   CDirect3D::m_pD3D->CreateDevice(0,D3DDEVTYPE_HAL,NULL,D3DCREATE_HARDWARE_VERTEXPROCESSING,&d3dpp,&CDirect3D::m_pD3DDevice);
}

void CDirect3D::DrawSprite(IDirect3DDevice8* pDevice, IDirect3DBaseTexture8 * pTexture, int iPosX, int iPosY, int iSizeX, int iSizeY, BOOL bTransparency)
{
   IDirect3DVertexBuffer8* pVB;

   struct VERTEX_SPRITE
   {
  float x, y, z, rhw;  // z always 0.0, rhw always 1.0
  float u, v;          // texture coords
   };

   VERTEX_SPRITE sprite[4] =
   { //   x    y  z  w  tu  tv
   { (FLOAT)iPosX, (FLOAT)iPosY, 0, 1, 0.0, 0.0 },
   { (FLOAT)(iPosX+iSizeX), (FLOAT)iPosY, 0, 1, 1.0, 0.0 },
   { (FLOAT)(iPosX+iSizeX), (FLOAT)(iPosY+iSizeY), 0, 1, 1.0, 1.0 },
   { (FLOAT)iPosX, (FLOAT)(iPosY+iSizeY), 0, 1, 0.0, 1.0 }
   };

   // create vertex buffer
   pDevice->CreateVertexBuffer( 4 * sizeof( VERTEX_SPRITE ), D3DUSAGE_WRITEONLY, FVF_SPRITE, D3DPOOL_DEFAULT, &pVB );

   // lock vertex buffer
   VERTEX_SPRITE* pVerts;
   pVB->Lock( 0, 0, (BYTE**)&pVerts, 0 );

   // fill vertex buffer
   memcpy( pVerts, sprite, sizeof( sprite ));

   // unlock vertex buffer
   pVB->Unlock();



   pDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_SELECTARG1 );
   pDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
   if ( bTransparency )
   {
  pDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_SELECTARG1 );
  pDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
   }
   else
   {
  pDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_DISABLE );
   }
   pDevice->SetTextureStageState( 0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR );
   pDevice->SetTextureStageState( 0, D3DTSS_MINFILTER, D3DTEXF_LINEAR );

   // now draw sprite
   // render objects
   pDevice->SetTexture( 0, pTexture );

   pDevice->SetVertexShader( FVF_SPRITE );
   pDevice->SetStreamSource( 0, pVB, sizeof( VERTEX_SPRITE ));
   pDevice->DrawPrimitive( D3DPT_TRIANGLEFAN, 0, 2 );

   // clean up
   pDevice->SetTexture( 0, NULL );
   pVB->Release();
}

void CDirect3D::ExitD3D()
{
   CDirect3D::m_pD3D->Release();
   CDirect3D::m_pD3DDevice->Release();
}


D3D.H
CODE
#include

#define FVF_SPRITE (D3DFVF_XYZRHW | D3DFVF_TEX0)

class CDirect3D
{
public:
   static   LPDIRECT3D8     m_pD3D;
   static   LPDIRECT3DDEVICE8   m_pD3DDevice;
   static   LPDIRECT3DTEXTURE8   m_pSprite;

   static   void InitD3D();
   static   void DrawSprite(IDirect3DDevice8* pDevice, IDirect3DBaseTexture8 * pTexture, int iPosX, int iPosY, int iSizeX, int iSizeY, BOOL bTransparency);
   static   void ExitD3D();
};


The texture isn't shown! I'm using EvoX to start the xbe and cxbe and xbedump to make it ready for my xbox! Then I use an FTP prog to upload it to drive e:\ but the texture isn't loaded! I also tried to burn it on a DVD+RW but the texture is still not visible!

hope you can help me now!
cu
Logged

g0at3r

  • Archived User
  • Newbie
  • *
  • Posts: 14
Can't Read From Hdd
« Reply #1 on: March 15, 2005, 04:55:00 AM »

When an .xbe is launched the the root folder of the .xbe is mounted as D:\
So if you have the bitmap in the same folder as your .xbe you'd load it as "D:\\Image.bmp".

If you want to use the other partitions you will have to look into mounting devices.

g0at3r
Logged

DeBuGGa

  • Archived User
  • Newbie
  • *
  • Posts: 2
Can't Read From Hdd
« Reply #2 on: March 15, 2005, 06:58:00 AM »

CODE
D3DXCreateTextureFromFileEx(CDirect3D::m_pD3DDevice,
  "D:\\Sprite.bmp",
        0,0,1,0,
        D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_DEFAULT,
        NULL , &imageInfo, NULL, &CDirect3D::m_pSprite);


Is that right?!
Logged