Mam napisana aplikację na obracający się kwadrat. Chciałbym teraz na ten kwadrat nałożyć texturę - jednolitą grafikę bez powtórzeń. Próbowałem korzystać z różnych tutoriali jednak żaden mi nie chce zadziałać. Może ktoś pomoże - w ostateczności mogę na priv podesłać cały program.
HRESULT InicjalizacjaVB(void)
{
// utworznie tablicy z wierzcholkami
CUSTOM_VERTEX vertices[4];
// wypelniamy kazdy wierzcholek osobno
vertices[0].x = -1.0f;
vertices[0].y = 1.0f;
vertices[0].z = 0.0f;
vertices[0].rhw = 1.0f;
vertices[0].u = 0.0f;
vertices[0].v = 0.0f;
vertices[1].x = 1.0f;
vertices[1].y = 1.0f;
vertices[1].z = 0.0f;
vertices[1].rhw = 1.0f;
vertices[1].u = 1.0f;
vertices[1].v = 0.0f;
vertices[2].x = -1.0f;
vertices[2].y = -1.0f;
vertices[2].z = 0.0f;
vertices[2].rhw = 1.0f;
vertices[2].u = 0.0f;
vertices[2].v = 1.0f;
vertices[3].x = 1.0f;
vertices[3].y = -1.0f;
vertices[3].z = 0.0f;
vertices[3].rhw = 1.0f;
vertices[3].u = 1.0f;
vertices[3].v = 1.0f;
// utworznie bufora wierzcholkow
HRESULT result = D3D_OK;
result = gDevice->CreateVertexBuffer(
4 * sizeof(CUSTOM_VERTEX),
0,
D3DFVF_CUSTOM_VERTEX,
D3DPOOL_DEFAULT,
&gVB, 0);
// sprawdzenie wyniku operacji
if(D3D_OK != result)
{
return E_FAIL;
}
// skopiowanie wierzcholkow
void* p = 0;
if(D3D_OK == gVB->Lock(
0, sizeof(vertices), (void**)&p, 0))
{
memcpy(p, vertices, sizeof(vertices));
gVB->Unlock();
} else
{
return E_FAIL;
}
return S_OK;
}
//
// Funkcja renderujaca scene
//
void loadTexture(void)
{
D3DXCreateTextureFromFile(gDevice, "DH.png", &g_pTexture);
gDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
gDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
//gDevice->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);
}
void Renderowanie(void)
{
// zamalowanie bufora ramki na czerwono
gDevice->Clear( 0, 0, D3DCLEAR_TARGET, 0x00808080, 1.0f, 0);
// ustawienie strummienia wierzcholkow
gDevice->SetStreamSource(0, gVB, 0, sizeof(CUSTOM_VERTEX));
// ustwienie formatu wierzcholka
gDevice->SetFVF(D3DFVF_CUSTOM_VERTEX);
// obrocenie macierzy swiata
D3DXMatrixRotationY(&matWorld, GetTickCount() / 1000.0f);
gDevice->SetTransform(D3DTS_WORLD,&matWorld);
// rozpoczecie i zakonczenie renderowania sceny
gDevice->BeginScene();
// renderowanie listy trojkatow
gDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
gDevice->EndScene();
// wyswietlenie bufora ramki na ekranie monitora
gDevice->Present(0, 0, 0, 0);
}