小编Che*_*eer的帖子

可以使用随机纹理ID吗?

而不是使用glGenTextures()获取未使用的纹理ID.我可以随机选择一个数字,例如99999并使用它吗?

当然,我会查询:

glIsTexture( m_texture )
Run Code Online (Sandbox Code Playgroud)

在继续之前确保它是假的.

这是一些背景知识:

我正在为mac开发一个图像幻灯片应用程序.预览幻灯片是完美无缺的.为了保存幻灯片,我正在渲染一个FBO.我创建了一个AGL上下文,用glGenTextures()一个帧缓冲区实例化一个纹理并渲染它.一切都很好,除了一个小问题.

在我保存幻灯片并返回主窗口后,我的所有图像缩略图都是灰色的,即纹理已被清除.

我调查了它,发现图像缩略图和我的FBO纹理在某种程度上具有相同的纹理ID.当我在幻灯片保存操作结束时删除我的FBO纹理时,缩略图纹理也会丢失.这很奇怪,因为我在保存期间有一个AGL上下文,主UI有另一个AGL上下文,可能是在后台由Core Image创建的,我无法控制.

所以我现在看到的选择是:

  1. 不删除FBO纹理.
  2. 随机选择高纹理ID,希望主UI不会使用它.

实际上我读到如果要删除AGL opengl上下文,则不一定需要删除纹理.因为删除openGL上下文会自动删除所有关联的纹理.这是真的?如果是,则选项1更有意义.

我确实意识到这里发生了一些有趣的事情,我无法解释.例如,在我将图像幻灯片保存到.mov文件后,我删除了在同一个类中创建的上下文.通过右键,它不应该影响在另一个上下文中创建的纹理.但确实如此,我真的无法解释这一点.

c++ opengl graphics

6
推荐指数
1
解决办法
380
查看次数

标签 统计

c++ ×1

graphics ×1

opengl ×1