首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL纹理与FBO

OpenGL纹理与FBO
EN

Stack Overflow用户
提问于 2011-10-16 18:26:23
回答 2查看 1.8K关注 0票数 1

我是OpenGL的新手,只是想要一些快速的建议。我想为游戏画一个平铺的背景。我猜这意味着要在屏幕上画一大堆像精灵一样的物体。我有大约48列到30行,因此有1440个瓷砖(瓷砖会根据游戏的不同而变化,所以我不能预先渲染整个网格)。

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

代码语言:javascript
复制
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位视频游戏背景。这是我正在进行的工作的图像。

背景中的结构是我所说的精灵,不同的部分是内角,外(凹)角,正方形填充和直边。很抱歉给你的问题添乱。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-16 18:35:53

我不太明白你的问题。纹理是可以应用于多边形的(通常是2维的)图像,而FBO (framebuffer object)是一种可以渲染到屏幕而不是屏幕的屏幕外缓冲区,通常用于直接渲染到纹理中。所以我看不出你的问题可能是“纹理与FBO”,因为它们是非常正交的概念,在你的例子中使用FBO没有任何意义。也许你把FBO和VBOs (vertex buffer objects)或者PBOs (pixel buffer objects)搞乱了?但是,你的问题仍然是相当不恰当的。

EDIT:如果你真的在使用FBO,只是因为你认为它们会神奇地将它们引用的纹理存储在视频内存中,那么请放心,纹理总是存储在视频内存中,在你的情况下使用FBO是完全没有用的。

票数 4
EN

Stack Overflow用户

发布于 2011-10-16 19:09:52

对于你所做的,我建议你只使用标准的OpenGL纹理。

我想我理解你想做什么,但是FBO保留的信息比你需要的要多得多,因此渲染到你的目的地(这是一个FBO)需要更长的时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7783695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档