繁体   English   中英

如何在OpenGL中绘制多个对象?

[英]How do I draw multiple objects in OpenGL?

我想绘制两个单独的对象,以便可以在绘制第二个对象时执行查询。 绘图代码如下所示:

glDrawElements(GL_TRIANGLES,...);  // draw first object

glBeginQuery(GL_SAMPLES_PASSED, queries[0]);

glDrawElements(GL_TRIANGLES,...);  // draw second object

glEndQuery(GL_SAMPLES_PASSED);

glGetQueryObjectiv(queries[0], GL_QUERY_RESULT, &result);

return restult;

大多数OpenGL教程都不会超出单个glDraw*()命令。 该站点了解到,我需要两个顶点数组对象,但是该站点没有说明如何为单独的对象设置缓冲区数据。 为了简单起见,我们只想让每个对象成为单个三角形:

Triangle1:
vertex1: -0.5, 0.0, 0.0
vertex2: -0.5, 0.5, 0.0
vertex3:  0.0, 0.0, 0.0

Triangle2:
vertex1: 0.0, 0.0, 0.0
vertex2: 0.5, 0.5, 0.0
vertex3: 0.5, 0.0, 0.0

有人可以告诉我如何设置顶点数组对象,顶点缓冲区对象和元素数组缓冲区以在C ++和OpenGL 3.2中执行此查询吗?

用于绘制几何图形的代码缺少两个基本步骤:

  1. 创建GL_ARRAY_BUFFER(glGenBuffers,glBindBuffer,glBufferData)
  2. 绘图状态机与数组缓冲区的关联(调用gl…Pointer函数)

那些允许绘制多个网格。

一些建议:

您可以绘制一组不相连的三角形,这些三角形在视觉上看起来像是两个对象。

您还可以创建两个单独的OpenGL上下文。 您要绘制的每个对象都有一个上下文。 绘制每个对象时,使关联的上下文成为“当前”上下文,并进行绘制调用。

暂无
暂无

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

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