Anmeldungsdatum: Aug 2007
Beiträge: 8643
Benutzer-Bewertung:
|
Und so ähnlich gehts in D3D auch. (Ungetestet weil noch nie gemacht)
CPP Code: //1. Device vorbereiten device->SetVertexShader(nullptr); device->SetPixelShader(nullptr); device->SetTexture(0, nullptr); device->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE); device->SetRenderState(D3DRS_ZENABLE, TRUE); device->SetRenderState(D3DRS_LIGHTING, FALSE); device->SetRenderState(D3DRS_ZWRITEENABLE, TRUE); device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); device->SetRenderState(D3DRS_CLIPPING, FALSE); device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); device->SetRenderState(D3DRS_SRCBLEND , D3DBLEND_SRCALPHA); device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTA_TEXTURE); device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTA_DIFFUSE); //2. Sphere mit D3DXCreateSphere erzeugen //3. Sphere rendern void DrawMesh(ID3DXMesh *mesh, Vector position, float scale, Color color) { LPDIRECT3DVERTEXBUFFER9 temp; if (SUCCEEDED(mesh->GetVertexBuffer(&temp))) { Vertex *vertices; if (SUCCEEDED(temp->Lock(0, 0, (void**)&vertices, 0))); { auto verticesCount = mesh->GetNumVertices(); for (auto i = 0; i < verticesCount; ++i) { vertices[i].color = color; } temp->Unlock(); } temp->Release(); } D3DXMATRIX world; D3DXMATRIX scaling; D3DXMatrixTranslation(&world, position.x, position.y, position.z); D3DXMatrixScaling(&scaling, scale, scale, scale); auto transform = scaling * world; device->SetTransform(D3DTS_WORLD, &transform); mesh->DrawSubset(0); }
Wie genau du die anderen Matrizen setzen musst (Projection und View) kann ich dir grad nicht sagen und ist sicher spielabhängig.
|