2011-11-22 178 views
0

目前我縮小我的OpenGL ES 1.1幀緩衝區的內容是這樣的內容:縮放OpenGL ES的幀緩衝區的

  1. 保存當前幀緩衝和渲染引用
  2. 綁定framebuffer2和smallerRenderbuffer
  3. 重-render全部內容
  4. nowRenderbuffer包含 的「縮小」內容framebuffer
  5. 做小內容rRenderbuffer
  6. 重新綁定幀緩衝區和渲染

什麼是另一種方式來做到這一點?也許我可以將原始framebuffer和renderbuffer的內容複製並縮放到framebuffer2和smallerRenderbuffer中。因此避免了重新渲染步驟。我一直在尋找glScalef,但我不確定該從哪裏出發。

注意:這些都是在iOS上的OpenGL ES 1.1中完成的。

回答

1

您可以對紋理進行初始渲染,然後從該渲染渲染到要顯示的幀緩衝區和小型版本。無論你如何看待它,你試圖做的是使用已經渲染的數據作爲另一個渲染的源,因此渲染到紋理是最自然的事情。

如果您正在處理微縮版本,您可能已經熟悉渲染到紋理的語義,但爲了完整:您將創建一個幀緩衝區對象,使用glFramebufferTexture2DOES將命名紋理附加到一個合適的連接點,然後根據需要綁定幀緩衝區或紋理(確保另一個不會同時綁定,如果您想要定義的行爲)。

+0

很感謝。在我的情況下,我不想修改遊戲中的「主渲染」。我可以閱讀代碼。但是我不想修改它來渲染紋理。所以我被卡住,試圖使用主幀緩衝區和渲染緩衝區的內容。我看到兩個選擇:重新渲染到我自己的幀緩衝區和渲染緩衝區,或者以某種方式複製+縮放主幀緩衝區和渲染緩衝區中的內容。 – SundayMonday

+0

所以主渲染管理自己的幀緩衝區,你無法從外部提名目標渲染緩衝區? – Tommy

+0

這是正確的。在這個特定的場景中,我的代碼只是一個寄生蟲...複製+縮放填充在主渲染循環中的緩衝區的內容。 – SundayMonday