Wat is er fout?

Status
Niet open voor verdere reacties.

leetje

Gebruiker
Lid geworden
29 mrt 2008
Berichten
6
Hallo,
Ik ben sinds een tijdje een goede basis aan het proberen te bouwen voor een directx device. Ik heb van internet een paar voorbeelden gehaald, en het directxdevice gescheiden van de windowcreate functie. Het probleem is dat ik wel een device krijg, maar dat de DrawPrimitiveUP() geen lijnen tekent, of niet weergeeft. Ik weet niet wat ik fout heb gedaan, een van jullie misschien??

Code:
void CDirect3D::FrameAdvance()
{
	CMesh *pMesh = NULL;

	m_Timer.Tick();
	if(!m_bActive)
		return;
	if(m_bLostDevice)
	{
		HRESULT hRet = m_pD3DDevice->TestCooperativeLevel();
		SetupRenderStates();
		m_bLostDevice = false;
	}
	
	PlayerInput();
	AnimateObjects();
	
	m_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xFF238723, 1.0f, 0);

	m_pD3DDevice->BeginScene();

	for(ULONG i=0; i<2; i++)
	{
		pMesh = m_pObject[i].m_pMesh;

		m_pD3DDevice->SetTransform(D3DTS_WORLD, &m_pObject[i].m_mtxWorld);

		for(ULONG f=0; f<pMesh->m_nPolygonCount; f++)
		{
			CPolygon * pPolygon = pMesh->m_pPolygon[f];
			m_pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, pPolygon->m_nVertexCount - 1, pPolygon->m_pVertex, sizeof(CVertex));
		}
	}
	m_pD3DDevice->EndScene();

	if(FAILED(m_pD3DDevice->Present(NULL, NULL, m_hWnd, NULL)))
		m_bLostDevice = true;
	return;
}

dit is de frameadvance functie waarin ik denk dat het fout gaat...

verder is er nog de createdevice die fout kan zijn...

Code:
bool CDirect3D::InitDirect3D(LPTSTR WCT)
{
	if(!(m_hWnd = FindWindow(WCT, WCT)))
		return false;

	D3DPRESENT_PARAMETERS PresentParams;
	D3DCAPS9 Caps;
	D3DDISPLAYMODE CurrentMode;
	HRESULT hRet;

	m_pD3D = Direct3DCreate9(D3D_SDK_VERSION);

	if(!m_pD3D)
		return false;
	ZeroMemory(&PresentParams, sizeof(D3DPRESENT_PARAMETERS));

	m_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &CurrentMode);
	PresentParams.BackBufferFormat = CurrentMode.Format;
	PresentParams.BackBufferCount = 1;
	PresentParams.BackBufferWidth = 1680;
	PresentParams.BackBufferHeight = CurrentMode.Height;
	PresentParams.EnableAutoDepthStencil = true;
	PresentParams.AutoDepthStencilFormat = FindDepthStencilFormat(D3DADAPTER_DEFAULT, CurrentMode, D3DDEVTYPE_HAL);
	PresentParams.SwapEffect = D3DSWAPEFFECT_DISCARD;
	PresentParams.Windowed = false;

	unsigned long ulFlags = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
	ZeroMemory(&Caps, sizeof(D3DCAPS9));

	m_pD3D->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &Caps);
	if(Caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
		ulFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING;

	if(FAILED(hRet = m_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_hWnd, ulFlags, &PresentParams, &m_pD3DDevice)))
	{
		PresentParams.AutoDepthStencilFormat = FindDepthStencilFormat(D3DADAPTER_DEFAULT, CurrentMode, D3DDEVTYPE_REF);
		ZeroMemory(&Caps, sizeof(D3DCAPS9));
		ulFlags = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
		m_pD3D->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, &Caps);

		if(Caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
			ulFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING;

		if(FAILED(hRet = m_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, m_hWnd, ulFlags, &PresentParams, &m_pD3DDevice)))
		{
			return false;
		}
	}
	m_D3DPresentParams = PresentParams;
	return true;
}

als je hier niet genoeg aan hebt, kan ik nog meer van mijn code uploaden.
alvast bedankt :p
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan