cocos2dx 离屏渲染
今天才发现 cocos2dx 有一个类叫做 CCRenderTexture,封装了 opengl render to texture 的 细节。 这个类的是采用 FBO ,把图像渲染到 自己新建的 frame buffer 来实现的。 如果写一个 shader ,比如让图像变成灰色,如果只给一个 CCSprite setShaderProgram()
今天才发现 cocos2dx 有一个类叫做 CCRenderTexture,封装了 opengl render to texture 的 细节。
这个类的是采用 FBO ,把图像渲染到 自己新建的 frame buffer 来实现的。
如果写一个 shader ,比如让图像变成灰色,如果只给一个 CCSprite setShaderProgram()的话,只能让单独的 Sprite 变成灰色,
但是如果想让整个游戏场景变成灰色,或者让其中一部分变成灰色,就需要使用 FBO 离屏渲染技术,把一些渲染的内容放到一个 FBO上,
然后绘制完成后,再放回到 最终的 frame buffer 中。
cocos2dx 封装了这些操作,具体用法是
1.实例化一个 CCRenderTexture* m_pRtt;
2.初始化时候,设置它的大小 m_pRtt = CCRenderTexture::create( width,height );
3.在 m_pRtt->begin() 和 m_pRtt->end() 之间,执行 opengl 绘制指令。
比如在当前场景的 update() 中,这样写:
m_pRtt->begin();
this->visit();
m_pRtt->end();
这样整个场景就绘制到了 m_pRtt 这个 RenderTexture 中
4. 如果需要给整个场景设置 shader ,则调用
m_pRtt->getSprite() ,给这个 Sprite setShaderProgram()即可。
这样,就可以实现 全屏高斯模糊 ,全屏变灰等 shader 的效果, 也可以用它实现屏幕截屏,保留上一帧图像等功能。
今天参考了这篇文章,才了解到 CCRenderTexture 的用法的
http://www.cocoachina.com/bbs/read.php?tid=237495
自己欠缺的是对 opengl FBO 真正的理解, 和对 shader 算法知识匮乏。
如果知识应用的话,利用这个方法,就可以在 cocos2dx 中写出一些漂亮的效果了。
按照自己上面说的做法,在 cocos2dx 3.0里面, 一旦给 render texture 增加自己写的 shader 后 ,出现了绘制不出来的情况。
暂时还不知道问题出在哪,初步感觉是自己写的 fragment shader 是存在错误的。。。但是还没查明错在哪里。
还是应该多去学习 opengl 底层知识才能解决这种 bug.

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

1.首先在酷家樂中開啟要渲染的設計方案。 2、然後在渲染選單下開啟俯視圖渲染。 3.接著在俯視圖渲染介面中點選參數設定中的正交。 4.最後調整好模型角度即可點選立即渲染,渲染正交俯視圖。

Vue報錯:無法正確使用v-html渲染動態HTML程式碼,怎麼解決?引言:在Vue開發中,我們常常需要動態渲染HTML程式碼,以展示富文本內容或動態產生的使用者輸入。 Vue提供了v-html指令來實現這個功能。然而,有時候我們可能會遇到無法正確使用v-html渲染動態HTML程式碼的問題。本文將探討這個問題的原因,並提供解決方案。問題描述:在Vue中,當我們使用v

vue頁面渲染是異步的。 vue採用的是非同步渲染,這樣可以提升效能;如果不採用非同步更新,在每次更新資料都會對目前元件重新渲染,為了效能考慮,Vue會在本輪資料更新後,再去異步更新視圖。

Vue報錯:無法正確使用v-html渲染HTML程式碼,怎麼解決? Vue是一款流行的JavaScript框架,可以幫助我們建立互動式的使用者介面。在Vue中,我們可以使用v-html指令將HTML程式碼渲染到模板中。然而,有時我們可能會遇到一個問題:無法正確使用v-html渲染HTML程式碼。本文將介紹一些常見原因和解決方法,幫助您解決這個問題。第一種可能的原因是未

如何利用Vue實現圖片的分級和渲染處理?概述在現代web應用的開發中,圖片的處理是一個非常常見的需求。而利用Vue.js,一個流行的JavaScript框架,實現圖片的分級和渲染處理變得非常簡單和有效率。本文將展示如何透過Vue.js來實現圖片的分級和渲染處理,並附帶程式碼範例。步驟一:建立Vue實例首先,我們需要建立一個Vue實例來管理圖片的資料和邏輯。在HT

Redis是一種高效能的鍵值資料庫,透過其快速的資料儲存和存取能力,它在服務註冊與發現的過程中廣泛應用。服務註冊與發現是分散式系統中十分重要的過程。當我們在一個機器上執行多個服務時,我們需要一個方法來讓客戶端發現這些服務以及如何與它們互動。在一個完整的分散式系統中,可能運行著數十個服務,而手動配置已經變得不可行。這時,我們就需要使用服務註冊與發現。

在Vue3中,v-for被視為渲染清單資料的最佳方式。 v-for是Vue中的一個指令,它允許開發者遍歷一個陣列或對象,並為每個項目產生一段HTML程式碼。 v-for指令是開發者可以使用的最強大的範本指令之一。在Vue3中,v-for指令得到了進一步的最佳化,使用更加簡單,更加靈活。 Vue3中的v-for指令最大的變化是元素的綁定。在Vue2中,使用v-for指令

回流和重繪:為什麼它們重要?隨著網路的發展,越來越多的人開始在網路上瀏覽網頁、使用行動應用程式。對於開發者而言,如何提高網頁和應用程式的效能成為重要的主題之一。在優化這些應用過程中,回流和重繪是兩個必須重點關注的面向。本文將詳細介紹回流和重繪的概念,以及為什麼它們對於效能最佳化如此重要。回流和重繪是瀏覽器渲染引擎進行頁面顯示的關鍵步驟。回流指的是當渲染引擎發
