加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – OpenGL和游戏实体

发布时间:2020-12-16 09:46:59 所属栏目:百科 来源:网络整理
导读:我一直在循环游戏实体列表并调用一个使用:glBegin / glEnd的虚拟Render fn.最近我了解到Vertex-Buffer- Arrays是最佳选择(特别是对于ios / Android). 当我在世界中创建一个新实体时,我只需将实体的VAO绑定到VBO,设置其VAO ID.因此,如果我有N个实体,我有N VA
我一直在循环游戏实体列表并调用一个使用:glBegin / glEnd的虚拟Render fn.最近我了解到Vertex-Buffer- Arrays是最佳选择(特别是对于ios / Android).

>当我在世界中创建一个新实体时,我只需将实体的VAO绑定到VBO,设置其VAO ID.因此,如果我有N个实体,我有N VAO / VBO?
>在渲染函数上我不需要重新绑定任何东西,只调用“glDrawArray / Element”?
>我可以在渲染fn中同时使用glBegin / glEnd样式的OpenGL以及VAO / VBO吗?
>似乎OpenGL讨厌OOP,但我需要OOP进行游戏编程……我该如何解决这个悖论?

解决方法

Thus if I have N entities,I have N VAO/VBO’s?

在体面的游戏引擎中,如果你有成千上万个具有相同几何形状的对象(例如,丢弃的子弹或其他东西),那么只有一个实例(VAO / VBO /无论如何)加载到游戏引擎中的几何/网格物体.该对象使用的对象和网格是两个不同的东西.多个对象可以使用相同的网格实例.

Can I use both glBegin/glEnd-style OpenGL as well as VAO/VBO’s in the render fn?

是的,尽管有些人坚持认为因为OpenGL 3/4可用,你应该避免使用glBegin / glEnd和类似的旧式函数.不过,这取决于你.

It seems that OpenGL hates OOP,but I need OOP for game programming… how do I solve this paradox?

它没有.从技术上讲,OpenGL使用的整数ID是对象,对它们起作用的函数是这些对象的方法.无论如何,将这些整数id包装到结构/类中并不困难.

另一方面,您不必使用OOP. (意见)如今“OOP”经常被滥用.如果你可以使用简单的结构/数组来解决你的问题,并且代码将是可读/易于维护的,那么就没有理由为所有事情设计完整的对象层次结构.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读