OpenGL渲染纹理

时间:2013-02-12 15:19:16

标签: cocoa opengl nsopenglview

我知道之前已经问过这个问题(我做了搜索),但我保证这个问题不同。

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

我再次问这个,因为一些常用的技术似乎没有起作用。我无法在片段着色器中使用#versionlayoutout,因为它们无法编译。如果我正常使用gl_FragColor,我会在我的应用程序后面的屏幕上随机显示,而不是我想要呈现的场景。文档没有说明这些事情。

所以,基本上,如何使用OpenGL的Mac实现正确渲染纹理?你需要使用扩展来做到这一点吗?

我使用here

中的代码

1 个答案:

答案 0 :(得分:1)

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

如果FBO根本不受支持,你将不得不求助于一个简单的glCopyTexSubImage2D(虽然只涉及GPU-GPU,但它涉及一个副本)或使用更灵活但更复杂(并且已弃用) )PBuffers

这个tutorial on FBOs提供了一个简单的示例,用于渲染纹理并使用此纹理进行渲染。由于这个问题缺乏关于你的方法遇到的特定问题的具体信息,那些通常的渲染到纹理资源的通用googlable指针现在就足够了。