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 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











1. 먼저 Kujiale에서 렌더링할 디자인 계획을 엽니다. 2. 그런 다음 렌더링 메뉴에서 평면도 렌더링을 엽니다. 3. 그런 다음 평면도 렌더링 인터페이스의 매개변수 설정에서 직교를 클릭합니다. 4. 마지막으로 모델 각도를 조정한 후 Render Now를 클릭하여 직교 평면도를 렌더링합니다.

Vue 페이지 렌더링은 비동기식입니다. Vue는 성능을 향상시킬 수 있는 비동기 렌더링을 사용합니다. 비동기 업데이트가 사용되지 않으면 성능상의 이유로 Vue는 이 데이터 업데이트 후에 뷰를 비동기적으로 업데이트합니다.

Vue 오류: v-html을 올바르게 사용하여 동적 HTML 코드를 렌더링할 수 없습니다. 어떻게 해결하나요? 소개: Vue 개발에서는 서식 있는 텍스트 콘텐츠나 동적으로 생성된 사용자 입력을 표시하기 위해 HTML 코드를 동적으로 렌더링해야 하는 경우가 많습니다. Vue는 이 기능을 구현하기 위해 v-html 지시문을 제공합니다. 그러나 때로는 v-html을 사용하여 동적 HTML 코드를 올바르게 렌더링할 수 없는 문제가 발생할 수 있습니다. 이 기사에서는 이 문제의 원인을 살펴보고 해결 방법을 제공합니다. 문제 설명: Vue에서 v를 사용할 때

Redis는 빠른 데이터 저장 및 액세스 기능을 통해 서비스 등록 및 검색 과정에서 널리 사용되는 고성능 키-값 데이터베이스입니다. 서비스 등록 및 검색은 분산 시스템에서 매우 중요한 프로세스입니다. 한 컴퓨터에서 여러 서비스를 실행할 때 클라이언트가 이러한 서비스를 검색하고 상호 작용하는 방법이 필요합니다. 완전한 분산 시스템에서는 수십 개의 서비스가 실행될 수 있으며 수동 구성이 불가능해졌습니다. 이때 서비스 등록 및 검색을 사용해야 합니다.

Vue3에서는 v-for가 목록 데이터를 렌더링하는 가장 좋은 방법으로 간주됩니다. v-for는 개발자가 배열이나 객체를 반복하고 각 항목에 대한 HTML 코드 조각을 생성할 수 있도록 하는 Vue의 지시문입니다. v-for 지시문은 개발자가 사용할 수 있는 가장 강력한 템플릿 지시문 중 하나입니다. Vue3에서는 v-for 명령이 더욱 최적화되어 사용하기 쉽고 유연해졌습니다. Vue3의 v-for 지시문의 가장 큰 변화는 요소 바인딩입니다. Vue2에서는 v-for 지시문을 사용합니다.

Vue 오류: v-html을 올바르게 사용하여 HTML 코드를 렌더링할 수 없습니다. 어떻게 해결합니까? Vue는 대화형 사용자 인터페이스를 구축하는 데 도움이 되는 인기 있는 JavaScript 프레임워크입니다. Vue에서는 v-html 지시문을 사용하여 HTML 코드를 템플릿으로 렌더링할 수 있습니다. 그러나 때때로 문제가 발생할 수 있습니다. v-html을 사용하여 HTML 코드를 올바르게 렌더링할 수 없습니다. 이 문서에서는 이 문제를 해결하는 데 도움이 되는 몇 가지 일반적인 원인과 해결 방법을 설명합니다. 첫 번째 가능한 이유는

Vue를 사용하여 이미지 그레이딩 및 렌더링 처리를 수행하는 방법은 무엇입니까? 개요 최신 웹 애플리케이션 개발에서 이미지 처리는 매우 일반적인 요구 사항입니다. 널리 사용되는 JavaScript 프레임워크인 Vue.js를 사용하면 이미지 그레이딩 및 렌더링 처리를 구현하는 것이 매우 간단하고 효율적이 됩니다. 이 기사에서는 Vue.js를 통해 이미지 그레이딩 및 렌더링 처리를 구현하는 방법과 코드 예제를 보여줍니다. 1단계: Vue 인스턴스 생성 먼저, 이미지의 데이터와 로직을 관리하기 위해 Vue 인스턴스를 생성해야 합니다. HT에서

렌더링 단계에서 다시 그리기 및 리플로우가 미치는 영향: 누가 더 중요합니까? 웹 페이지가 렌더링되면 브라우저는 페이지 콘텐츠를 표시하기 위해 특정 순서에 따라 일련의 작업을 수행합니다. 그중에서도 다시 그리기와 리플로우는 렌더링 프로세스의 두 가지 중요한 단계입니다. 이 기사에서는 다시 그리기 및 리플로우가 렌더링 단계에 미치는 영향을 살펴보고 그 중요성을 분석합니다. 다시 그리기와 리플로우의 의미와 차이점 다시 그리기와 리플로우가 렌더링에 미치는 영향을 이해하기 전에 먼저 그 의미와 차이점을 이해해 보겠습니다. Repaint는 요소의 스타일이 변경되는 것을 의미하지만 요소에는 영향을 미치지 않습니다.
