Original Post
Hi. I'm working on a visual novel maker called Novelty (www.visualnovelty.com) and I've run into a very specific problem that I need some help with. Some of my users have experienced a bug where images (regular textured quads) won't render properly. The curious thing is that they are all running on the same graphics accelerator: VIA/S3G UniChrome Pro. This bug seems to only occur with this specific chipset. This is how the bug appears How it's supposed to look What puzzles me is that the initialization of DirectX hasn't failed in the first place. Some elements, such as the UI controls, are being rendered. Granted, they are all texture-less, but I somehow doubt the chip wouldn't support textures. The code for rendering the quads is as vanilla as can be and I can't imagine what would cause this. It's not like I'm trying to do anything fancy and it works perfectly on all other hardware. Does anyone have any experience with this particular piece of hardware or have any hint of what its issue could be? PS. While my users were googling that card they discovered it was on Blizzard's list of unsupported hardware for WoW. Need I make this the first on a similar list of my own? FVF: Render code:
typedef struct
{
float x;
float y;
float z;
D3DCOLOR color;
float u;
float v;
float maskU;
float maskV;
} TLVERTEX2D;
const DWORD D3DFVF_TLVERTEX2D = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX2;
void scGeometry::Draw()
{
if (!m_pVertexBuffer || !m_pDevice || m_Vertices.size() < 3 || m_Mode == SC_GEO_UNKNOWN)
return;
m_pDevice->SetFVF(D3DFVF_TLVERTEX2D);
m_pDevice->SetStreamSource(0, m_pVertexBuffer, 0, sizeof(TLVERTEX2D));
switch (m_Mode)
{
case SC_GEO_TRIFAN:
m_pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, m_Vertices.size() - 2 );
break;
case SC_GEO_TRILIST:
m_pDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, m_Vertices.size() / 3 );
break;
case SC_GEO_TRISTRIP:
m_pDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, m_Vertices.size() - 2 );
break;
}
}