首頁 資料庫 mysql教程 cocos2dx 离屏渲染

cocos2dx 离屏渲染

Jun 07, 2016 pm 03:32 PM
發現 天才 渲染

今天才发现 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.


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1272
29
C# 教程
1252
24
酷家樂怎麼渲染正交俯視圖_酷家樂渲染正交俯視圖教程 酷家樂怎麼渲染正交俯視圖_酷家樂渲染正交俯視圖教程 Apr 02, 2024 pm 01:10 PM

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

Vue報錯:無法正確使用v-html渲染動態HTML程式碼,怎麼解決? Vue報錯:無法正確使用v-html渲染動態HTML程式碼,怎麼解決? Aug 19, 2023 pm 12:27 PM

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

vue頁面渲染是同步還是非同步 vue頁面渲染是同步還是非同步 Dec 13, 2022 pm 07:26 PM

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

Vue報錯:無法正確使用v-html渲染HTML程式碼,怎麼解決? Vue報錯:無法正確使用v-html渲染HTML程式碼,怎麼解決? Aug 26, 2023 am 11:25 AM

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

如何利用Vue實現圖片的分級和渲染處理? 如何利用Vue實現圖片的分級和渲染處理? Aug 19, 2023 pm 07:53 PM

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

Redis在服務註冊與發現的應用 Redis在服務註冊與發現的應用 Jun 20, 2023 am 08:39 AM

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

Vue3中的v-for函數:完美解決列表資料渲染 Vue3中的v-for函數:完美解決列表資料渲染 Jun 19, 2023 am 08:04 AM

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

觸發回流和重繪:它們的重要性在哪裡? 觸發回流和重繪:它們的重要性在哪裡? Jan 26, 2024 am 08:43 AM

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

See all articles