OpenGL渲染纹理

问题描述:

我知道这已被问到之前(我做过搜索),但我向你保证这是一个不同的。OpenGL渲染纹理

我正在为Mac OS X Mountain Lion开发一个应用程序,但我需要添加一点点布卢姆效果。我需要将整个场景渲染为屏幕大小的纹理,缩小纹理的大小,将其传递到像素缓冲区,然后将其用作四边形的纹理。

我再次问这个,因为一些通常的技术似乎不起作用。我不能在我的片段着色器中使用#versionlayoutout,因为它们不会编译。如果我正常使用gl_FragColor,则会在应用程序后面显示随机片段,而不是我尝试渲染的场景。文档没有提到任何关于这些事情的信息。

所以,基本上,我怎样才能渲染到适当的Mac与OpenGL的实现?你需要使用扩展来做到这一点?

我使用的代码从here

+5

*“这一个是不同的”* - > *“怎样才能完成?我不能使用因为它们不起作用,我不提供任何我现有的代码的方法。“* - 嗯,真的没什么不同。 – 2013-02-12 15:28:14

+0

无关的关键字?如果你曾经尝试过,你会知道每个人都说你必须在片段着色器中使用'layout(location = 0)out vec3 color;'。 'layout'和'out'都会导致编译错误。我在问,而且我认为非常清楚,如何替换它们。 – Justin 2013-02-12 15:31:29

+2

尽管如此,这些与开花效果完全无关。当然**不**每个人都说你*有*使用'布局'。这仅仅是一个版本不兼容和一个非常基本的OpenGL问题。如果你没有OpenGL 3,那么像你一样使用'gl_FragColor'。如果这不起作用,那是因为你在做其他事情(在代码中没有显示),而不是因为bloom效果需要你使用'layout'和'out',这是垃圾。 – 2013-02-12 15:35:17

渲染到纹理最好使用FBOs完成,这让你直接渲染到纹理。如果您的硬件/驱动程序不支持OpenGL 3+,则必须通过ARB_framebuffer_object核心扩展或EXT_framebuffer_object扩展使用FBO功能。

如果FBO根本不被支持,你将不得不求助于简单的glCopyTexSubImage2D(即使只是GPU-GPU也需要一个副本),或者使用更灵活但错综复杂(并且已弃用)的PBuffers

这个tutorial on FBOs提供了一个简单的例子,用于渲染到纹理并使用此纹理进行渲染。由于这个问题缺乏关于您的方法遇到的特定问题的具体信息,因此现在需要足够的通用可渲染指示器来指向通常的渲染到纹理资源。