gpt4 book ai didi

sprite - OpenGL 3.2 Core Sprite 批处理示例?

转载 作者:行者123 更新时间:2023-12-04 21:37:38 25 4
gpt4 key购买 nike

为此,我已经焦头烂额了一段时间。我需要一种 OpenGL 3.2 核心(没有弃用的东西!)方法来使用批处理(无实例化)有效地渲染许多 Sprite 。

我见过单独使用几何体执行此操作的示例,但我的还需要向其发送纹理,我不知道如何执行此操作。

我需要一个做得很好的例子来说明它在实际工作中的作用。看看 monogame 等其他库是如何做到的并没有多大帮助,因为我感兴趣的只是 GL 代码,而且它必须没有弃用的东西。

基本上,我希望能够高效地渲染数以千计的 Sprite ,所有 Sprite 都具有纹理。纹理只是一个 spritesheet,所以我只需要告诉它渲染该 spritesheet 的一个区域。

我对可用于可编程流水线的 Material 数量感到失望。就好像说拧紧它并使用固定管道要容易得多,即使我绝对不想那样做。

是的,有没有完整的例子可以满足我的要求?或者更有知识的人可以写一篇吗? :)

很多示例都是“哦,这是渲染 1 个三角形的方式”。那太好了,除了没有人需要只渲染 1 个三角形/四边形。除此之外,它们还需要有纹理!

一个使用 VBO/VAO/EBO 的例子

另外:这意味着代码不能使用 glTexPointer 之类的东西,只能在原始 VBO/VAO 中使用...

最佳答案

我看到这个问题并决定编写一个小程序,使用点和 gl_PointSize 进行一些“ Sprite ”渲染。我不太确定您所说的“批处理”而不是“实例化”是什么意思,但我的程序使用 glDrawArraysInstanced() 调用,这样我就可以渲染多个点而无需我的 VBO 大小可变。我的代码也没有对 Sprite 进行纹理处理,但这很容易添加(使用 glUniform1i 将事件纹理索引(在调用 glTexSubImage 期间处于事件状态的索引)上传到 GLSL sampler2D)。

无论如何,这是我写的程序:http://litherum.blogspot.com/2013/02/sprites-in-opengl-programmable-pipeline.html希望你能从中吸取教训!

关于sprite - OpenGL 3.2 Core Sprite 批处理示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14268545/

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