我正在開發一個程序的一部分,其中給出了xyz座標的集合,構建了3D模型。我具備了完成此圖片所需的所有功能(即平移,旋轉,縮放),但給出的xyz座標越多,我的程序運行越慢。我的程序在處理29,000個座標時運行得非常順利,但是當我有300,000個點時,我的程序變慢了。我使用SharpGL爲了在WPF中使用OpenGL。插入所有這些問題的代碼如下:OpenGL:更多的頂點,性能更差
gl.Begin(OpenGL.GL_LINES);
for (int i = 0; i < (parser.dataSet.Count - 1); i++)
{
gl.Color(1.0f, 0.0f, 0.0f);
gl.Vertex(parser.dataSet[i].X/parser.xDiv, parser.dataSet[i].Y/parser.yDiv, parser.dataSet[i].Z);
gl.Vertex(parser.dataSet[i + 1].X/parser.xDiv, parser.dataSet[i + 1].Y/parser.yDiv, parser.dataSet[i + 1].Z);
}
gl.End();
gl.Flush();
我做得noobish(IM不熟悉的OpenGL),我可以修復?有人提到縮小我的數據,我並不完全反對,但是當我「縮放」(重新縮放)圖片時,是否有一種「縮小比例」的方法?
這會給你最直接的性能提升。我還建議專門使用頂點緩衝區對象,因爲它們不必每幀都發送到顯卡,因此比頂點陣列更爲複雜。它們有點複雜,因爲你將不得不編寫着色器來處理它們,但加速是值得的。以下是關於它們的快速教程:http://3dgep.com/?p=2596 – redsoxfantom
@redsoxfantom實際上可以使用帶固定功能管道的頂點緩衝區,使用爲屬性位置提供默認值的nVidia擴展或使用glGetPointerv – Jherico
我非常新的OpenGL和我使用夏普如此裸露與我。 @redsoxfantom我看了這個指南,我很困惑定義頂點indeces。我根本沒有真正使用三角形,我只是從一個點到另一個點畫一條線,等等。我不明白如何找到索引。 – TheBlindSpring