Jump to content

View more

Image of the Day

Working on an auto spawn system. #gamedev #indiedev #screenshotsaturday https://t.co/Mm2kfekz7b
IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.


Sign up now

DX9 Wired Texture Effect

4: Adsense

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.


  • You cannot reply to this topic
3 replies to this topic

#1 monkeyboi   Members   

188
Like
0Likes
Like

Posted 20 February 2013 - 11:54 AM

All I am trying to do is creating a quad in world coordinate and put a 64*64 texture on. I disable the lighting and enable the alpha.

Here is part of the codes, really have no idea what the problem is. 

float Rot = 0.0f;
struct QUAD 
{
	D3DXVECTOR4	 Pos;
	//D3DXVECTOR4	 Nor;
	D3DXVECTOR2  TexCoord;

	static const DWORD  FVF;
};
const DWORD QUAD::FVF = D3DFVF_XYZ | D3DFVF_TEX1;//RHW D3DFVF_NORMAL

IDirect3DVertexBuffer9*	g_pVB;
IDirect3DIndexBuffer9* g_pIB;
void LoadTexture(IDirect3DDevice9* pd3dDevice)
{
	hr = D3DXCreateTextureFromFile(pd3dDevice,L"LidTexTest.png",&WholeTex);
	WholeTex->GetSurfaceLevel(0,&WholeTexSur);

}
void CreateQuad(IDirect3DDevice9* pd3dDevice)
{
	hr = pd3dDevice->CreateVertexBuffer(
		4 * sizeof(QUAD),
		D3DUSAGE_WRITEONLY,
		QUAD::FVF,
		D3DPOOL_MANAGED, 
		&g_pVB,
		0);

	QUAD temp[4];
	temp[0].Pos = D3DXVECTOR4(-0.5,0.5,0,1);
	temp[1].Pos = D3DXVECTOR4( 0.5,0.5,0,1);
	temp[2].Pos = D3DXVECTOR4(-0.5,-0.5,0,1);
	temp[3].Pos = D3DXVECTOR4( 0.5,-0.5,0,1);

	temp[0].TexCoord = D3DXVECTOR2(0.0f,0.0f);
	temp[1].TexCoord = D3DXVECTOR2(1.0f,0.0f);
	temp[2].TexCoord = D3DXVECTOR2(0.0f,1.0f);
	temp[3].TexCoord = D3DXVECTOR2(1.0f,1.0f);
	
	VOID* lpVertices;
	g_pVB->Lock( 0, sizeof(temp), (void**)&lpVertices, 0 );
	memcpy( lpVertices, temp, sizeof(temp) );
	g_pVB->Unlock();

	int iIQuantity = 6;
	int Index[6];

	Index[0] = 0;
	Index[1] = 1;
	Index[2] = 2;
	Index[3] = 2;
	Index[4] = 1;
	Index[5] = 3;
	
	unsigned int uiBufferLength = (unsigned int)(iIQuantity*sizeof(int));
	pd3dDevice->CreateIndexBuffer(uiBufferLength,
		0,D3DFMT_INDEX32,D3DPOOL_MANAGED,&g_pIB,0);

	void* pbIndices;
	g_pIB->Lock(0,uiBufferLength,&pbIndices,0);

	memcpy( pbIndices, Index, iIQuantity*sizeof(int) );	

	g_pIB->Unlock();
}
HRESULT CALLBACK OnD3D9CreateDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc,
                                     void* pUserContext )
{
	SetupCamera(pd3dDevice);
	LoadTexture(pd3dDevice);
	CreateQuad(pd3dDevice);
    return S_OK;
}

void CALLBACK OnD3D9FrameRender( IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext )
{
    HRESULT hr;

    // Clear the render target and the zbuffer 
    V( pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_ARGB( 0, 45, 50, 170 ), 1.0f, 0 ) );
	pd3dDevice->SetRenderState( D3DRS_LIGHTING, false );
	pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
	pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
	pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
	pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
	
    // Render the scene
    if( SUCCEEDED( pd3dDevice->BeginScene() ) )
    {
		Rot = Rot + 0.00;
		D3DXMATRIX matTemp;
		D3DXMATRIX m_matWorld;
		D3DXMatrixIdentity(&matTemp);
		D3DXMatrixIdentity(&m_matWorld);

		D3DXMatrixRotationY(&matTemp, Rot);
		D3DXMatrixMultiply(&m_matWorld,&m_matWorld,&matTemp);

		D3DXMatrixMultiply(&m_matWorld,&m_matWorld,&matTemp);

		pd3dDevice->SetTransform( D3DTS_WORLD, &m_matWorld);

		pd3dDevice->SetFVF(QUAD::FVF);
		pd3dDevice->SetTexture(0,WholeTex);
		pd3dDevice->SetStreamSource(0, g_pVB, 0, sizeof(QUAD));
		hr = pd3dDevice->SetIndices(g_pIB);
		hr = pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,4,0,2);
		pd3dDevice->SetTexture(0,NULL);

        V( pd3dDevice->EndScene() );
    }
}

 

Many thanks 



#2 monkeyboi   Members   

188
Like
0Likes
Like

Posted 20 February 2013 - 11:57 AM

oh the texture is fine, because I can render it with a quad on screen coordinate, just when I use world coordinate to describe the quad, the texture go crazy. 



#3 ankhd   Members   

2301
Like
0Likes
Like

Posted 20 February 2013 - 07:45 PM

Hello. Try a scale the quad is small 0.5

#4 C0lumbo   Members   

4357
Like
1Likes
Like

Posted 21 February 2013 - 02:22 AM

I think the problem is that you're using D3DFVF_XYZ, but you're sending 4 component vectors.






Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.