bool CGrass::Initialize(std::string texture,int MaxGrass,float x,float y)
{
m_MaxGrass = MaxGrass;
GrassVertex vertexdata[]=
{
// x y z tu1 tv1 tu2 tv2
{ -x, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f},
{ x, 0.0f, 0.0f, 0.01f, 1.0f, 0.0f, 0.0f},
{ x, -y, 0.0f, 0.01f, 0.01f,0.0f, 0.0f},
{ -x, 0.0f, 0.0f, 1.0f, 1.0f ,0.0f, 0.0f},
{ x, -y, 0.0f, 0.01f, 0.01f,0.0f, 0.0f},
{ -x, -y, 0.0f, 1.0f, 0.01f,0.0f, 0.0f},
};
Renderer->device->CreateVertexBuffer(sizeof(GrassVertex)*m_MaxGrass*6,
D3DUSAGE_WRITEONLY,GrassVertex::FVF,
D3DPOOL_DEFAULT,&m_GrassVb,0);
GrassVertex* vertexptr;
m_GrassVb->Lock(0,6*m_MaxGrass*sizeof(GrassVertex),(void**)vertexptr,0);
for (int j=0; j < m_MaxGrass; j++)
{
// Generate each quad at random position, orientation, height
D3DXMATRIX mat;
D3DXMatrixIdentity( &matRandom);
const int Area=Terrain->GetMapSize()*Terrain->GetMapScale();
d.x =GetRandom(0,(Area))*4;
d.z =GetRandom(0,(Area))*4;
hy = Terrain->GetTerrainHeight(d.x,d.z);
d.y = hy;
float heightScale = ((float)rand()/RAND_MAX - 0.5f)/2.0f + 1.0f;
D3DXMatrixRotationX( &mat, D3DX_PI);
D3DXMatrixMultiply( &matRandom, &matRandom, &mat );
D3DXMatrixTranslation( &mat, d.x,d.y, d.z);
D3DXMatrixMultiply( &matRandom, &matRandom, &mat );
D3DXMatrixScaling( &mat, 1.0f, 1.0f, 1.0f);
D3DXMatrixMultiply( &matRandom, &matRandom, &mat );
float sin = sinf(rand()%50);
float cos = cosf(rand()%10);
for(int i=0; i < 6; i++)
{
D3DXVECTOR4 pos, outPos;
pos.x = vertexdata.x;
pos.y = vertexdata.y;
pos.z = vertexdata.z;
D3DXVec3Transform(&outPos,&(const struct D3DXVECTOR3pos, &(CONST D3DXMATRIX)matRandom);
Renderer->device->SetTransform(D3DTS_WORLD,&matRandom);
DWORD index = j * 6 + i;
vertexptr[index].x = outPos.x;
vertexptr[index].y = outPos.y;
vertexptr[index].z = outPos.z;
vertexptr[index].tu = vertexdata.tu;
vertexptr[index].tv = vertexdata.tv;
vertexptr[index].tu2 =sin;
vertexptr[index].tv2 =cos;
}
}m_GrassVb->Unlock();
D3DXCreateTextureFromFile(Renderer->device,texture.c_str),&m_GrassTexture);
D3DXCreateEffectFromFile(Renderer>device,"GameData/Shaders/Grass.fx",0,0,0,0,&GrassEffect,0);
return true;
};
"Ati Grass demo" Need help on Billboarding.
i need help applying billboarding on this code.i tried few ways but
i got strange results. any help appreciated. thanks all.
Help us to help you - you got "strange results"... er, right... any details? Do you get bright pink elephants dancing across your screen, your computer catch fire or just something more boring like a blank screen? Any indication on how or why you get strange results? Any hypothesis as to what might be wrong? Any reference code that you're using (e.g. ATI sample) and how is yours different from it?
Cheers,
Jack
Cheers,
Jack
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement