有一系列坐标点xyz的值,已经存入数据库中,现在想在数据库中读出来,然后根据点的坐标,勾勒出一个形状来,发现速度很慢
代码大概如下
glBegin(GL_POINTS);
while not ADOQuery1.Eof do
begin  
  glVertex3f(ADOQuery1.FieldValues['y'],
  ADOQuery1.FieldValues['z'],
  ADOQuery1.FieldValues['x']
  );
  ADOQuery1.Next;
end;
开始的时候花的挺快,越到后面越慢,数据量大概有20万条记录的样子
还有一点,就是怎么根据这些坐标的最大值最小值确定viewport和glortho的几个参数,才能保证图像大小合适,刚刚接触opengl,时间比较近,来不及细看,请各位多多指教

解决方案 »

  1.   

    不要每次画的时候都从数据库中取,先从数据库中取得所有顶点保存起来,然后再画,当顶点有变化的时候再重新取。
    另外,使用OpenGL还可以用顶点数组或顶点缓存对象,渲染速度会更快。
      

  2.   

    opengl中有没有索引缓冲器啊,有的话把索引存到数据库就行,顶点存到磁盘文件。d3d中有个D3DXMatrixPerspectiveFovLH可以根据指定的值计算外观比例矩阵,opengl中应该也有类似函数。
      

  3.   

    测试了一下,慢的原因主要是遍历数据库比较慢,这个问题,重新开贴请教
    现在讨论一下另外一个问题,怎么根据坐标的最大最小值设置glviewport和glortho的几个参数
      

  4.   

    OpenGL有,就是Vertex buffer object.