コードは要求どおりにここにあります:
void MakeTeapotRed()
{
D3DXCreateTeapot(Device, &Teapot, 0);
}
では、ティーポットの頂点の色を変更するにはどうすればよいですか? あなたの考えている素材なら、私はすでにそれを知っています。色の頂点を知る必要があるだけです。これは、素材よりもはるかに単純なものであるはずです。Vertex Buffers と Index Buffers を使用して手動でレイアウトされたジオメトリでこれを行うことができますが、これらの VB および IB 情報が既に入力されているメッシュにこれをどのように適用しますか?
class ColorVertex
{
public:
ColorVertex(){}
ColorVertex(float x, float y, float z, D3DCOLOR color)
{
m_x = x;
m_y = y;
m_z = z;
m_color = color;
}
float m_x, m_y, m_z; // 3d coordinates
D3DCOLOR m_color;
static const DWORD FVF;
};
const DWORD ColorVertex::FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE;
今投稿したコードは、ColorVertex という Vertex 情報のクラスです。ご覧のとおり、FVF = D3DFVF_XYZ | に示すように、コードは頂点カラー、ライトを必要としない、またはライトを持ってはならないカラー用に設定されています。D3DFVF_DIFFUSE。
繰り返しになりますが、人々は問題を理解するのに苦労しているようです。D3DCreate[objects] などで作成できるティーポット、球体、メッシュなどのオブジェクトの色を含むように頂点の色を更新する必要があります。D3DCreateTeapot(引数のもの)。コードを 1 行ずつレイアウトしてください。私は C++ ではなく、directx の初心者です。