gpt4 book ai didi

c++ - 如何在 OpenGL3.2+ 中渲染多个形状和对象?

转载 作者:行者123 更新时间:2023-11-28 02:52:21 25 4
gpt4 key购买 nike

我正在遵循本指南 http://open.gl/学习如何使用现代 opengl 进行编程。我被困在一件事上。早些时候使用旧的 opengl Api,我曾经创建不同的函数来绘制不同类型的形状。像 drawRect()、drawCircle() 等。我需要做的就是在 glBegin() 和 glEnd() 中以不同的组合使用 glVertex3f()。

但在 OpenGl3.2+ 中,即使绘制一个矩形,我们也必须编写大量代码。我知道它可以让您更好地控制渲染,但是当您同时渲染多个东西(例如绘制矩形、圆形等)时,我不知道该怎么做。我是否需要多次编写所有代码(包括着色器),或者我可以重用代码。

我已经实现了这段代码http://open.gl/content/code/c2_triangle_elements.txt这个例子画了一个矩形,但是如果我想在这个矩形旁边画一个三角形,那我该怎么做。

最佳答案

您可以重用大部分代码。所有着色器都可以加载一次并通过调用 glUseProgram 重新使用。对于所有缓冲区,您可以创建一次,然后根据需要多次重复使用它们。

您可能想要创建一些类,例如 ShaderClassShapeClass

基础着色器类通常有 2 或 3 个参数,如 programvertexShaderfragmentShader(都是一些 ID)。当您扩展它们时,还会添加着色器中的所有制服和属性,以便您稍后可以使用它们来修改您的绘图(例如更改颜色)。

ShapeClass 通常包含顶点缓冲区 ID(和可选的索引缓冲区 ID)和要绘制的顶点数。

所以最后当你想要绘制一些形状时,你只需要使用你已经创建和编译的着色器,从你的形状缓冲区绑定(bind)和设置顶点数据,然后调用绘制。

关于c++ - 如何在 OpenGL3.2+ 中渲染多个形状和对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22755122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com