gpt4 book ai didi

opengl-es-2.0 - 使用OpenGL ES 2.0渲染多个对象

转载 作者:行者123 更新时间:2023-12-03 08:58:07 24 4
gpt4 key购买 nike

我正在尝试学习OpenGL ES 2.0以进行一些iPhone游戏开发。我已通读了多个教程和一些OpenGL ES 2.0规范。我看到的所有示例都创建了一个网格,将其加载到顶点缓冲区中,然后进行渲染(具有预期的平移,旋转,渐变等)。

我的问题是:如何在场景中渲染具有不同网格并独立移动的多个对象?例如,如果我有汽车和摩托车,是否可以创建2个顶点缓冲区并为每个渲染调用保留两个顶点的网格数据,然后仅为每个对象的着色器发送不同的矩阵?还是我需要以某种方式平移网格,然后将它们合并为一个网格,以便可以一次性渲染它们?我正在寻找更多的高级策略/程序结构,而不是代码示例。我认为我只是对这种工作方式有错误的思维方式。

谢谢!

最佳答案

您可以为不同的对象维护单独的顶点/索引缓冲区,是的。例如,您可能有一个RenderedObject类,并且每个实例都有自己的顶点缓冲区。一个RenderedObject可能来自房屋网格的顶点,一个可能来自角色网格的顶点,等等。

在渲染期间,您可以为要使用的顶点缓冲区设置适当的变换/旋转/着色,也许类似:

void RenderedObject::render()
{
...
//set textures/shaders/transformations

glBindBuffer(GL_ARRAY_BUFFER, bufferID);
glDrawArrays(GL_TRIANGLE_STRIP, 0, vertexCount);
...
}

正如在其他答案中提到的那样,bufferID只是GLuint而不是缓冲区的全部内容。如果您需要更多有关创建顶点缓冲区并将其填充数据的详细信息,我也很乐意添加这些细节。

关于opengl-es-2.0 - 使用OpenGL ES 2.0渲染多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7218147/

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