解決了困擾一整天的紋理顏色設定的問題

2021-08-27 09:38:00 字數 933 閱讀 8942

1、用途:我把cocos2d生成的文字字形快取起來以提高效率,沒有走cclabelttf--ccsprite那套,而是直接使用cctexture2d::drawatpoint繪製到螢幕上。所以乙個紋理要直接支援顏色設定(把文字繪製成不同顏色)。

2、基本流程:

a、紋理建立的時候使用 setshaderprogram(ccshadercache::sharedshadercache()->programforkey(kccshader_positiontexturecolor)); 設定shader

b、draw的時候先開啟顏色設定 ccglenablevertexattribs( kccvertexattribflag_position | kccvertexattribflag_texcoords | kccvertexattribflag_color);

c、啟用shader

if (m_pshaderprogram)
d、把顏色值傳入: glvertexattribpointer(kccvertexattrib_color, 4, gl_unsigned_byte, gl_true, 0, colors);

可見,opengles2.0之後,萬事萬物皆shader,設定紋理顏色本質上還是通過shader來完成的。

3、最開始出現的bug: 紋理顏色不正確,並且文字毛邊很嚴重,怎麼修改shader都不對。

4、bug出現的原因: 沒有理解glvertexattribpointer第四個引數的含義,colors是clbyte型別,但是這個引數傳遞的又是gl_false,修改為gl_true後正常。

5、反思:其實可以更快的找到問題,因為生產字形的過程跟原來一模一樣,所以只要仔細比對下ccsprite的draw函式和修改後的draw函式就可以發現問題。

6、收穫:通過查bug的過程理解了shader的呼叫過程和shader的初級寫法。

堅持 第204天 學習了一整天Linux命令

右鍵桌面 run command 輸入konsole就可以進入shell的konsole了。要借用幫助文件的力量 ls help是簡短的幫助,man ls是詳細幫助,man page是最重要的,在man page裡面還可以查詢,語法是 f回車,n是下乙個,shift n是上乙個,q是退出。man p...

解決了困擾一周的問題

用了webupload,生成的是base64格式的 然後專案是.net mvc獲取這個並且存入資料庫或者存入資料夾。1.sql資料庫欄位varchar 8000 都不夠,字段改成二進位制的 2.上傳有時候進不了後台,因為我的上傳是ajax傳的 data型別是 text 原因是 public acti...

乙個Refresh()指令解決了困擾了我2天的問題

用gdi 通過資料的 配置自動生成拓撲圖,由於對c gdi 開發缺少經驗,只能嘗試各種函式的實際效果和自己之前做vc 與vb一些經驗。之前主要問題是,設定了自動繪製控制項picturebox布局和自動按照控制項間位置生成連線。其中生成自動連線的函式,利用了參考來的例子,使用 graphics g t...