gpt4 book ai didi

c++ - OpenGL 纹理与 FBO

转载 作者:行者123 更新时间:2023-11-30 02:07:31 25 4
gpt4 key购买 nike

我是 OpenGL 的新手,只需要一些快速建议。我想为游戏绘制平铺背景。我想这意味着要在屏幕上绘制一大堆类似 sprite 的对象。我有大约 48 列到 30 行,因此有 1440 个图 block (图 block 会根据游戏而变化,所以我无法预渲染整个网格)。

目前在启动时我创建了 6 个不同的 FBO(使用来自 OpenFrameworks 的 ofFbo 类)作为 6 个不同的图 block 。然后我绘制这些缓冲区,最多绘制 1400 次,为每个图 block 选择一个。所以只有 6 个 fbos,只是被抽了很多次。 (缓冲区在启动时被绘制,并且一旦创建就永远不会改变)。

for (int x=0; x<columns; x++) {
for (int y=0; y<rows; y++) {

// Get tile type and rotation from tile struct.
tileNum = tile.form
rotNum = tile.rot

// Draw image/texture/fbo that's stored in a std vector.
tileSet->draw(x*TILESIZE, y*TILESIZE, TILESIZE, TILESIZE);

}
}

我想我正在以错误的方式解决这个问题,并且想知道是否有人有新的最佳/最佳方法来做到这一点。想想像老式 8 位视频游戏背景。这是我正在进行的工作的图片。

work in progress

背景中的结构是我正在谈论的 Sprite ,不同的部分是 inny 角、outty(凹)角、方形填充和直边。抱歉打扰了问题。

最佳答案

我不太明白你的问题。纹理是可以应用于多边形的(通常是二维的)图像,而 FBO (framebuffer object)是一种可以代替屏幕渲染到屏幕外的缓冲区,通常用于直接渲染到纹理中。因此,我看不出您的问题在哪里可能是“纹理与 FBO”,因为它们是完全正交的概念,并且在您的示例中使用 FBO 没有任何意义。也许你正在用 VBOs (vertex buffer objects) 搞砸 FBO或 PBOs (pixel buffer objects) ?但是你的问题仍然很不恰当。

编辑:如果您真的在使用 FBO,那只是因为您认为它们神奇地使它们引用的纹理存储在视频内存中,那么请放心,纹理始终存储在视频中内存和在你的情况下使用 FBO 是完全没用的。

关于c++ - OpenGL 纹理与 FBO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7783695/

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