最新の OpenGL で 3D フラクタル ツリーを描画する方法が必要です。助言がありますか?
必ずしも完全なソース コードを必要とするわけではありません。
私がやろうとしているのは、3D ツリーを作成することです。固定機能の OpenGL では、見栄えの良い現実的なツリーを描画することはそれほど難しくありませんが、最新の OpenGL でそれを行う方法がわかりません。
ブランチごとに円柱モデルを使用し、それを使用glm
して適切な場所とサイズに変換することをお勧めします。この場合、モデルのテクスチャ座標と法線を使用できるためです。やり方がわからない。
これは、再帰を使用して固定関数 OpenGL で作成されたフラクタル 2D ツリーです。興味のある方は、ソース コード全体を送信できます。
void drawTree(int currentDepth, int maxDepth)
{
if (currentDepth > maxDepth)
return;
if (currentDepth <= maxDepth - 2)
{
glColor3d(0.45, 0.2, 0.05);
glLineWidth(10 * static_cast<GLfloat>(pow(TREE_FACTOR, currentDepth)));
}
else
{
glColor3d(0, 0.5, 0);
glLineWidth(30 * static_cast<GLfloat>(pow(TREE_FACTOR, currentDepth)));
}
double lineLen = TREE_LINE_BASE_LEN * pow(TREE_FACTOR, currentDepth);
glBegin(GL_LINES);
glVertex2d(0, 0);
glVertex2d(0, lineLen);
glEnd();
int angle1 = 10 + rand() % 40;
int angle2 = 10 + rand() % 40;
glTranslated(0, lineLen, 0);
glRotated(-angle1, 0, 0, 1);
drawTree(currentDepth + 1, maxDepth);
glRotated(angle1 + angle2, 0, 0, 1);
drawTree(currentDepth + 1, maxDepth);
glRotated(-angle2, 0, 0, 1);
glTranslated(0, -lineLen, 0);
}
VAO、VBO、およびシェーダーを使用して、最新の OpenGL でこのようなものを作成するにはどうすればよいですか?