私は次のアルゴリズムを実装しようとしています(小さな三角形にペイントするために壊れています)が、それを適切に説明するチュートリアルをネット上で見つけることができませんでした、私が見つけたもののほとんどは理論的にそれを説明し、サンプルも方法ですそれらには他の多くのものが含まれているため、理解するのが複雑です。
それがどのように行われたか、またはそのようなことを私に指摘していただければ、私は非常に感謝しています。
私は次のアルゴリズムを実装しようとしています(小さな三角形にペイントするために壊れています)が、それを適切に説明するチュートリアルをネット上で見つけることができませんでした、私が見つけたもののほとんどは理論的にそれを説明し、サンプルも方法ですそれらには他の多くのものが含まれているため、理解するのが複雑です。
それがどのように行われたか、またはそのようなことを私に指摘していただければ、私は非常に感謝しています。
コメントから、glVertexを100万回呼び出しているようです。これは、非推奨のOpenGL関数を使用していることを意味します。これが、プログラムの実行速度が非常に遅い理由である可能性があります。
昔は(私が本当に知っているわけではありませんが、私は20歳です)、フレームごとに1つずつ、一度に1つずつglVertexを使用して頂点を指定します。これはイミディエートモードと呼ばれます。これにより、フレームごとに頂点ごとに1回、頂点情報がOpenGLメモリ(通常はグラフィックカード)に渡されます。したがって、200kの頂点がある場合、あなたが言ったように、これはフレームごとに少なくとも200k回実行しています(インデックスを使用する場合は正確に200kに削減できますが、他のものを渡す必要があります)。
これらの頂点のすべてがフレームごとに変化しているとは思えません。それらの多くまたはすべてが複数のフレームにわたって同じままであるに違いありません。したがって、VBO(頂点バッファオブジェクト)と呼ばれるものにそれらを配置することができます。つまり、この頂点情報をすべてOpenGLメモリ(ここでも、gfxカードがある場合はgfxカード)に保存します。フレームごとにすべてのものを転送する必要があります。
最初は頭を包み込むのはちょっと難しいです。しかし、本質的にglVertexを100万回呼び出すことは、フレームごとに次のように言うようなものです。そして、あなたはすべてのフレームで同じことを言います。頂点バッファオブジェクトの使用は、「これはたくさんの情報です」と言ってから、フレームごとに1回言うようなものです。「しばらく前に提供した情報を覚えていますか?描画してください。」
フレームごとに情報を中継する必要がないため、これは明らかにはるかに高速です。
欠点の1つは、頂点を変更する必要がある場合、データが制御されなくなるため、少し注意が必要になることです。この場合、新しいデータを渡すのではなく、vboのコンテンツへのメモリマップを取得して変更する必要があります。または、いつでも削除して再生成できますが、これをフレームごとに実行する場合は、イミディエイトモードでvboを使用しても意味がありません。
VBOに関するコードは投稿しません。これは、この投稿が以前の4倍になるためです。私はあなたがより多くの情報を見つけるためにグーグルできる多くのキーワードをあなたに与えたと思います。主題について学ぶためだけに始めることをお勧めするいくつかの例を次に示します(個別に検索してください)。
頂点バッファオブジェクト、インデックス、固定関数パイプライン、シェーダー
私が言及したもののいずれかを実装する際に問題が発生した場合は、新しい特定の質問を開くことをお勧めします。
幸運を!