I am currently attempting to write my own library that utilizes DirectX 9 (and other DirectX versions in the future) and I've hit a huge roadblock with my progress. I've basically never used DirectX before, and I'm having trouble with rendering anything other than simple lines. I've looked around all over the place and used shitgpt among other AI to attempt to figure out why it isn't working, and to no avail. Here is my current function for Rectangle->Draw()

Code:
if (!Valid()) { return; }
if (!d3ddev) { return; }

LPDIRECT3DVERTEXBUFFER9 vBuffer;

_VTX OurVertices[] =
{
	{ 0, 0, 0, 1.0f, D3DCOLOR_ARGB(255,255,0,0)},
	{ 640, 0, 0, 1.0f, D3DCOLOR_ARGB(255,0,255,0) },
	{ 0, 480, 0, 1.0f, D3DCOLOR_ARGB(255,0,0,255) },
	{ 640, 480, 0, 1.0f, D3DCOLOR_ARGB(255,127,127,127) }
};

d3ddev->CreateVertexBuffer(4 * sizeof(_VTX),
	0,
	CUSTOMFVF,
	D3DPOOL_MANAGED,
	&vBuffer,
	NULL);

VOID* pVoid;

vBuffer->Lock(0, 0, (void**)&pVoid, 0);
memcpy(pVoid, OurVertices, sizeof(OurVertices));
vBuffer->Unlock();


d3ddev->SetFVF(CUSTOMFVF);
d3ddev->SetStreamSource(0, vBuffer, 0, sizeof(_VTX));
d3ddev->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);

vBuffer->Release();
This AI slop doesn't work. I've also tried using DrawPrimitiveUP and a raw array of vertices, but neither have worked. Here is what my RenderScene hook looks like:

Code:
	Sudevice = pDevice; // inline IDirect3DDevice9* Sudevice = nullptr; d3ddev in the above code block
	
	sudsy::Render(); // Will call draw on all current objects. Ive pasted the above code block directly into this hook too, same results of nothing

	return oEndScene(pDevice);
I'm currently using Counter Strike: Source, Left 4 Dead 2, and a random example D3D9 application to test its functionality. I've noticed that removing the SetFVF yields broken results, rendering a sliced up, transparent rectangle. I've tried setting and disabling flags, as well, with no change.