0

プロジェクトで OpenGL に Radiosity を実装しようとしています。まず、平面 (壁を表す) を描画できる必要があります。そして、メソッドを使用して、その平面をその平面内のパッチまたは小さなクワッドに再分割できるようにします。

難しいのは、高さと幅が同じでない場合に別のプレーン (別の壁) を描画するときにそれらを描画することです。頂点が整列していないため、回避したい T 頂点が作成されます。

みたいな感じで考えていました

void drawPlaneMethod(float width, float height, int numberOfSubDivisions) {}

ただし、比率または関連するものを使用する必要がある場合があります。平面は作成後に回転できるので、Z 軸の座標は気にしません。高さと幅のサブディビジョンの数は、他の壁に比例する必要があります。

これが不可能な場合は、同じ高さと幅の平面を使用してそれを行うことができますが、高い天井になってしまうため、非現実的に見えます。そして、窓やドアを作るには、1 つの壁を表現するために多くの平面を注意深く作成する必要があります。

次に、色、ラジオシティ値などの各パッチに関する情報を保存できるようにするという別の問題に直面する必要があります。オブジェクト (パッチ) の配列を使用し、平面インデックスを表してパッチ オブジェクトにアクセスすることを考えていました。私は c++ があまり得意ではないので、どのような種類の配列も使用するのが難しいと感じています (2 次元配列が理想的だと思います)。

この問題に関する洞察はありますか?

PS: 私は glBegin(GL_QUADS) を使用しています。プロジェクトの基本を行ったら、後で VBO に変更できます。

4

1 に答える 1