繁体   English   中英

OpenGL:在每次迭代中绘制所有场景?

[英]OpenGL: Draw all the scene in each iteration?

我用C ++编写了一些包装程序,以在OpenGL场景中绘制一些3D点。 我对OpenGL的经验不是很丰富,而且不确定是否按照预期方式进行了开发。 这或多或少是我的代码:

  • 主功能:

     std::vector<Element> elements(1); while (true) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); for (auto& element : elements) element.Draw(); ... // some other operations and buffer swapping } 
  • Element类:

     class Element { public: Element() { ... // fill m_xyz, m_rgb and m_pose } void Draw() { // translate glPushMatrix(); glRotatef(m_pose[3], m_pose[4], m_pose[5], m_pose[6]); glTranslatef(m_pose[0], m_pose[1], m_pose[2]); // draws 3D points glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glVertexPointer(3, GL_FLOAT, 0, m_xyz.data()); glColorPointer(3, GL_FLOAT, 0, m_rgb.data()); glDrawArrays(GL_POINTS, 0, m_xyz.size() / 3); glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); // retrieve previous pose glPopMatrix(); } private: std::vector<float> m_xyz, m_rgb, m_pose; }; 

我是否必须在主循环的每次迭代中调用glDrawArrays

Draw函数是否有任何代码不需要一直执行?

请问这是如何使用所有这些功能?

有更快的方法吗?

我是否必须在主循环的每次迭代中调用glDrawArrays?

是。 实际上,每次绘制单个框架时,您都要多次调用它。

Draw函数是否有任何代码不需要一直执行?

在您的代码中:不。您拥有抽奖的所有内容均在此处。

这是所有这些功能的预期用途吗?

是的,在大多数情况下。

有更快的方法吗?

慢吗? 你有资料吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM